{
  "results": [
    {
      "test": "/xhr/formdata.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Constructors",
          "status": "FAIL",
          "message": "assert_throws: function \"() => { new FormData(null); }\" did not throw"
        },
        {
          "name": "empty formdata",
          "status": "PASS",
          "message": null
        },
        {
          "name": "formdata with string",
          "status": "PASS",
          "message": null
        },
        {
          "name": "formdata with named string",
          "status": "PASS",
          "message": null
        },
        {
          "name": "formdata from form",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/template-element.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: template element parsing",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: template element parsing 1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: template element parsing 2",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-post-with-non-cors-safelisted-content-type.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Same-origin request with non-safelisted content type succeeds",
          "status": "PASS",
          "message": null
        },
        {
          "name": "CORS request with non-safelisted content type sends preflight and fails",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/response-method.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "GET",
          "status": "PASS",
          "message": null
        },
        {
          "name": "HEAD",
          "status": "PASS",
          "message": null
        },
        {
          "name": "POST",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/idlharness.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "idl_test setup",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: existence and properties of interface object",
          "status": "FAIL",
          "message": "assert_equals: prototype of XMLHttpRequestEventTarget is not EventTarget expected function \"function EventTarget() { [native code] }\" but got function \"function() {\n    [native code]\n}\""
        },
        {
          "name": "XMLHttpRequestEventTarget interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: attribute onloadstart",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get onloadstart' expected \"get onloadstart\" but got \"onloadstart\""
        },
        {
          "name": "XMLHttpRequestEventTarget interface: attribute onprogress",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get onprogress' expected \"get onprogress\" but got \"onprogress\""
        },
        {
          "name": "XMLHttpRequestEventTarget interface: attribute onabort",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get onabort' expected \"get onabort\" but got \"onabort\""
        },
        {
          "name": "XMLHttpRequestEventTarget interface: attribute onerror",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get onerror' expected \"get onerror\" but got \"onerror\""
        },
        {
          "name": "XMLHttpRequestEventTarget interface: attribute onload",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get onload' expected \"get onload\" but got \"onload\""
        },
        {
          "name": "XMLHttpRequestEventTarget interface: attribute ontimeout",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get ontimeout' expected \"get ontimeout\" but got \"ontimeout\""
        },
        {
          "name": "XMLHttpRequestEventTarget interface: attribute onloadend",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get onloadend' expected \"get onloadend\" but got \"onloadend\""
        },
        {
          "name": "XMLHttpRequestUpload interface: existence and properties of interface object",
          "status": "FAIL",
          "message": "assert_equals: prototype of XMLHttpRequestUpload is not XMLHttpRequestEventTarget expected function \"function XMLHttpRequestEventTarget() { [native code] }\" but got function \"function() {\n    [native code]\n}\""
        },
        {
          "name": "XMLHttpRequestUpload interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestUpload interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestUpload interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestUpload interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestUpload interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestUpload must be primary interface of (new XMLHttpRequest()).upload",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of (new XMLHttpRequest()).upload",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onloadstart\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onprogress\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onabort\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onerror\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onload\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"ontimeout\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onloadend\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: existence and properties of interface object",
          "status": "FAIL",
          "message": "assert_equals: prototype of XMLHttpRequest is not XMLHttpRequestEventTarget expected function \"function XMLHttpRequestEventTarget() { [native code] }\" but got function \"function() {\n    [native code]\n}\""
        },
        {
          "name": "XMLHttpRequest interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: attribute onreadystatechange",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get onreadystatechange' expected \"get onreadystatechange\" but got \"onreadystatechange\""
        },
        {
          "name": "XMLHttpRequest interface: constant UNSENT on interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: constant UNSENT on interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: constant OPENED on interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: constant OPENED on interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: constant HEADERS_RECEIVED on interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: constant HEADERS_RECEIVED on interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: constant LOADING on interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: constant LOADING on interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: constant DONE on interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: constant DONE on interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: attribute readyState",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get readyState' expected \"get readyState\" but got \"readyState\""
        },
        {
          "name": "XMLHttpRequest interface: operation open(ByteString, USVString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: operation open(ByteString, USVString, boolean, USVString, USVString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: operation setRequestHeader(ByteString, ByteString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: attribute timeout",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get timeout' expected \"get timeout\" but got \"timeout\""
        },
        {
          "name": "XMLHttpRequest interface: attribute withCredentials",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get withCredentials' expected \"get withCredentials\" but got \"withCredentials\""
        },
        {
          "name": "XMLHttpRequest interface: attribute upload",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get upload' expected \"get upload\" but got \"upload\""
        },
        {
          "name": "XMLHttpRequest interface: operation send([object Object],[object Object])",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: operation abort()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: attribute responseURL",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get responseURL' expected \"get responseURL\" but got \"responseURL\""
        },
        {
          "name": "XMLHttpRequest interface: attribute status",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get status' expected \"get status\" but got \"status\""
        },
        {
          "name": "XMLHttpRequest interface: attribute statusText",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get statusText' expected \"get statusText\" but got \"statusText\""
        },
        {
          "name": "XMLHttpRequest interface: operation getResponseHeader(ByteString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: operation getAllResponseHeaders()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: operation overrideMimeType(DOMString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: attribute responseType",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get responseType' expected \"get responseType\" but got \"responseType\""
        },
        {
          "name": "XMLHttpRequest interface: attribute response",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get response' expected \"get response\" but got \"response\""
        },
        {
          "name": "XMLHttpRequest interface: attribute responseText",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get responseText' expected \"get responseText\" but got \"responseText\""
        },
        {
          "name": "XMLHttpRequest interface: attribute responseXML",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get responseXML' expected \"get responseXML\" but got \"responseXML\""
        },
        {
          "name": "XMLHttpRequest must be primary interface of new XMLHttpRequest()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new XMLHttpRequest()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"onreadystatechange\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"UNSENT\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"OPENED\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"HEADERS_RECEIVED\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"LOADING\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"DONE\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"readyState\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"open(ByteString, USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: calling open(ByteString, USVString) on new XMLHttpRequest() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"open(ByteString, USVString, boolean, USVString, USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: calling open(ByteString, USVString, boolean, USVString, USVString) on new XMLHttpRequest() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"setRequestHeader(ByteString, ByteString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: calling setRequestHeader(ByteString, ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"timeout\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"withCredentials\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"upload\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"send([object Object],[object Object])\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: calling send([object Object],[object Object]) on new XMLHttpRequest() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"abort()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseURL\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"status\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"statusText\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"getResponseHeader(ByteString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: calling getResponseHeader(ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"getAllResponseHeaders()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"overrideMimeType(DOMString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: calling overrideMimeType(DOMString) on new XMLHttpRequest() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseType\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"response\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseText\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseXML\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onloadstart\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onprogress\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onabort\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onerror\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onload\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"ontimeout\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onloadend\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation append(USVString, USVString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation append(USVString, Blob, USVString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation delete(USVString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation get(USVString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation getAll(USVString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation has(USVString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation set(USVString, USVString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation set(USVString, Blob, USVString)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Testing Symbol.iterator property of iterable interface FormData",
          "status": "FAIL",
          "message": "assert_equals: @@iterator function does not have the right name expected (string) \"entries\" but got (undefined) undefined"
        },
        {
          "name": "Testing pair iterable interface FormData",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation entries()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation keys()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation values()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: operation forEach(function, any)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData must be primary interface of new FormData()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new FormData()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"append(USVString, USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling append(USVString, USVString) on new FormData() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"append(USVString, Blob, USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling append(USVString, Blob, USVString) on new FormData() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"delete(USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling delete(USVString) on new FormData() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"get(USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling get(USVString) on new FormData() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"getAll(USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling getAll(USVString) on new FormData() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"has(USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling has(USVString) on new FormData() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"set(USVString, USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling set(USVString, USVString) on new FormData() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"set(USVString, Blob, USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling set(USVString, Blob, USVString) on new FormData() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"entries()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"keys()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"values()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData() must inherit property \"forEach(function, any)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling forEach(function, any) on new FormData() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData must be primary interface of new FormData(form)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new FormData(form)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"append(USVString, USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling append(USVString, USVString) on new FormData(form) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"append(USVString, Blob, USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling append(USVString, Blob, USVString) on new FormData(form) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"delete(USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling delete(USVString) on new FormData(form) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"get(USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling get(USVString) on new FormData(form) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"getAll(USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling getAll(USVString) on new FormData(form) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"has(USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling has(USVString) on new FormData(form) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"set(USVString, USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling set(USVString, USVString) on new FormData(form) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"set(USVString, Blob, USVString)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling set(USVString, Blob, USVString) on new FormData(form) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"entries()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"keys()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"values()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: new FormData(form) must inherit property \"forEach(function, any)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData interface: calling forEach(function, any) on new FormData(form) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ProgressEvent interface: existence and properties of interface object",
          "status": "FAIL",
          "message": "assert_equals: prototype of ProgressEvent is not Event expected function \"function Event() { [native code] }\" but got function \"function() {\n    [native code]\n}\""
        },
        {
          "name": "ProgressEvent interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ProgressEvent interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ProgressEvent interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ProgressEvent interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ProgressEvent interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ProgressEvent interface: attribute lengthComputable",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get lengthComputable' expected \"get lengthComputable\" but got \"lengthComputable\""
        },
        {
          "name": "ProgressEvent interface: attribute loaded",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get loaded' expected \"get loaded\" but got \"loaded\""
        },
        {
          "name": "ProgressEvent interface: attribute total",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get total' expected \"get total\" but got \"total\""
        },
        {
          "name": "ProgressEvent must be primary interface of new ProgressEvent(\"type\")",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new ProgressEvent(\"type\")",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"lengthComputable\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"loaded\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"total\" with the proper type",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-after-stop.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort event should fire when stop() method is used",
          "status": "FAIL",
          "message": "assert_equals: expected true but got false"
        }
      ]
    },
    {
      "test": "/xhr/progressevent-constructor.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Default event values.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "There must not be a initProgressEvent().",
          "status": "FAIL",
          "message": "assert_equals: expected (undefined) undefined but got (function) function \"function initProgressEvent() { [native code] }\""
        },
        {
          "name": "Basic test.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ECMAScript value conversion test.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ProgressEventInit members must be matched case-sensitively.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-combining.window.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "setRequestHeader() combining header values",
          "status": "FAIL",
          "message": "assert_equals: expected \"test-me: , , , , x\\tx, \\n\" but got \"test-me: x\\tx,\\n\""
        }
      ]
    },
    {
      "test": "/xhr/responseurl.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "404 response has proper responseURL",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Redirected response has proper responseURL",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-allow-preflight-cache-timeout.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Preflight cache should be invalidated on timeout",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-header-forbidden.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that are forbidden",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-aborted.html?aborted immediately after send()",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/open-url-multi-window-5.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() resolving URLs (multi-Window; 5)",
          "status": "FAIL",
          "message": "assert_throws: function \"function () { client.open(\"GET\", \"...\") }\" threw object \"TypeError: Permission denied\" that is not a DOMException InvalidStateError: property \"code\" is equal to undefined, expected 11"
        }
      ]
    },
    {
      "test": "/xhr/overridemimetype-blob.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Use text/xml as fallback MIME type",
          "status": "FAIL",
          "message": "assert_equals: expected \"text/xml\" but got \"\""
        },
        {
          "name": "Use text/xml as fallback MIME type, 2",
          "status": "FAIL",
          "message": "assert_equals: expected \"text/xml\" but got \"\""
        },
        {
          "name": "Loading data…",
          "status": "FAIL",
          "message": "promise_test: Unhandled rejection with value: object \"TypeError: Object doesn't support property or method 'forEach'\""
        }
      ]
    },
    {
      "test": "/xhr/event-timeout.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: timeout event",
          "status": "FAIL",
          "message": "assert_unreached: ontimeout not called. Reached unreachable code"
        }
      ]
    },
    {
      "test": "/xhr/responsexml-get-twice.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Getting response, then response",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Getting responseXML, then responseXML",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Getting responseXML, then response",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Getting response, then responseXML",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-accept-language.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Send \"sensible\" default value, whatever that means",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Accept-Language",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-request-invalid-status-400.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Request with 400 preflight response",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-usp.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Overall fetch with URLSearchParams",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (0)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (1)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (2)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (3)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (4)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (5)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (6)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (7)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (8)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (9)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (10)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (11)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (12)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (13)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (14)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (15)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (16)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (17)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (18)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (19)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (20)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (21)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (22)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (23)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (24)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (25)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (26)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (27)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (28)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (29)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (30)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (31)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (32)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (33)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (34)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (35)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (36)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (37)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (38)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (39)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (40)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (41)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (42)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (43)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (44)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (45)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (46)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (47)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (48)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (49)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (50)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (51)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (52)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (53)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (54)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (55)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (56)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (57)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (58)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (59)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (60)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (61)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (62)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (63)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (64)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (65)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (66)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (67)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (68)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (69)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (70)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (71)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (72)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (73)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (74)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (75)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (76)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (77)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (78)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (79)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (80)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (81)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (82)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (83)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (84)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (85)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (86)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (87)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (88)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (89)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (90)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (91)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (92)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (93)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (94)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (95)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (96)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (97)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (98)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (99)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (100)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (101)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (102)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (103)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (104)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (105)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (106)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (107)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (108)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (109)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (110)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (111)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (112)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (113)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (114)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (115)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (116)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (117)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (118)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (119)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (120)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (121)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (122)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (123)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (124)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (125)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (126)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest.send(URLSearchParams) (127)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-credential-async.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "CORS async request with URL credentials",
          "status": "FAIL",
          "message": "assert_equals: Request raises HTTP 401: Unauthorized error. expected 401 but got 200"
        }
      ]
    },
    {
      "test": "/xhr/getallresponseheaders-status.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: getAllResponseHeaders() excludes status",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/response-json.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "json response with no data: response property is null",
          "status": "PASS",
          "message": null
        },
        {
          "name": "json response with malformed data: response property is null",
          "status": "PASS",
          "message": null
        },
        {
          "name": "JSON object roundtrip",
          "status": "FAIL",
          "message": "assert_equals: Response should be cached expected object \"[object Object]\" but got object \"[object Object]\""
        },
        {
          "name": "JSON roundtrip with Japanese text",
          "status": "FAIL",
          "message": "assert_equals: Response should be cached expected object \"[object Object]\" but got object \"[object Object]\""
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-bogus-value.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: setRequestHeader() value argument checks",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() value argument checks 1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() value argument checks 2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() value argument checks 3",
          "status": "FAIL",
          "message": "assert_throws:  given value ﾃｽﾄ, function \"function () { client.setRequestHeader(\"x-test\", \"ﾃｽﾄ\") }\" did not throw"
        },
        {
          "name": "Omitted value argument",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-parameters-toString.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() attempts to toString its string parameters",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/overridemimetype-open-state-force-utf-8.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: overrideMimeType() in open state, enforcing UTF-8 encoding",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/getallresponseheaders-cookies.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: getAllResponseHeaders() excludes cookies",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-sandboxed-iframe-denied.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Check that path exists and is accessible via local XHR request",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Sandboxed iframe is denied access to path",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-data-readablestream.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() with a stream on which getReader() is called",
          "status": "FAIL",
          "message": "Function expected"
        },
        {
          "name": "XMLHttpRequest: send() with a stream on which read() is called",
          "status": "FAIL",
          "message": "Function expected"
        },
        {
          "name": "XMLHttpRequest: send() with a stream on which read() and releaseLock() are called",
          "status": "FAIL",
          "message": "promise_test: Unhandled rejection with value: object \"TypeError: Function expected\""
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-request-header-lowercase.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Request with uppercase header set",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-before-open.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "setRequestHeader invoked before open()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/xmlhttprequest-sync-not-hang-scriptloader.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Ensure that an async script added during a defer script that then does a\n  sync XHR still runs",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-send.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - send()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-event-order.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The abort() method: abort and loadend events",
          "status": "FAIL",
          "message": "assert_equals: expected \"upload.abort(0,0,false)\" but got \"upload.abort(0,0,true)\""
        }
      ]
    },
    {
      "test": "/xhr/progressevent-interface.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "The ProgressEvent interface",
          "status": "PASS",
          "message": null
        },
        {
          "name": "interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "The ProgressEvent interface 1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "The ProgressEvent interface 2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "The ProgressEvent interface 3",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Interface objects properties should not be Enumerable",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Should be able to delete ProgressEvent.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-entity-body-empty.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send(\"\") - empty entity body (POST)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send(\"\") - empty entity body (PUT)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send(\"\") - empty entity body (HEAD)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-authentication-basic-repeat-no-args.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - \"Basic\" authenticated requests with user name and password passed to open() in first request, without in second",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-allow.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Allow basic",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-event-loadend.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The abort() method: Fire a progress event named loadend",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-conditional.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - conditional requests (tag)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - conditional requests (date)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-during-unsent.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort() during UNSENT",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-no-response-event-order.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: event order when there is no response entity body",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-allow-preflight-cache-invalidation-by-method.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Preflight cache should be invalidated by changed method",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-encoding.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "percent encode characters",
          "status": "PASS",
          "message": null
        },
        {
          "name": "lone surrogate",
          "status": "FAIL",
          "message": "assert_equals: expected \"%26%2365533%3B\" but got \"?\""
        }
      ]
    },
    {
      "test": "/xhr/XMLHttpRequest-withCredentials.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "default value is false, set value is true",
          "status": "PASS",
          "message": null
        },
        {
          "name": "can also be set in OPEN state",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setting on synchronous XHR",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setting withCredentials when not in UNSENT, OPENED state (asynchronous)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setting withCredentials when in DONE state (synchronous)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/formdata-blob.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "formdata with blob",
          "status": "PASS",
          "message": null
        },
        {
          "name": "formdata with named blob",
          "status": "PASS",
          "message": null
        },
        {
          "name": "formdata.append() should throw if value is string and file name is given",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-redirect-to-non-cors.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - Redirect to cross-origin resource, not CORS-enabled (301)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to cross-origin resource, not CORS-enabled (302)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to cross-origin resource, not CORS-enabled (303)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to cross-origin resource, not CORS-enabled (307)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-after-setrequestheader.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() after setRequestHeader()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-during-abort-event.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() during abort event - abort() called from upload.onloadstart",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-open-send.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() - open() - send()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/overridemimetype-loading-state.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: overrideMimeType() in LOADING state",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-data-formdata.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: FormData data",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/getresponseheader-case-insensitive.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: getResponseHeader() case-insensitive matching",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-worker-aborted.html?aborted immediately after send()",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-headers-sync.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Preflighted sync request with custom header",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-cors-safelisted-request-headers.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Request with CORS-safelisted headers",
          "status": "FAIL",
          "message": "NetworkError"
        }
      ]
    },
    {
      "test": "/xhr/response-data-blob.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The response attribute: Blob data",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-overridesexpires.html?timeout set to expired value before load fires",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/open-method-case-insensitive.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() - case-insensitive methods test (DELETE)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-insensitive methods test (GET)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-insensitive methods test (HEAD)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-insensitive methods test (OPTIONS)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-insensitive methods test (POST)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-insensitive methods test (PUT)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/xmlhttprequest-network-error.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: members during network errors",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-send-during-abort.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() during abort()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-authentication-basic-setrequestheader-and-arguments.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - \"Basic\" authenticated request using setRequestHeader() and open() arguments (asserts header wins)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/getresponseheader-cookies-and-more.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: getResponseHeader() custom/non-existent headers and cookies",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-abortedonmain.html?abort() from a 0ms timeout",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/open-url-base.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() resolving URLs - <base>",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/responsedocument-decoding.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: response document decoding (application/xml %3C%3Fxml%20version%3D'1.0'%20encoding%3D'windows-1252'%3F%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: response document decoding (application/xml;charset=utf-8 %3C%3Fxml%20version%3D'1.0'%20encoding%3D'windows-1252'%3F%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: response document decoding (application/xml;charset=windows-1252 %3C%3Fxml%20version%3D'1.0'%20encoding%3D'windows-1252'%3F%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: response document decoding (text/html %3C!doctype%20html%3E%3Cmeta%20charset%3Dwindows-1252%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: response document decoding (text/html;charset=utf-8 %3C!doctype%20html%3E%3Cmeta%20charset%3Dwindows-1252%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: response document decoding (text/html;charset=windows-1252 %3C!doctype%20html%3E%3Cmeta%20charset%3Dwindows-1252%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-network-error-sync-events.sub.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "http URL",
          "status": "PASS",
          "message": null
        },
        {
          "name": "data URL",
          "status": "FAIL",
          "message": "assert_throws: function \"function ()\n            {\n                xhr.send(\"Test Message\");\n            }\" did not throw"
        }
      ]
    },
    {
      "test": "/xhr/open-url-multi-window.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() resolving URLs (multi-Window; 1)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-authentication-cors-basic-setrequestheader.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - \"Basic\" authenticated CORS request using setRequestHeader() (expects to succeed)",
          "status": "FAIL",
          "message": "assert_equals: responseText should contain the right user and password expected \"fee09f74-6ce8-4589-b34e-afdf416d9254\\npass\" but got \"fooUser\\nbarPass\""
        }
      ]
    },
    {
      "test": "/xhr/send-no-response-event-loadstart.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Fire a progress event named loadstart (no response entity body and the state is LOADING)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-sync-not-supported.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Sync PUT request denied at preflight",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-fragment.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() resolving URLs - fragment identifier",
          "status": "PASS",
          "message": null
        },
        {
          "name": "make sure fragment is removed from URL before request",
          "status": "PASS",
          "message": null
        },
        {
          "name": "make sure fragment is removed from URL before request (with query string)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "make sure escaped # is not removed",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-redirect-no-location.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - Redirects (no Location header) (301)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (no Location header) (302)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (no Location header) (303)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (no Location header) (307)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-allow-non-cors-safelisted-method-async.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Allow async PUT request",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-after-timeout.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort() after a timeout should not fire \"abort\" event",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-after-setting-document-domain.htm",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "name": "All tests ran",
          "status": "TIMEOUT",
          "message": "Test timed out"
        }
      ]
    },
    {
      "test": "/xhr/firing-events-http-no-content-length.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "ProgressEvent: firing events for HTTP with no Content-Length",
          "status": "FAIL",
          "message": "assert_false: lengthComputable expected false got true"
        }
      ]
    },
    {
      "test": "/xhr/abort-upload-event-loadend.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The abort() method: Fire a progress event named loadend on the XMLHttpRequestUpload object",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-data-es-object.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "sending a plain empty object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "sending the ES Math object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "sending a new XHR instance",
          "status": "PASS",
          "message": null
        },
        {
          "name": "sending object that stringifies to undefined",
          "status": "PASS",
          "message": null
        },
        {
          "name": "sending object that stringifies to null",
          "status": "PASS",
          "message": null
        },
        {
          "name": "object that stringifies to query string",
          "status": "PASS",
          "message": null
        },
        {
          "name": "object that stringifies to JSON string",
          "status": "PASS",
          "message": null
        },
        {
          "name": "object whose valueOf() returns a document - ignore valueOf(), stringify",
          "status": "PASS",
          "message": null
        },
        {
          "name": "object whose toString() returns a document, expected to throw",
          "status": "PASS",
          "message": null
        },
        {
          "name": "object whose toString() throws, expected to throw",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-method-case-sensitive.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() - case-sensitive methods test (XUNICORN)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-sensitive methods test (xUNIcorn)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-sensitive methods test (chiCKEN)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-sensitive methods test (PATCH)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-sensitive methods test (patCH)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-sensitive methods test (copy)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-sensitive methods test (COpy)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-sensitive methods test (inDEX)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - case-sensitive methods test (movE)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-response-upload-event-loadstart.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Fire a progress event named loadstart on the XMLHttpRequestUpload (synchronous flag is unset)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-worker-simple.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: relative URLs in worker scripts resolved by script URL",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/status-async.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: status/statusText - various responses 1 (GET 204)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 2 (HEAD 204)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 3 (CHICKEN 204)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 4 (GET 401)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 5 (HEAD 401)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 6 (CHICKEN 401)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 7 (GET 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 8 (HEAD 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 9 (CHICKEN 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 10 (GET 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 11 (HEAD 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 12 (CHICKEN 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 13 (GET 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 14 (HEAD 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 15 (CHICKEN 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 16 (GET 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 17 (HEAD 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 18 (CHICKEN 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 19 (GET 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 20 (HEAD 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 21 (CHICKEN 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 22 (GET 503)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 23 (HEAD 503)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 24 (CHICKEN 503)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 25 (GET 699)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 26 (HEAD 699)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 27 (CHICKEN 699)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-multi-window-3.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() resolving URLs (multi-Window; 3; evil)",
          "status": "FAIL",
          "message": "assert_throws: send() when associated document's IFRAME is removed function \"function () {\n            client.send(null)\n          }\" did not throw"
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-worker-twice.html?load fires normally with no timeout set, twice",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-sync-header-denied.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Sync request denied at preflight",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-during-open.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort() during OPEN",
          "status": "FAIL",
          "message": "assert_equals: after abort() expected 1 but got 0"
        }
      ]
    },
    {
      "test": "/xhr/abort-after-receive.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort() after successful receive should not fire \"abort\" event",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/timeout-cors-async.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: timeout event and cross-origin request",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-authentication-basic-setrequestheader-existing-session.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - \"Basic\" authenticated request using setRequestHeader() when there is an existing session",
          "status": "FAIL",
          "message": "assert_equals: expected \"23873331-f243-402b-89d4-475ac073efc4\\npass\" but got \"97e31d92-a5e5-48a6-9eb5-2867f0c3d05f\\nopen-pass\""
        }
      ]
    },
    {
      "test": "/xhr/close-worker-with-xhr-in-progress.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Terminating a worker with a XHR in progress doesn't crash",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-allow-access-control-origin-header-data-url.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Access granted to null-origin iframe",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/responsexml-non-well-formed.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: responseXML non well-formed tests",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML non well-formed tests 1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML non well-formed tests 2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML non well-formed tests 3",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML non well-formed tests 4",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML non well-formed tests 5",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML non well-formed tests 6",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/responseType-document-in-worker.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Setting XMLHttpRequest responseType to 'document' in a worker should have no effect.",
          "status": "FAIL",
          "message": "assert_not_equals: got disallowed value \"document\""
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-allow-non-cors-safelisted-method.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Allow PUT request",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-upload-event-abort.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The abort() method: Fire a progress event named abort on the XMLHttpRequestUpload object",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-and-redirects-async.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Request is redirected without CORS headers to a response with Access-Control-Allow-Origin=*",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Request is redirected to a response with Access-Control-Allow-Origin=*",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Request with user info is redirected to a response with Access-Control-Allow-Origin=*",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Request is redirect to a bad URL",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Preflighted request is redirected to a response with Access-Control-Allow-Origin=*",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Preflighted request is redirected to a response with Access-Control-Allow-Origin=* and header allowed",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Request is redirected to a same-origin resource file",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-data-arraybufferview.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: ArrayBufferView data",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-blob-with-no-mime-type.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Synchronous blob loading with no mime type [POST]",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Asynchronous blob loading with no mime type [POST]",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Synchronous blob loading with no mime type [PUT]",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Asynchronous blob loading with no mime type [PUT]",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Synchronous blob loading with invalid mime type [POST]",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Asynchronous blob loading with invalid mime type [POST]",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Synchronous blob loading with invalid mime type [PUT]",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Asynchronous blob loading with invalid mime type [PUT]",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/event-load.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Fire an event named load (synchronous flag is unset)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/xmlhttprequest-eventtarget.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: implements EventTarget",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/xmlhttprequest-timeout-reused.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XHR2 Timeout Property Tests",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-response-upload-event-loadend.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Fire a progress event named loadend on the XMLHttpRequestUpload (synchronous flag is unset)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-and-redirects.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Local sync redirect to remote origin",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Local async redirect to remote origin",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Remote sync redirect to local origin",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Remote async redirect to local origin",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Remote sync redirect to same remote origin",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Remote async redirect to same remote origin",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-response-with-body-sync.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Tests body from CORS preflight response and actual response with sync request",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/timeout-multiple-fetches.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Redirects should not reset the timer",
          "status": "PASS",
          "message": null
        },
        {
          "name": "CORS preflights should not reset the timer",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/event-upload-progress.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Upload events registered on time (http://www1.webapitests2018.ctawave.org:8000/xhr/resources/corsenabled.py)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Upload events registered on time (resources/redirect.py?code=307&location=http://www1.webapitests2018.ctawave.org:8000/xhr/resources/corsenabled.py)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Upload events registered too late (http://www1.webapitests2018.ctawave.org:8000/xhr/resources/corsenabled.py)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Upload events registered too late (resources/redirect.py?code=307&location=http://www1.webapitests2018.ctawave.org:8000/xhr/resources/corsenabled.py)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/responsexml-document-properties.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "domain",
          "status": "FAIL",
          "message": "assert_equals: expected (undefined) undefined but got (string) \"webapitests2018.ctawave.org\""
        },
        {
          "name": "URL",
          "status": "FAIL",
          "message": "assert_equals: expected \"http://webapitests2018.ctawave.org:8000/xhr/resources/well-formed.xml\" but got \"about:blank\""
        },
        {
          "name": "documentURI",
          "status": "FAIL",
          "message": "assert_equals: expected \"http://webapitests2018.ctawave.org:8000/xhr/resources/well-formed.xml\" but got \"about:blank\""
        },
        {
          "name": "baseURI",
          "status": "FAIL",
          "message": "assert_equals: expected \"http://webapitests2018.ctawave.org:8000/xhr/resources/well-formed.xml\" but got \"http://webapitests2018.ctawave.org:8000/xhr/responsexml-document-properties.htm?&token=b2924d20-6a93-11e9-98b4-a11fb92a6d1c&timeout=65000\""
        },
        {
          "name": "referrer",
          "status": "PASS",
          "message": null
        },
        {
          "name": "title",
          "status": "PASS",
          "message": null
        },
        {
          "name": "contentType",
          "status": "PASS",
          "message": null
        },
        {
          "name": "readyState",
          "status": "PASS",
          "message": null
        },
        {
          "name": "location",
          "status": "PASS",
          "message": null
        },
        {
          "name": "defaultView",
          "status": "PASS",
          "message": null
        },
        {
          "name": "body",
          "status": "PASS",
          "message": null
        },
        {
          "name": "doctype",
          "status": "PASS",
          "message": null
        },
        {
          "name": "all",
          "status": "FAIL",
          "message": "assert_equals: expected undefined but got [object HTMLAllCollection]"
        },
        {
          "name": "cookie",
          "status": "FAIL",
          "message": "assert_equals: expected \"\" but got \"vary-value-override=x-shape; mode=normal; ws_test_1556633221738.0.9349055700700461=test\""
        },
        {
          "name": "Test document URL properties after redirect",
          "status": "FAIL",
          "message": "assert_equals: expected \"http://webapitests2018.ctawave.org:8000/xhr/resources/well-formed.xml\" but got \"about:blank\""
        },
        {
          "name": "Test document URL properties of document with <base> after redirect",
          "status": "FAIL",
          "message": "assert_equals: expected \"http://webapitests2018.ctawave.org:8000/xhr/resources/base.xml\" but got \"about:blank\""
        },
        {
          "name": "lastModified set to time of response if no HTTP header provided",
          "status": "PASS",
          "message": null
        },
        {
          "name": "lastModified set to related HTTP header if provided",
          "status": "FAIL",
          "message": "assert_equals: expected 1556635349000 but got 1556550766000"
        },
        {
          "name": "cookie (after setting it)",
          "status": "FAIL",
          "message": "assert_equals: expected \"\" but got \"thisshouldbeignored; vary-value-override=x-shape; mode=normal; ws_test_1556633221738.0.9349055700700461=test\""
        },
        {
          "name": "styleSheets should be an object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "implementation should be an object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "images should be an object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "forms should be an object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "links should be an object",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/getallresponseheaders.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: getAllResponseHeaders()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: getAllResponseHeaders() 1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: getAllResponseHeaders() 2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: getAllResponseHeaders() 3",
          "status": "FAIL",
          "message": "assert_equals: expected \"double-trouble: , \\r\\n\" but got \"double-trouble: \\r\\n\""
        },
        {
          "name": "XMLHttpRequest: getAllResponseHeaders() 4",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: getAllResponseHeaders() 5",
          "status": "FAIL",
          "message": "assert_equals: expected \"heya: , \\v\\f, 1, , , 2\\r\\n\" but got \"heya: \\v\\f, 1, , , 2\\r\\n\""
        },
        {
          "name": "XMLHttpRequest: getAllResponseHeaders() 6",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-event-abort.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The abort() method: do not fire abort event in OPENED state when send() flag is unset.",
          "status": "FAIL",
          "message": "assert_equals: abort() cannot change readyState when readyState is 1 and send() flag is unset expected 1 but got 0"
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-overrides.html?timeout disabled after initially set",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/event-progress.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Fire a progress event named progress (synchronous flag is unset)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/response-data-progress.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: progress events grow response body size, unknown content-length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: progress events grow response body size, known content-length",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-about-blank-window.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() resolving URLs (about:blank iframe)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-sandboxed-iframe-allow.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Tests that sandboxed iframe has CORS XHR access to a server that accepts all domains",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-during-done.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort() during DONE (sync)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: abort() during DONE (sync aborted in readystatechange)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: abort() during DONE (async)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-redirected-worker-origin.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Referer header",
          "status": "FAIL",
          "message": "assert_equals: expected \"Referer: http://webapitests2018.ctawave.org:8000/xhr/resources/workerxhr-origin-referrer.js\\n\" but got \"Referer: http://webapitests2018.ctawave.org:8000/xhr/resources/redirect.py?location=workerxhr-origin-referrer.js\\n\""
        },
        {
          "name": "Origin header",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Request URL test",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-authentication-basic-cors.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - \"Basic\" authenticated CORS requests with user name and password passed to open() (asserts failure)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-sync-blocks-async.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: sync requests should block events on pending async requests",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/event-loadstart-upload.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Fire a progress event named loadstart on upload object (synchronous flag is unset)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-allow-empty-value.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: setRequestHeader() - empty header ()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - empty header (null)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - empty header (undefined)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-redirected-sharedworker-origin.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: redirected classic shared worker scripts, origin and referrer",
          "status": "FAIL",
          "message": "'SharedWorker' is not defined"
        }
      ]
    },
    {
      "test": "/xhr/formdata-set.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Passing a String object to FormData.set should work",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSet1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSet2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSetUndefined1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSetUndefined2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSetNull1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSetNull2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSetToForm1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSetToForm2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSetToFormUndefined1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSetToFormUndefined2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSetToFormNull1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSetToFormNull2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataSetEmptyBlob",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "test": "/xhr/open-url-multi-window-4.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() resolving URLs (multi-Window; 4; evil)",
          "status": "FAIL",
          "message": "assert_equals: responseText is empty on inactive document error condition expected \"\" but got \"bottom\\n\""
        }
      ]
    },
    {
      "test": "/xhr/security-consideration.sub.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "name": "ProgressEvent: security consideration",
          "status": "TIMEOUT",
          "message": "Test timed out"
        }
      ]
    },
    {
      "test": "/xhr/send-redirect.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - Redirects (basics) (301)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (basics) (302)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (basics) (303)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (basics) (307)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/event-loadend.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: loadend event",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/data-uri.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XHR method GET with MIME type text/plain",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XHR method GET with MIME type text/plain (base64)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XHR method GET with MIME type text/html",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XHR method GET with MIME type text/html;charset=UTF-8",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XHR method GET with MIME type image/png",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XHR method POST with MIME type text/plain",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XHR method PUT with MIME type text/plain",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XHR method DELETE with MIME type text/plain",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XHR method HEAD with MIME type text/plain",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XHR method UNICORN with MIME type text/plain",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-after-stop.window.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "open() after window.stop()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-redirect-infinite-sync.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - Redirects (infinite loop; sync) (301)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/overridemimetype-open-state-force-xml.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: overrideMimeType() in open state, XML MIME type with UTF-8 charset",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/getresponseheader-special-characters.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: getResponseHeader() funny characters",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-response-upload-event-progress.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Fire a progress event named progress on the XMLHttpRequestUpload (synchronous flag is unset)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-multi-window-6.htm",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() in document that is not fully active (but may be active) should throw",
          "status": "NOTRUN",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/overridemimetype-invalid-mime-type.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Bogus MIME type does not override encoding",
          "status": "FAIL",
          "message": "assert_equals: expected \"ÿ\" but got \"\""
        },
        {
          "name": "Bogus MIME type does not override encoding, 2",
          "status": "FAIL",
          "message": "assert_equals: expected \"ÿ\" but got \"\""
        },
        {
          "name": "Bogus MIME type does override MIME type",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-authentication-basic-cors-not-enabled.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - \"Basic\" authenticated CORS requests with user name and password passed to open() (asserts failure)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/responsetext-decoding.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: responseText decoding (application/xml %3C%3Fxml%20version%3D'1.0'%20encoding%3D'windows-1252'%3F%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/html %3C!doctype%20html%3E%3Cmeta%20charset%3Dwindows-1252%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (application/xml;charset=utf-8 %3C%3Fxml%20version%3D'1.0'%20encoding%3D'windows-1252'%3F%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (application/xml;charset=windows-1252 %3C%3Fxml%20version%3D'1.0'%20encoding%3D'windows-1252'%3F%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/html;charset=utf-8 %3C!doctype%20html%3E%3Cmeta%20charset%3Dwindows-1252%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/html;charset=windows-1252 %3C!doctype%20html%3E%3Cmeta%20charset%3Dwindows-1252%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain;charset=windows-1252 %FF empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %FF empty)",
          "status": "FAIL",
          "message": "assert_equals: expected \"\\ufffd\" but got \"\""
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %FE%FF empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %FE%FF%FE%FF empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %EF%BB%BF empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %EF%BB%BF%EF%BB%BF empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %C2 empty)",
          "status": "FAIL",
          "message": "assert_equals: expected \"\\ufffd\" but got \"\""
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/xml %FE%FF empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/xml %FE%FF%FE%FF empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/xml %EF%BB%BF empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/xml %EF%BB%BF%EF%BB%BF empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %E3%81%B2 empty)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (application/xml %3C%3Fxml%20version%3D'1.0'%20encoding%3D'windows-1252'%3F%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E  text)",
          "status": "FAIL",
          "message": "assert_equals: expected \"<?xml version='1.0' encoding='windows-1252'?><x>機</x>\" but got \"<?xml version='1.0' encoding='windows-1252'?><x>æ©Ÿ</x>\""
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/html %3C!doctype%20html%3E%3Cmeta%20charset%3Dwindows-1252%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (application/xml;charset=utf-8 %3C%3Fxml%20version%3D'1.0'%20encoding%3D'windows-1252'%3F%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (application/xml;charset=windows-1252 %3C%3Fxml%20version%3D'1.0'%20encoding%3D'windows-1252'%3F%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/html;charset=utf-8 %3C!doctype%20html%3E%3Cmeta%20charset%3Dwindows-1252%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/html;charset=windows-1252 %3C!doctype%20html%3E%3Cmeta%20charset%3Dwindows-1252%3E%3Cx%3E%e6%a9%9f%3C%2Fx%3E  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain;charset=windows-1252 %FF  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %FF  text)",
          "status": "FAIL",
          "message": "assert_equals: expected \"\\ufffd\" but got \"\""
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %FE%FF  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %FE%FF%FE%FF  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %EF%BB%BF  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %EF%BB%BF%EF%BB%BF  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %C2  text)",
          "status": "FAIL",
          "message": "assert_equals: expected \"\\ufffd\" but got \"\""
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain;charset=bogus %C2  text)",
          "status": "FAIL",
          "message": "assert_equals: expected \"\\ufffd\" but got \"\""
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/xml %FE%FF  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/xml %FE%FF%FE%FF  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/xml %EF%BB%BF  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/xml %EF%BB%BF%EF%BB%BF  text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseText decoding (text/plain %E3%81%B2  text)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-simple.html?load fires normally",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/firing-events-http-content-length.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "ProgressEvent: firing events for HTTP with Content-Length",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/getresponseheader-error-state.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: getResponseHeader() in error state (failing cross-origin test)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-sync-method-denied.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Sync request denied at preflight because of non-CORS-safelisted method",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-async-method-denied.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Async request denied at preflight",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-synconmain.html?timeout after open",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-worker-synconworker.html?load fires normally",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/responsexml-media-type.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('', should  parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('text/html', should not parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('bogus', should  parse)",
          "status": "FAIL",
          "message": "Unable to get property 'documentElement' of undefined or null reference"
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('bogus+xml', should  parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('text/plain;+xml', should not parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('text/plainxml', should not parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('video/x-awesome+xml', should  parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('video/x-awesome', should not parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('text/xml', should  parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('application', should  parse)",
          "status": "FAIL",
          "message": "Unable to get property 'documentElement' of undefined or null reference"
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('text/xsl', should not parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('text/plain', should not parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('application/rdf', should not parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('application/xhtml+xml', should  parse)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML MIME type tests ('image/svg+xml', should  parse)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-entity-body-basic.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - data argument (1)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - data argument (10000000)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - data argument (2,2)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - data argument (false)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - data argument (A\u0000A)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - data argument (1=2&3=4)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-during-loading.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort() during LOADING",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/overridemimetype-edge-cases.window.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "overrideMimeType() is not reset by open(), basic",
          "status": "FAIL",
          "message": "assert_equals: expected \"\\ufffd\\ufffd\" but got \"Âð\""
        },
        {
          "name": "overrideMimeType() is not reset by open()",
          "status": "FAIL",
          "message": "assert_equals: expected \"\\ufffd\\ufffd\" but got \"\\ufffd\""
        },
        {
          "name": "If charset is not overridden by overrideMimeType() the original continues to be used",
          "status": "FAIL",
          "message": "assert_equals: expected \"Âð\" but got \"\\ufffd\""
        },
        {
          "name": "Charset can be overridden by overrideMimeType() with a bogus charset",
          "status": "FAIL",
          "message": "assert_equals: expected \"\\ufffd\\ufffd\" but got \"\\ufffd\""
        }
      ]
    },
    {
      "test": "/xhr/send-data-arraybuffer.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: ArrayBuffer data",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-after-send.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: setRequestHeader() after send()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/formdata-has.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "testFormDataHas",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataHasFromForm",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataHasFromFormNull",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataHasFromEmptyForm",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataHasEmpty1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataHasEmpty2",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/responseXML-unavailable-in-worker.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest's responseXML property should not be exposed in workers.",
          "status": "FAIL",
          "message": "assert_false: responseXML should not be on the prototype. expected false got true"
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-preflight-denied.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Tests async XHR preflight denial due to lack of CORS headers",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-sync-timeout.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: timeout during sync send() should not run",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/response-data-arraybuffer.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The response attribute: ArrayBuffer data",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-timeout-events.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: timeout is not 0 ",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-worker-overrides.html?timeout disabled after initially set",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/event-error.sub.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest Test: event - error",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-authentication-basic.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - \"Basic\" authenticated requests with user name and password passed to open()",
          "status": "FAIL",
          "message": "assert_equals: expected \"DID\" but got \"DID-NOT\""
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-cors-safelisted-response-headers.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Response with CORS-safelisted headers",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-method-bogus.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() - bogus methods ()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - bogus methods (>)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - bogus methods ( GET)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - bogus methods (G T)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - bogus methods (@GET)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - bogus methods (G:ET)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - bogus methods (GET?)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - bogus methods (GET\n)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-sync-no-response-event-loadend.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Fire an event named loadend (no response entity body and the synchronous flag is set)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-entity-body-get-head-async.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - non-empty data argument and GET/HEAD - async, no upload events should fire (GET)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - non-empty data argument and GET/HEAD - async, no upload events should fire (HEAD)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/xmlhttprequest-unsent.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: members during UNSENT",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-entity-body-document-bogus.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Serializing documents through XMLHttpRequest: ''",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Serializing documents through XMLHttpRequest: '<test:test/>'",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Serializing documents through XMLHttpRequest: '<test:test test:test=\"gee\"/>'",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Serializing documents through XMLHttpRequest: '<test:test test:test=\"gee\" x=\"�\"/>'",
          "status": "FAIL",
          "message": "assert_equals: expected \"<test:test test:test=\\\"gee\\\" x=\\\"\\ufffd\\\"/>\" but got \"<test:test x=\\\"\\ufffd\\ufffd\\ufffd\\\" test:test=\\\"gee\\\"/>\""
        }
      ]
    },
    {
      "test": "/xhr/event-readystate-sync-open.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() call fires sync readystate event (sync)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() call fires sync readystate event (async)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/event-upload-progress-crossorigin.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Upload events registered on time (http://www1.webapitests2018.ctawave.org:8000/xhr/resources/corsenabled.py)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Upload events registered on time (resources/redirect.py?code=307&location=http://www1.webapitests2018.ctawave.org:8000/xhr/resources/corsenabled.py)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Upload events registered too late (http://www1.webapitests2018.ctawave.org:8000/xhr/resources/corsenabled.py)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Upload events registered too late (resources/redirect.py?code=307&location=http://www1.webapitests2018.ctawave.org:8000/xhr/resources/corsenabled.py)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/formdata-foreach.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "FormData: foreach",
          "status": "FAIL",
          "message": "Function expected"
        }
      ]
    },
    {
      "test": "/xhr/responsetype.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Initial value of responseType",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"\" when readyState is UNSENT.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"\" when readyState is OPENED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"\" when readyState is HEADERS_RECEIVED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"\" when readyState is LOADING.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"\" when readyState is DONE.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"\" when readyState is OPENED and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"\" when readyState is DONE and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"json\" when readyState is UNSENT.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"json\" when readyState is OPENED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"json\" when readyState is HEADERS_RECEIVED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"json\" when readyState is LOADING.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"json\" when readyState is DONE.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"json\" when readyState is OPENED and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"json\" when readyState is DONE and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"document\" when readyState is UNSENT.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"document\" when readyState is OPENED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"document\" when readyState is HEADERS_RECEIVED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"document\" when readyState is LOADING.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"document\" when readyState is DONE.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"document\" when readyState is OPENED and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"document\" when readyState is DONE and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"arraybuffer\" when readyState is UNSENT.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"arraybuffer\" when readyState is OPENED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"arraybuffer\" when readyState is HEADERS_RECEIVED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"arraybuffer\" when readyState is LOADING.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"arraybuffer\" when readyState is DONE.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"arraybuffer\" when readyState is OPENED and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"arraybuffer\" when readyState is DONE and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"blob\" when readyState is UNSENT.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"blob\" when readyState is OPENED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"blob\" when readyState is HEADERS_RECEIVED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"blob\" when readyState is LOADING.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"blob\" when readyState is DONE.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"blob\" when readyState is OPENED and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"blob\" when readyState is DONE and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"text\" when readyState is UNSENT.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"text\" when readyState is OPENED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"text\" when readyState is HEADERS_RECEIVED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"text\" when readyState is LOADING.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"text\" when readyState is DONE.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"text\" when readyState is OPENED and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"text\" when readyState is DONE and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"nosuchtype\" when readyState is UNSENT.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"nosuchtype\" when readyState is OPENED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"nosuchtype\" when readyState is HEADERS_RECEIVED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"nosuchtype\" when readyState is LOADING.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"nosuchtype\" when readyState is DONE.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"nosuchtype\" when readyState is OPENED and the sync flag is set.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Set responseType to \"nosuchtype\" when readyState is DONE and the sync flag is set.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-data-unexpected-tostring.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "abort() called from data stringification",
          "status": "FAIL",
          "message": "InvalidStateError"
        },
        {
          "name": "open() called from data stringification",
          "status": "PASS",
          "message": null
        },
        {
          "name": "send() called from data stringification",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-sync-open-send.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() (sync) - send() - open()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/overridemimetype-done-state.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "overridemimetype-done-state",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-entity-body-document.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XML document, windows-1252",
          "status": "FAIL",
          "message": "assert_equals: document should be serialized and sent as application/xml;charset=UTF-8 expected \"application/xml;charset=UTF-8\" but got \"application/xml; charset=windows-1252\""
        },
        {
          "name": "HTML document, invalid UTF-8",
          "status": "FAIL",
          "message": "assert_equals: document should be serialized and sent as text/html;charset=UTF-8 expected \"text/html;charset=UTF-8\" but got \"text/html; charset=utf-8\""
        },
        {
          "name": "HTML document, shift-jis",
          "status": "FAIL",
          "message": "assert_equals: document should be serialized and sent as text/html;charset=UTF-8 expected \"text/html;charset=UTF-8\" but got \"text/html; charset=shift_jis\""
        },
        {
          "name": "plain text file",
          "status": "FAIL",
          "message": "assert_equals: document should be serialized and sent as text/html;charset=UTF-8 expected \"text/html;charset=UTF-8\" but got \"text/html; charset=utf-8\""
        },
        {
          "name": "image file",
          "status": "FAIL",
          "message": "assert_equals: document should be serialized and sent as text/html;charset=UTF-8 expected \"text/html;charset=UTF-8\" but got \"text/html; charset=utf-8\""
        },
        {
          "name": "img tag",
          "status": "FAIL",
          "message": "assert_equals: document should be serialized and sent as text/html;charset=UTF-8 expected \"text/html;charset=UTF-8\" but got \"text/html; charset=utf-8\""
        },
        {
          "name": "empty div",
          "status": "FAIL",
          "message": "assert_equals: document should be serialized and sent as text/html;charset=UTF-8 expected \"text/html;charset=UTF-8\" but got \"text/html; charset=utf-8\""
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-request-invalid-status-501.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Request with 501 preflight response",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-response-with-body.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Tests that XHR doesn't prepend the body from CORS preflight response to the actual response",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-worker-origin.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Referer header",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Origin header",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Request URL test",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/response-invalid-responsetype.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: response is plain text if responseType is set to an invalid string (arrayBuffer)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: response is plain text if responseType is set to an invalid string (JSON)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: response is plain text if responseType is set to an invalid string (glob)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: response is plain text if responseType is set to an invalid string (txt)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: response is plain text if responseType is set to an invalid string (text/html)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/anonymous-mode-unsupported.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: anonymous mode unsupported",
          "status": "FAIL",
          "message": "assert_equals: The deprecated anonymous:true should be ignored, cookie sent anyway expected \"Cookie: test=anonymous-mode-unsupported\\n\" but got \"Cookie: test=anonymous-mode-unsupported; sid=b2924d20-6a93-11e9-98b4-a11fb92a6d1c; vary-value-override=x-shape; mode=normal; ws_test_1556633221738.0.9349055700700461=test; ws_test_1556633243190.0.3744274126521958=test\\n\""
        }
      ]
    },
    {
      "test": "/xhr/send-content-type-charset.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "header with invalid MIME type is not changed",
          "status": "PASS",
          "message": null
        },
        {
          "name": "header with invalid MIME type (empty string) is not changed",
          "status": "PASS",
          "message": null
        },
        {
          "name": "known charset but bogus header - missing MIME type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "bogus charset and bogus header - missing MIME type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "If charset= param is UTF-8 (case-insensitive), it should not be changed",
          "status": "PASS",
          "message": null
        },
        {
          "name": "If no charset= param is given, implementation should not add one - unknown MIME",
          "status": "PASS",
          "message": null
        },
        {
          "name": "If no charset= param is given, implementation should not add one - known MIME",
          "status": "PASS",
          "message": null
        },
        {
          "name": "If no charset= param is given, implementation should not add one - known MIME, unknown param, two spaces",
          "status": "PASS",
          "message": null
        },
        {
          "name": "charset given but wrong, fix it (unknown MIME, bogus charset)",
          "status": "FAIL",
          "message": "assert_equals: expected \"text/x-thepiano;charset=UTF-8\" but got \"text/x-thepiano;charset= waddup\""
        },
        {
          "name": "If charset= param is UTF-8 (case-insensitive), it should not be changed (bogus charset)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "charset given but wrong, fix it (known MIME, actual charset)",
          "status": "FAIL",
          "message": "assert_equals: expected \"text/plain;charset=UTF-8\" but got \"text/plain;charset=shift-jis\""
        },
        {
          "name": "Multiple non-UTF-8 charset parameters deduplicate, bogus parameter dropped",
          "status": "FAIL",
          "message": "assert_equals: expected \"text/x-pink-unicorn;charset=UTF-8\" but got \"text/x-pink-unicorn; charset=windows-1252; charset=bogus; notrelated; charset=ascii\""
        },
        {
          "name": "No content type set, give MIME and charset",
          "status": "PASS",
          "message": null
        },
        {
          "name": "charset with leading space that is UTF-8 does change",
          "status": "FAIL",
          "message": "assert_equals: expected \"text/plain;charset=UTF-8\" but got \"text/plain;charset= utf-8\""
        },
        {
          "name": "charset with trailing space that is UTF-8 does not change",
          "status": "PASS",
          "message": null
        },
        {
          "name": "charset in double quotes that is UTF-8 does not change",
          "status": "PASS",
          "message": null
        },
        {
          "name": "charset in double quotes with space",
          "status": "FAIL",
          "message": "assert_equals: expected \"text/plain;charset=UTF-8\" but got \"text/plain;charset=\\\" utf-8\\\"\""
        },
        {
          "name": "charset in double quotes with backslashes that is UTF-8 does not change",
          "status": "PASS",
          "message": null
        },
        {
          "name": "unknown parameters need to be preserved",
          "status": "FAIL",
          "message": "assert_equals: expected \"yo/yo;charset=UTF-8;yo=YO;x=y\" but got \"YO/yo;charset=x;yo=YO; X=y\""
        }
      ]
    },
    {
      "test": "/xhr/send-receive-utf16.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "UTF-16 with BOM, no encoding in content-type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "UTF-16 without BOM, with charset label in content-type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "UTF-16 without BOM, mislabelled as UTF-8 in content-type",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-request-headers-origin.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "'Origin' should not be included in CORS Request-Headers",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-allow-preflight-cache-invalidation-by-header.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Preflight cache should be invalidated in presence of custom header",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-and-redirects-async-same-origin.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Request without credentials is redirected to a cross-origin response with Access-Control-Allow-Origin=* (with star)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Request with credentials is redirected to a cross-origin response with Access-Control-Allow-Origin=* (with star)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Request without credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Request with credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Request without credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin (no credentials)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Request with credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin (no credentials)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-non-same-origin.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - non same-origin (mailto:test@example.org)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - non same-origin (tel:+31600000000)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - non same-origin (http://www1.webapitests2018.ctawave.org:8000)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - non same-origin (javascript:alert('FAIL'))",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - non same-origin (folder.txt)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - non same-origin (about:blank)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - non same-origin (blob:bogusidentifier)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-allow-async.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Basic async cross-origin XHR request",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-conditional-cors.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "304 without appropriate CORS header",
          "status": "FAIL",
          "message": "'CROSSDOMAIN' is not defined"
        },
        {
          "name": "304 with appropriate CORS header",
          "status": "FAIL",
          "message": "'CROSSDOMAIN' is not defined"
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-header-allowed.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that are allowed (Authorization)",
          "status": "FAIL",
          "message": "assert_equals: expected \"Authorization,\" but got \"\""
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that are allowed (Pragma)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that are allowed (User-Agent)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that are allowed (Content-Transfer-Encoding)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that are allowed (Content-Type)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that are allowed (Overwrite)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that are allowed (If)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that are allowed (Status-URI)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that are allowed (X-Pink-Unicorn)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that are allowed (!#$%&'*+-.^_`|~0123456789abcdefghijklmnopqrstuvwxyz)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/xmlhttprequest-network-error-sync.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: members during network errors (sync)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/formdata-delete.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "testFormDataDelete",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataDeleteFromForm",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataDeleteFromFormNonExistentKey",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataDeleteFromFormOtherKey",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataDeleteFromEmptyForm",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataDeleteNonExistentKey",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataDeleteOtherKey",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-during-abort-processing.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() during abort processing - abort() called from onloadstart",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-during-abort.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() during abort()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/formdata-get.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "testFormDataGet",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataGetFromForm",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataGetFromFormNull",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataGetFromEmptyForm",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataGetNull1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataGetNull2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataGetAll",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataGetAllEmpty1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataGetAllEmpty2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataGetAllFromForm",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataGetAllFromFormNull",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataGetAllFromEmptyForm",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/xmlhttprequest-sync-block-scripts.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Check that while a sync XHR is in flight async script loads don't complete and run script",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/sync-no-timeout.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Sync XHR should not have a timeout",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-open-setrequestheader.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: setRequestHeader() and open()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-request-must-not-contain-cookie.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Preflight request must not contain any cookie header",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/status-error.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: status error handling GET 200",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling GET 400",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling GET 401",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling GET 404",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling GET 410",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling GET 500",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling GET 699",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling HEAD 200",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling HEAD 404",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling HEAD 500",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling HEAD 699",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling POST 200",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling POST 404",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling POST 500",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling POST 699",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling PUT 200",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling PUT 404",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling PUT 500",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status error handling PUT 699",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/xmlhttprequest-sync-default-feature-policy.sub.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Synchronous XMLHttpRequest Feature Policy Test",
          "status": "FAIL",
          "message": "'run_all_fp_tests_allow_all' is not defined"
        }
      ]
    },
    {
      "test": "/xhr/send-sync-no-response-event-order.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: event order when synchronous flag is set and there is no response entity body",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-during-upload.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort() while sending data",
          "status": "FAIL",
          "message": "assert_equals: expected \"upload.abort(0,0,false)\" but got \"upload.abort(0,0,true)\""
        }
      ]
    },
    {
      "test": "/xhr/send-network-error-async-events.sub.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Fire a progress event named error when Network error happens (synchronous flag is unset)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-response-with-exposed-headers.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Test CORS response with 'Access-Control-Expose-Headers' header",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-data-blob.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Blob data",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-sync-response-event-order.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: event order when synchronous flag is set",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-multi-window-2.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() resolving URLs (multi-Window; 2; evil)",
          "status": "FAIL",
          "message": "assert_throws: open() when associated document's IFRAME is removed function \"function () {\n            client.open(\"GET\", \"folder.txt\")\n          }\" did not throw"
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-bogus-name.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "setRequestHeader should throw with header name \"(\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \")\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"<\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \">\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"@\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \",\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \";\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \":\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\\\\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\\"\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"/\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"[\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"]\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"?\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"=\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"{\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"}\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \" \".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"t\\rt\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"t\\nt\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"t: t\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"t:t\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"t<t\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"t t\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \" tt\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \":tt\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\ttt\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\vtt\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"t\\0t\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"t\\\"t\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"t,t\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"t;t\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"()[]{}\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"a?B\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"a=B\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\0\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x01\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x02\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x03\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x04\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x05\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x06\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x07\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\b\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\t\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\n\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\v\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\f\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\r\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x0e\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x0f\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x10\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x11\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x12\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x13\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x14\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x15\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x16\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x17\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x18\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x19\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x1a\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x1b\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x1c\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x1d\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x1e\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"\\x1f\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader should throw with header name \"ﾃｽﾄ\".",
          "status": "FAIL",
          "message": "assert_throws: function \"function () { client.setRequestHeader(name, 'x-value') }\" threw object \"SyntaxError\" (\"SyntaxError\") expected object \"TypeError\" (\"TypeError\")"
        },
        {
          "name": "setRequestHeader should throw with header name \"X-ﾃｽﾄ\".",
          "status": "FAIL",
          "message": "assert_throws: function \"function () { client.setRequestHeader(name, 'x-value') }\" threw object \"SyntaxError\" (\"SyntaxError\") expected object \"TypeError\" (\"TypeError\")"
        }
      ]
    },
    {
      "test": "/xhr/loadstart-and-state.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "open() during loadstart",
          "status": "PASS",
          "message": null
        },
        {
          "name": "abort() during loadstart",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/overridemimetype-headers-received-state-force-shiftjis.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: overrideMimeType() in HEADERS RECEIVED state, enforcing Shift-JIS encoding",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-content-type-string.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - Content-Type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Content-Type 1",
          "status": "FAIL",
          "message": "assert_equals: expected \"text/html;charset=UTF-8\" but got \"text/html; charset=windows-1252\""
        },
        {
          "name": "XMLHttpRequest: send() - Content-Type 2",
          "status": "FAIL",
          "message": "assert_equals: expected \"application/xml;charset=UTF-8\" but got \"application/xml; charset=windows-1252\""
        }
      ]
    },
    {
      "test": "/xhr/abort-during-headers-received.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort() during HEADERS_RECEIVED",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/getresponseheader.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "getResponseHeader('content-length') expects 0",
          "status": "PASS",
          "message": null
        },
        {
          "name": "getResponseHeader('content-length') expects 0, 0",
          "status": "PASS",
          "message": null
        },
        {
          "name": "getResponseHeader('double-trouble') expects , ",
          "status": "FAIL",
          "message": "assert_equals: expected \", \" but got \"\""
        },
        {
          "name": "getResponseHeader('foo-test') expects 1, 2, 3",
          "status": "PASS",
          "message": null
        },
        {
          "name": "getResponseHeader('heya') expects , \u000b\f, 1, , , 2",
          "status": "FAIL",
          "message": "assert_equals: expected \", \\v\\f, 1, , , 2\" but got \"\\v\\f, 1, , , 2\""
        },
        {
          "name": "getResponseHeader('www-authenticate') expects 1, 2, 3, 4",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-redirect-post-upload.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: POSTing to URL that redirects (301)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: The send() method: POSTing to URL that redirects (302)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: The send() method: POSTing to URL that redirects (303)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: The send() method: POSTing to URL that redirects (307 (string))",
          "status": "FAIL",
          "message": "assert_array_equals: events firing in expected order and states lengths differ, expected 9 got 10"
        },
        {
          "name": "XMLHttpRequest: The send() method: POSTing to URL that redirects (307 (blob))",
          "status": "FAIL",
          "message": "assert_array_equals: events firing in expected order and states lengths differ, expected 9 got 10"
        }
      ]
    },
    {
      "test": "/xhr/open-url-base-inserted.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() resolving URLs - insert <base>",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/headers-normalize-response.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Header value: hello world\\0",
          "status": "FAIL",
          "message": "assert_throws: function \"() => client.send()\" did not throw"
        },
        {
          "name": "Header value: \\0hello world",
          "status": "FAIL",
          "message": "assert_throws: function \"() => client.send()\" did not throw"
        },
        {
          "name": "Header value: hello\\0world",
          "status": "FAIL",
          "message": "assert_throws: function \"() => client.send()\" did not throw"
        },
        {
          "name": "Header value: __hello_world",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Header value: hello_world__",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Header value: __hello_world__",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Header value: [tab]hello_world",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Header value: hello_world[tab]",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Header value: [tab]hello_world[tab]",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Header value: hello______world",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Header value: hello[tab]world",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Header value: \\0",
          "status": "FAIL",
          "message": "assert_throws: function \"() => client.send()\" did not throw"
        },
        {
          "name": "Header value: ___",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Header value: [tab]",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Header value: ",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-javascript-window-2.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() - resolving URLs (javascript: <iframe>; 2)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-method-responsetype-set-sync.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() sync request not allowed if responseType is set (arraybuffer)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() sync request not allowed if responseType is set (blob)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() sync request not allowed if responseType is set (json)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() sync request not allowed if responseType is set (text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() sync request not allowed if responseType is set (document)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-sync-no-response-event-load.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Fire an event named load (no response entity body and the synchronous flag is set)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-get-fail-non-simple.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Preflighted cross-origin request denied",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-sandboxed-iframe-allow-origin-null.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Tests that sandboxed iframe has CORS XHR access to a server that accepts null domain",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/event-timeout-order.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: event - timeout (order of events)",
          "status": "FAIL",
          "message": "assert_equals: expected \"upload.timeout(0,0,false)\" but got \"upload.timeout(0,0,true)\""
        }
      ]
    },
    {
      "test": "/xhr/send-redirect-bogus-sync.htm",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - Redirects (bogus Location header; sync) (301: foobar://abcd)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (bogus Location header; sync) (302: http://z)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (bogus Location header; sync) (302: mailto:someone@example.org)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (bogus Location header; sync) (303: http://z)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (bogus Location header; sync) (303: tel:1234567890)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/header-user-agent-async.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Async request has User-Agent header",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-no-response-event-loadend.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: Fire a progress event named loadend (no response entity body)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-javascript-window.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() - resolving URLs (javascript: <iframe>; 1)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-redirect-to-cors.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (301)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (301 GET with explicit Content-Type)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (301 GET with explicit Content-Type safelisted)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (302)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (303)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (303 LALA with string and explicit Content-Type safelisted)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (307)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (307 post with null)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (307 post with string)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (307 post with typed array)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (301 POST with string and explicit Content-Type)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (301 POST with string and explicit Content-Type safelisted)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (302 POST with string and explicit Content-Type)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (307 POST with string and explicit Content-Type)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (307 FOO with string and explicit Content-Type)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (308 POST with string and explicit Content-Type)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (308 FOO with string and explicit Content-Type)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (308 FOO with string and explicit Content-Type text/plain)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (308 FOO with string and explicit Content-Type multipart/form-data)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (308 FOO with string and explicit Content-Type safelisted)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirect to CORS-enabled resource (307 POST with string and explicit Content-Type safelisted)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-async-not-supported.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Async PUT request denied at preflight",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/event-error-order.sub.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: event - error (order of events)",
          "status": "FAIL",
          "message": "assert_equals: expected \"readystatechange(2)\" but got \"readystatechange(4)\""
        }
      ]
    },
    {
      "test": "/xhr/response-data-deflate.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: content-encoding:deflate response was correctly inflated",
          "status": "FAIL",
          "message": "assert_equals: expected (string) \"deflate\" but got (object) null"
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-non-cors-safelisted-content-type.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Deny cross-origin request with non-CORS-safelisted content type",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-send-open.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() - send() - open()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-twice.html?load fires normally with no timeout set, twice",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/getresponseheader-chunked-trailer.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: getResponseHeader() and HTTP trailer",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-allow-star.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Allow star",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-authentication-basic-setrequestheader.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - \"Basic\" authenticated request using setRequestHeader()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-recursive-failed-request.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Recursively repeated CORS requests with failed preflights should never result in unexpected behavior",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/preserve-ua-header-on-redirect.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: User-Agent header is preserved on redirect",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: User-Agent header is preserved on redirect 1",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/allow-lists-starting-with-comma.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Allow lists starting with a comma should be parsed correctly",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/responsexml-basic.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: responseXML basic test",
          "status": "PASS",
          "message": null
        },
        {
          "name": "responseXML on empty response documents",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/getresponseheader-unsent-opened-state.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: getResponseHeader() in unsent, opened states",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/timeout-sync.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "setting timeout attribute on sync request",
          "status": "PASS",
          "message": null
        },
        {
          "name": "open() with async false when timeout is set",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/response-data-gzip.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: GZIP response was correctly inflated",
          "status": "FAIL",
          "message": "assert_equals: expected (string) \"gzip\" but got (object) null"
        }
      ]
    },
    {
      "test": "/xhr/header-user-agent-sync.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Sync request has User-Agent header",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-authentication-competing-names-passwords.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest user/pass options: user in open()",
          "status": "FAIL",
          "message": "assert_equals: responseText should contain the right user and password expected \"70cc582e-9dc2-4416-9c68-9fc7482f049e\\n\" but got \"d2002688-4221-4696-88bf-de0da6d0b1c2\\npass\""
        },
        {
          "name": "XMLHttpRequest user/pass options: user/pass in open()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest user/pass options: another user/pass in open(); must override cached credentials from previous test",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest user/pass options: pass in URL, user in open()",
          "status": "FAIL",
          "message": "SyntaxError"
        },
        {
          "name": "XMLHttpRequest user/pass options: pass in URL, user/pass in open()",
          "status": "FAIL",
          "message": "SyntaxError"
        },
        {
          "name": "XMLHttpRequest user/pass options: user in URL",
          "status": "FAIL",
          "message": "SyntaxError"
        },
        {
          "name": "XMLHttpRequest user/pass options: user in URL, pass in open()",
          "status": "FAIL",
          "message": "SyntaxError"
        },
        {
          "name": "XMLHttpRequest user/pass options: user/pass in URL",
          "status": "FAIL",
          "message": "SyntaxError"
        },
        {
          "name": "XMLHttpRequest user/pass options: user in URL and open()",
          "status": "FAIL",
          "message": "SyntaxError"
        },
        {
          "name": "XMLHttpRequest user/pass options: user in URL; user/pass in open()",
          "status": "FAIL",
          "message": "SyntaxError"
        },
        {
          "name": "XMLHttpRequest user/pass options: user/pass in URL; user in open()",
          "status": "FAIL",
          "message": "SyntaxError"
        },
        {
          "name": "XMLHttpRequest user/pass options: user/pass in URL; pass in open()",
          "status": "FAIL",
          "message": "SyntaxError"
        },
        {
          "name": "XMLHttpRequest user/pass options: user/pass in URL and open()",
          "status": "FAIL",
          "message": "SyntaxError"
        }
      ]
    },
    {
      "test": "/xhr/getresponseheader-server-date.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: getResponseHeader() server and date",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-worker-simple.html?load fires normally",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/send-redirect-infinite.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - Redirects (infinite loop)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-headers-async.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Preflighted async request with custom header",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-denied.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Same-origin request accepted",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Cross-origin request denied",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-entity-body-none.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "No content type (POST)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "No content type (PUT)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "No content type (HEAD)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Explicit content type (POST)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Explicit content type (PUT)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Explicit content type (HEAD)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/status-basic.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: status/statusText - various responses 1 (GET 204)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 2 (HEAD 204)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 3 (CHICKEN 204)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 4 (GET 401)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 5 (HEAD 401)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 6 (CHICKEN 401)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 7 (GET 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 8 (HEAD 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 9 (CHICKEN 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 10 (GET 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 11 (HEAD 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 12 (CHICKEN 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 13 (GET 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 14 (HEAD 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 15 (CHICKEN 402)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 16 (GET 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 17 (HEAD 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 18 (CHICKEN 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 19 (GET 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 20 (HEAD 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 21 (CHICKEN 502)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 22 (GET 503)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 23 (HEAD 503)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 24 (CHICKEN 503)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 25 (GET 699)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 26 (HEAD 699)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: status/statusText - various responses 27 (CHICKEN 699)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-url-base-inserted-after-open.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() resolving URLs - insert <base> after open()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-entity-body-get-head.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - non-empty data argument and GET/HEAD (GET)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - non-empty data argument and GET/HEAD (HEAD)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-allow-whitespace-in-value.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: setRequestHeader() - header value with whitespace ( )",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - header value with whitespace ( t)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - header value with whitespace (t )",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - header value with whitespace ( t )",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-case-insensitive.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that differ in case",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: setRequestHeader() - headers that differ in case 1",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-sandboxed-iframe-denied-without-wildcard.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Check that path exists and is accessible via CORS XHR request",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Sandboxed iframe is denied CORS access to server that allows parent origin",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-event-listeners.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort() should not reset event listeners",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/progress-events-response-data-gzip.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: progress events and GZIP encoding",
          "status": "FAIL",
          "message": "assert_equals: event.total should remain invariant expected 0 but got 167145"
        }
      ]
    },
    {
      "test": "/xhr/overridemimetype-unsent-state-force-shiftjis.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: overrideMimeType() in unsent state, enforcing Shift-JIS encoding",
          "status": "FAIL",
          "message": "assert_equals: expected \"テスト\" but got \"eXg\""
        }
      ]
    },
    {
      "test": "/xhr/no-utf16-json.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "JSON asa UTF-16 with BOM should decode as UTF-8 (and, therefore, fail)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-post-success-no-content-type.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "POST request with text content and no Content-Type header",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/event-loadstart.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: loadstart event",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/responseText-status.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest Test: responseText - status",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-authentication-cors-setrequestheader-no-cred.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "CORS request with setRequestHeader auth to URL accepting Authorization header",
          "status": "PASS",
          "message": null
        },
        {
          "name": "CORS request with setRequestHeader auth to URL NOT accepting Authorization header",
          "status": "FAIL",
          "message": "NetworkError"
        }
      ]
    },
    {
      "test": "/xhr/open-user-password-non-same-origin.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() - user/pass argument and non same-origin URL doesn't throw",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-request-header-sorted.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Tests that Access-Control-Request-Headers are sorted.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/abort-after-send.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort() after send()",
          "status": "FAIL",
          "message": "assert_equals: expected \"abort(0,0,false)\" but got \"upload.abort(0,0,true)\""
        }
      ]
    },
    {
      "test": "/xhr/setrequestheader-content-type.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "setRequestHeader(\"\") sends a blank string",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader(\" \") sends the string \" \"",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader(null) sends the string \"null\"",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setRequestHeader(undefined) sends the string \"undefined\"",
          "status": "PASS",
          "message": null
        },
        {
          "name": "String request has correct default Content-Type of \"text/plain;charset=UTF-8\"",
          "status": "PASS",
          "message": null
        },
        {
          "name": "String request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8",
          "status": "FAIL",
          "message": "assert_equals: expected \"Content-Type: text/javascript;charset=UTF-8\\n\" but got \"Content-Type: text/javascript;charset=ASCII\\n\""
        },
        {
          "name": "XML Document request respects setRequestHeader(\"\")",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XML Document request has correct default Content-Type of \"application/xml;charset=UTF-8\"",
          "status": "FAIL",
          "message": "assert_equals: expected \"Content-Type: application/xml;charset=UTF-8\\n\" but got \"Content-Type: application/xml; charset=utf-8\\n\""
        },
        {
          "name": "XML Document request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8",
          "status": "FAIL",
          "message": "assert_equals: expected \"Content-Type: application/xhtml+xml;charset=UTF-8\\n\" but got \"Content-Type: application/xhtml+xml;charset=ASCII\\n\""
        },
        {
          "name": "HTML Document request respects setRequestHeader(\"\")",
          "status": "PASS",
          "message": null
        },
        {
          "name": "HTML Document request has correct default Content-Type of \"text/html;charset=UTF-8\"",
          "status": "FAIL",
          "message": "assert_equals: expected \"Content-Type: text/html;charset=UTF-8\\n\" but got \"Content-Type: text/html; charset=utf-8\\n\""
        },
        {
          "name": "HTML Document request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8",
          "status": "FAIL",
          "message": "assert_equals: expected \"Content-Type: text/html+junk;charset=UTF-8\\n\" but got \"Content-Type: text/html+junk;charset=ASCII\\n\""
        },
        {
          "name": "Blob request respects setRequestHeader(\"\") to be specified",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Blob request with unset type sends no Content-Type without setRequestHeader() call",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Blob request with unset type keeps setRequestHeader() Content-Type and charset",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Blob request with set type respects setRequestHeader(\"\") to be specified",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Blob request with set type uses that it for Content-Type unless setRequestHeader()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Blob request with set type keeps setRequestHeader() Content-Type and charset",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ArrayBuffer request respects setRequestHeader(\"\")",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ArrayBuffer request sends no Content-Type without setRequestHeader() call",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ArrayBuffer request keeps setRequestHeader() Content-Type and charset",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ArrayBufferView request respects setRequestHeader(\"\")",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ArrayBufferView request sends no Content-Type without setRequestHeader() call",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ArrayBufferView request keeps setRequestHeader() Content-Type and charset",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData request respects setRequestHeader(\"\")",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData request has correct default Content-Type of \"multipart/form-data; boundary=_\"",
          "status": "PASS",
          "message": null
        },
        {
          "name": "FormData request keeps setRequestHeader() Content-Type and charset",
          "status": "PASS",
          "message": null
        },
        {
          "name": "URLSearchParams respects setRequestHeader(\"\")",
          "status": "PASS",
          "message": null
        },
        {
          "name": "URLSearchParams request has correct default Content-Type of \"application/x-www-form-urlencoded;charset=UTF-8\"",
          "status": "PASS",
          "message": null
        },
        {
          "name": "URLSearchParams request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8",
          "status": "FAIL",
          "message": "assert_equals: expected \"Content-Type: application/xml;charset=UTF-8\\n\" but got \"Content-Type: application/xml;charset=ASCII\\n\""
        },
        {
          "name": "ReadableStream request respects setRequestHeader(\"\")",
          "status": "FAIL",
          "message": "Function expected"
        },
        {
          "name": "ReadableStream request with under type sends no Content-Type without setRequestHeader() call",
          "status": "FAIL",
          "message": "Function expected"
        },
        {
          "name": "ReadableStream request keeps setRequestHeader() Content-Type and charset",
          "status": "FAIL",
          "message": "Function expected"
        }
      ]
    },
    {
      "test": "/xhr/send-response-event-order.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: The send() method: event order when synchronous flag is unset",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-async-header-denied.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Async request denied at preflight",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-preflight-request-invalid-status-301.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Request with 301 preflight response",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/event-abort.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: abort event",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "xhr/xmlhttprequest-timeout-worker-overridesexpires.html?timeout set to expired value before load fires",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "status": "TIMEOUT",
          "xstatus": "SERVERTIMEOUT"
        }
      ]
    },
    {
      "test": "/xhr/historical.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Support for responseType = moz-blob",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Support for responseType = moz-chunked-text",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Support for responseType = moz-chunked-arraybuffer",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/xmlhttprequest-sync-block-defer-scripts.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Check that a sync XHR in a defer script blocks later defer scripts from running",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-allow-preflight-cache.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Preflight cache should allow second request",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-accept.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - Accept",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/access-control-basic-allow-access-control-origin-header.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Access control test with origin header",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-after-abort.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() after abort()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/event-readystatechange-loaded.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: the LOADING state change may be emitted multiple times",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/FormData-append.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Passing a String object to FormData.append should work.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppend1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppend2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppendUndefined1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppendUndefined2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppendNull1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppendNull2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppendToForm1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppendToForm2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppendToFormUndefined1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppendToFormUndefined2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppendToFormNull1",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppendToFormNull2",
          "status": "PASS",
          "message": null
        },
        {
          "name": "testFormDataAppendEmptyBlob",
          "status": "FAIL",
          "message": "assert_equals: expected (string) \"blank.txt\" but got (undefined) undefined"
        }
      ]
    },
    {
      "test": "/xhr/xmlhttprequest-basic.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: prototype and members",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-open-sync-send.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() - open() (sync) - send()",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-method-insecure.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() - \"insecure\" methods (track)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - \"insecure\" methods (TRACK)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - \"insecure\" methods (trAck)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - \"insecure\" methods (TRACE)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - \"insecure\" methods (trace)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - \"insecure\" methods (traCE)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - \"insecure\" methods (connect)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - \"insecure\" methods (CONNECT)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: open() - \"insecure\" methods (connECT)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/send-redirect-bogus.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: send() - Redirects (bogus Location header) (302: http://example.not)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (bogus Location header) (302: mailto:someone@example.org)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (bogus Location header) (303: http://example.not)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: send() - Redirects (bogus Location header) (303: foobar:someone@example.org)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/sync-no-progress.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "progress event should not be fired by sync XHR",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/open-referer.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: open() - value of Referer header",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/xhr/responsexml-non-document-types.htm",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "XMLHttpRequest: responseXML/responseText on other responseType (arraybuffer)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML/responseText on other responseType (blob)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML/responseText on other responseType (json)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML/responseText on other responseType (text)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "XMLHttpRequest: responseXML/responseText on other responseType (document)",
          "status": "PASS",
          "message": null
        }
      ]
    }
  ]
}