{
  "results": [
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/audioparam-setTargetAtTime.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] AudioParam setTargetAtTime() functionality.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of tests started and ended at the correct time is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 0 at offset 642 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 1 at offset 1783 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 2 at offset 2981 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 3 at offset 4381 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 4 at offset 5934 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 5 at offset 7075 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 6 at offset 8355 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 7 at offset 9673 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 8 at offset 11226 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 9 at offset 12367 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 10 at offset 13565 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 11 at offset 15329 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 12 at offset 16518 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 13 at offset 17659 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 14 at offset 19785 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 15 at offset 21022 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 16 at offset 21810 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 17 at offset 22951 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 18 at offset 24599 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 19 at offset 26225 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 20 at offset 27102 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 21 at offset 28243 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 22 at offset 29441 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 23 at offset 31745 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 24 at offset 32213 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 25 at offset 33535 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 26 at offset 34817 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 27 at offset 36809 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 28 at offset 37762 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 29 at offset 39136 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 30 at offset 41009 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 31 at offset 41425 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 32 at offset 42978 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 33 at offset 44119 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 34 at offset 46245 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 35 at offset 46887 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 36 at offset 48270 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 37 at offset 50194 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 38 at offset 50398 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 39 at offset 52259 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 40 at offset 54012 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 41 at offset 55327 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 42 at offset 56019 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 43 at offset 57551 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 44 at offset 59304 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 45 at offset 60619 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 46 at offset 61330 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 47 at offset 62953 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 48 at offset 64596 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 49 at offset 65911 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 50 at offset 66603 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 51 at offset 68554 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 52 at offset 69888 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 53 at offset 71203 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 54 at offset 71891 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 55 at offset 73781 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 56 at offset 75180 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 57 at offset 76654 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 58 at offset 77187 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 59 at offset 79141 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 60 at offset 80472 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 61 at offset 81787 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 62 at offset 82475 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 63 at offset 84121 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 64 at offset 85764 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 65 at offset 87079 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 66 at offset 87767 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 67 at offset 89067 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 68 at offset 91056 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 69 at offset 92351 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 70 at offset 93503 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 71 at offset 94619 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 72 at offset 95918 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 73 at offset 97645 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 74 at offset 98795 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 75 at offset 99911 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 76 at offset 101210 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 77 at offset 102935 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 78 at offset 104087 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 79 at offset 104790 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 80 at offset 106482 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 81 at offset 108229 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 82 at offset 109379 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 83 at offset 110271 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 84 at offset 111794 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 85 at offset 113113 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 86 at offset 114187 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 87 at offset 116025 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 88 at offset 117494 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 89 at offset 118405 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 90 at offset 120038 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 91 at offset 121317 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 92 at offset 122786 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 93 at offset 123850 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 94 at offset 124619 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 95 at offset 127003 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 96 at offset 127853 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 97 at offset 129137 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 98 at offset 130555 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 99 at offset 132006 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of failed tests with an acceptable relative tolerance of 0.00065683 is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 102 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-getFrequencyResponse.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [1-pole IIR] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-pole IIR Magnitude Response equals [10,9.995561599731445,9.982281684875488,9.96026611328125,9.929688453674316,9.890785217285156,9.843852043151855,9.789238929748535,9.727341651916504,9.658592224121094,9.583455085754395,9.502418518066406,9.415983200073242,9.32465934753418,9.228958129882812,9.12938404083252...] with an element-wise tolerance of {\"absoluteThreshold\":0.0000028611,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-pole IIR Phase Response equals [0,-0.02826550230383873,-0.05647812411189079,-0.08458554744720459,-0.11253655701875687,-0.1402815729379654,-0.16777309775352478,-0.1949661672115326,-0.2218186855316162,-0.2482917755842209,-0.27434995770454407,-0.29996123909950256,-0.3250974416732788,-0.3497338891029358,-0.3738497197628021,-0.3974274694919586...] with an element-wise tolerance of {\"absoluteThreshold\":1.7882e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [1-pole IIR] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [compare IIR and biquad] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIR Magnitude Response equals [1,1.0028345584869385,1.0113478899002075,1.025554895401001,1.0454282760620117,1.070805311203003,1.10122549533844,1.1356719732284546,1.1721950769424438,1.2074543237686157,1.2363563776016235,1.2522097826004028,1.247962236404419,1.218644618988037,1.1639058589935303,1.0886648893356323...] with an element-wise tolerance of {\"absoluteThreshold\":0.000027419,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIR Phase Response equals [0,-0.061315324157476425,-0.12391137331724167,-0.1891222447156906,-0.2583869397640228,-0.3332937955856323,-0.4156070649623871,-0.5072502493858337,-0.6102025508880615,-0.7262400388717651,-0.8564491868019104,-1.0005061626434326,-1.155927300453186,-1.3177809715270996,-1.4793895483016968,-1.6339597702026367...] with an element-wise tolerance of {\"absoluteThreshold\":0.000027657,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [compare IIR and biquad] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [getFrequencyResponse] Test out-of-bounds frequency values",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Magnitude response at frequency -1 is NaN.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Magnitude response at frequency 24001 is NaN.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Phase response at frequency -1 is NaN.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Phase response at frequency 24001 is NaN.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [getFrequencyResponse] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] Convolver response with one channel",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer({numberOfChannels: 2, length: 4, sampleRate: 8192}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [1-channel input] produces 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1: Channel 0 equals [0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585,-0.834891676902771...] with an element-wise tolerance of {\"absoluteThreshold\":3.5763e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1: Channel 1 equals [0,0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585...] with an element-wise tolerance of {\"absoluteThreshold\":4.7684e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [1-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [2-channel input] produces 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2: Channel 0 equals [0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585,-0.834891676902771...] with an element-wise tolerance of {\"absoluteThreshold\":3.5763e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2: Channel 1 equals [0,0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585...] with an element-wise tolerance of {\"absoluteThreshold\":4.7684e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [2-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [3-channel input] 3->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3: Channel 0 equals [0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585,-0.834891676902771...] with an element-wise tolerance of {\"absoluteThreshold\":3.5763e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3: Channel 1 equals [0,0,0,0.9947003126144409,0.7705774307250977,0.9109300374984741,0.770668089389801,0.9842367768287659,0.32022905349731445,-0.9348858594894409,-0.8055058121681213,-0.8837442398071289,-0.8007677793502808,-0.9286617636680603,-0.6026888489723206,0.7909697890281677...] with an element-wise tolerance of {\"absoluteThreshold\":3.5763e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [3-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [4-channel input] 4->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4: Channel 0 equals [0,0,0.9734255075454712,0.8085748553276062,0.8596614599227905,0.8377395868301392,0.18206258118152618,-0.06961169838905334,0.03773331642150879,-0.007562130689620972,-0.018085837364196777,0.029709070920944214,-0.021690011024475098,-0.0055168867111206055,0.05647382140159607,-0.4439384937286377...] with an element-wise tolerance of {\"absoluteThreshold\":3.5763e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4: Channel 1 equals [0,0,0,0.971980094909668,0.8048999309539795,0.8850500583648682,0.18059250712394714,0.02772340178489685,-0.2852807343006134,-0.7788605690002441,-0.0375840961933136,-0.008258610963821411,0.07240849733352661,-0.33466458320617676,-0.7563189268112183,-0.020491480827331543...] with an element-wise tolerance of {\"absoluteThreshold\":2.9803e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [4-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [5.1-channel input] 5.1->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  5.1: Channel 0 equals [0,0,2.3021068572998047,2.0779097080230713,1.5364117622375488,0.8359494805335999,-0.21231389045715332,-0.00529266893863678,0.836210310459137,1.0198438167572021,0.3261905908584595,-0.6783384084701538,-1.057640790939331,-0.5491994619369507,0.2516633868217468,-0.10923552513122559...] with an element-wise tolerance of {\"absoluteThreshold\":7.1526e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  5.1: Channel 1 equals [0,0,0,2.407027244567871,1.8516432046890259,1.2457610368728638,0.5805021524429321,0.36253032088279724,0.16488611698150635,-0.7450209259986877,-1.5345406532287598,-1.9043262004852295,-0.7297847867012024,0.01058971881866455,0.7125816345214844,1.7535796165466309...] with an element-wise tolerance of {\"absoluteThreshold\":7.1526e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [5.1-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Biquad Tail Output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Biquad output has no glitch above the threshold of 0.012968.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiosource-time-limits.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [buffersource: huge stop time] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output from AudioBufferSource.stop(1e+300) contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [buffersource: huge stop time] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [oscillator: huge stop time] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Peak amplitude from oscillator.stop(1e+300) is greater than 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [oscillator: huge stop time] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-stereopanner-interface/stereopannernode-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Attributes and basic functionality of StereoPannerNode",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.pan.defaultValue is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.pan.value = 1.0 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.pan.value is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.channelCount = 1 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.channelCount = 3 threw NotSupportedError: \"Failed to set the 'channelCount' property on 'AudioNode': The channelCount provided (3) is outside the range [1, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.channelCountMode = \"explicit\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.channelCountMode = \"max\" threw NotSupportedError: \"Failed to set the 'channelCountMode' property on 'AudioNode': StereoPanner: 'max' is not allowed\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test-audiocontextoptions-latencyHint-basic] Test creating contexts with basic latencyHint types.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new AudioContext() did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.sampleRate (48000 Hz) is greater than 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  default baseLatency is greater than 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new AudioContext({'latencyHint': 'interactive'}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  interactive baseLatency is equal to 0.01.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new AudioContext({'latencyHint': 'balanced'}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  balanced baseLatency is greater than or equal to 0.01.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new AudioContext({'latencyHint': 'playback'}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  playback baseLatency is greater than or equal to 0.01.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test-audiocontextoptions-latencyHint-basic] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test-audiocontextoptions-latencyHint-double] Test creating contexts with explicit latencyHint values.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new AudioContext({'latencyHint': interactiveLatency/2}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  double-constructor baseLatency small is less than or equal to 0.01.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new AudioContext({'latencyHint': validLatency}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  double-constructor baseLatency inrange 1 is greater than or equal to 0.01.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  double-constructor baseLatency inrange 2 is less than or equal to 0.02.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  creating two high latency contexts did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  high latency context baseLatency is equal to 0.17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  high latency context baseLatency is greater than 0.01.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new AudioContext({'latencyHint': 'foo'}) threw TypeError: \"Failed to construct 'AudioContext': The provided value 'foo' is not a valid enum value of type AudioContextLatencyCategory.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new AudioContext('latencyHint') threw TypeError: \"Failed to construct 'AudioContext': parameter 1 ('contextOptions') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test-audiocontextoptions-latencyHint-double] All assertions passed. (total 10 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-gainnode-interface/gain.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [create context] Create context for test",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [create context] All assertions passed. (total 0 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] GainNode functionality",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Left output from gain node equals [0,0.12505052983760834,0.24813784658908844,0.36732959747314453,0.480754554271698,0.5866320133209229,0.6832997798919678,0.7692402601242065,0.8431042432785034,0.9037321209907532,0.9501721262931824,0.9816950559616089,0.997806191444397,0.9982524514198303,0.9830269813537598,0.9523686766624451...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":1.1908e-7}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Right output from gain node equals [0,0.12505052983760834,0.24813784658908844,0.36732959747314453,0.480754554271698,0.5866320133209229,0.6832997798919678,0.7692402601242065,0.8431042432785034,0.9037321209907532,0.9501721262931824,0.9816950559616089,0.997806191444397,0.9982524514198303,0.9830269813537598,0.9523686766624451...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":1.1908e-7}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Left SNR (in dB) is greater than or equal to 148.69.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Right SNR (in dB) is greater than or equal to 148.69.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [from-dictionary] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AnalyserNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AnalyserNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AnalyserNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of BiquadFilterNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of BiquadFilterNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of BiquadFilterNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AudioBufferSourceNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AudioBufferSourceNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AudioBufferSourceNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ChannelMergerNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ChannelMergerNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ChannelMergerNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ChannelSplitterNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ChannelSplitterNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ChannelSplitterNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ConvolverNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ConvolverNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ConvolverNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of DelayNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of DelayNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of DelayNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of DynamicsCompressorNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of DynamicsCompressorNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of DynamicsCompressorNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of GainNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of GainNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of GainNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of OscillatorNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of OscillatorNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of OscillatorNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of PannerNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of PannerNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of PannerNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ScriptProcessorNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ScriptProcessorNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of ScriptProcessorNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of StereoPannerNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of StereoPannerNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of StereoPannerNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of WaveShaperNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of WaveShaperNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of WaveShaperNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [from-dictionary] All assertions passed. (total 42 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [media-group] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of MediaElementAudioSourceNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of MediaElementAudioSourceNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of MediaElementAudioSourceNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of MediaStreamAudioDestinationNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of MediaStreamAudioDestinationNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of MediaStreamAudioDestinationNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of MediaStreamAudioSourceNode.connect(GainNode) matches the destination GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of MediaStreamAudioSourceNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of MediaStreamAudioSourceNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [media-group] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid-operation] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Connecting with an invalid output threw IndexSizeError: \"Failed to execute 'connect' on 'AudioNode': output index (1) exceeds number of outputs (1).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Connecting to a node from the different context threw InvalidAccessError: \"Failed to execute 'connect' on 'AudioNode': cannot connect to a destination belonging to a different audio context.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid-operation] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [verification] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The output of chained connection of gain nodes contains only the constant 0.125.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [verification] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/panner-distance-clamping.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [ref-distance-error] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {refDistance: -1}) threw RangeError: \"Failed to construct 'PannerNode': The refDistance provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {refDistance: 0}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {refDistance: 5e-324}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.refDistance = -1 threw RangeError: \"Failed to set the 'refDistance' property on 'PannerNode': The refDistance provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.refDistance = 0 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.refDistance = 5e-324 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [ref-distance-error] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [max-distance-error] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {maxDistance: -1}) threw RangeError: \"Failed to construct 'PannerNode': The maxDistance provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {maxDistance: 0}) threw RangeError: \"Failed to construct 'PannerNode': The maxDistance provided (0) is less than or equal to the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {maxDistance: 5e-324}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.maxDistance = -1 threw RangeError: \"Failed to set the 'maxDistance' property on 'PannerNode': The maxDistance provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.maxDistance = 0 threw RangeError: \"Failed to set the 'maxDistance' property on 'PannerNode': The maxDistance provided (0) is less than or equal to the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.maxDistance = 5e-324 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [max-distance-error] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [min-distance] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: linear: Distance (0.01) is outside the range [1, 10000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":0.01,\"distanceModel\":\"linear\"} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: exponential: Distance (0.01) is outside the range [1, 10000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":0.01,\"distanceModel\":\"exponential\"} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: inverse: Distance (0.01) is outside the range [1, 10000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":0.01,\"distanceModel\":\"inverse\"} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: linear: Distance (2) is outside the range [10, 1000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":2,\"distanceModel\":\"linear\",\"maxDistance\":1000,\"refDistance\":10} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: exponential: Distance (2) is outside the range [10, 1000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":2,\"distanceModel\":\"exponential\",\"maxDistance\":1000,\"refDistance\":10} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: inverse: Distance (2) is outside the range [10, 1000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":2,\"distanceModel\":\"inverse\",\"maxDistance\":1000,\"refDistance\":10} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [min-distance] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [max-distance] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: linear: Distance (20000) is outside the range [1, 10000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":20000,\"distanceModel\":\"linear\"} is identical to the array [0,0.10351099818944931,0.23690398037433624,-0.11514918506145477,-0.20979724824428558,-0.012793904170393944,0.02143995463848114,0.2256566733121872,0.07854988425970078,-0.24533405900001526,-0.08270072191953659,0.00010938305058516562,0.12551124393939972,0.22276803851127625,-0.14864866435527802,-0.19098909199237823...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: exponential: Distance (21000) is outside the range [1, 10000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":21000,\"distanceModel\":\"exponential\"} is identical to the array [0,0.0014285874785855412,0.0032695855479687452,-0.0015892097726464272,-0.002895476995036006,-0.0001765726483426988,0.0002958994882646948,0.0031143580563366413,0.0010840913746505976,-0.003385931719094515,-0.0011413784231990576,0.0000015096295555849792,0.001732219709083438,0.0030744909308850765,-0.002051546471193433,-0.002635899931192398...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: inverse: Distance (23000) is outside the range [1, 10000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":23000,\"distanceModel\":\"inverse\"} is identical to the array [0,0.000018001130229094997,0.000041198902181349695,-0.000020025074263685383,-0.000036484892916632816,-0.000002224930085503729,0.0000037285258258634713,0.000039242931961780414,0.00001366025571769569,-0.00004266493851901032,-0.000014382108929567039,1.9022312613969916e-8,0.00002182709431508556,0.00003874058529618196,-0.00002585081892902963,-0.000033214051654795185...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: linear: Distance (5000) is outside the range [10, 1000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":5000,\"distanceModel\":\"linear\",\"maxDistance\":1000,\"refDistance\":10} is identical to the array [0,0.10351099818944931,0.23690398037433624,-0.11514918506145477,-0.20979724824428558,-0.012793904170393944,0.02143995463848114,0.2256566733121872,0.07854988425970078,-0.24533405900001526,-0.08270072191953659,0.00010938305058516562,0.12551124393939972,0.22276803851127625,-0.14864866435527802,-0.19098909199237823...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: exponential: Distance (5000) is outside the range [10, 1000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":5000,\"distanceModel\":\"exponential\",\"maxDistance\":1000,\"refDistance\":10} is identical to the array [0,0.00925830565392971,0.021189337596297264,-0.0102992570027709,-0.018764836713671684,-0.0011443216353654861,0.001917647896334529,0.020183347165584564,0.007025715429335833,-0.0219433456659317,-0.007396977860480547,0.000009783518180483952,0.011226067319512367,0.019924979656934738,-0.013295541517436504,-0.017082585021853447...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Model: inverse: Distance (5000) is outside the range [10, 1000] is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test panner output {\"distance\":5000,\"distanceModel\":\"inverse\",\"maxDistance\":1000,\"refDistance\":10} is identical to the array [0,0.0008264351054094732,0.0018914489774033427,-0.000919354788493365,-0.0016750278882682323,-0.00010214693611487746,0.00017117727838922292,0.0018016500398516655,0.0006271447637118399,-0.0019587548449635506,-0.0006602851790376008,8.733177878639253e-7,0.0010020857444033027,0.0017785871168598533,-0.0011868156725540757,-0.0015248629497364163...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [max-distance] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/audioparam-method-chaining.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [from-dictionary] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AudioParam.setValueAtTime() matches the source AudioParam is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AudioParam.linearRampToValueAtTime() matches the source AudioParam is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AudioParam.exponentialRampToValueAtTime() matches the source AudioParam is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AudioParam.setTargetAtTime() matches the source AudioParam is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AudioParam.setValueCurveAtTime() matches the source AudioParam is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The return value of AudioParam.cancelScheduledValues() matches the source AudioParam is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [from-dictionary] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid-operation] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Calling setValueAtTime() with a negative end time threw RangeError: \"Failed to execute 'setValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Calling exponentialRampToValueAtTime() with a zero target value threw RangeError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The gain value of the first gain node is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The gain value of the second gain node is equal to 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid-operation] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [verification] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The rendered envelope equals [0,0.000125,0.00025,0.000375,0.0005,0.000625,0.00075,0.000875,0.001,0.001125,0.00125,0.001375,0.0015,0.001625,0.00175,0.001875...] with an element-wise tolerance of {\"absoluteThreshold\":0.0000040532,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [verification] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-construction.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [construction-before-module-loading] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Creating a node before loading a module should throw. threw InvalidStateError: \"Failed to construct 'AudioWorkletNode': AudioWorkletNode cannot be created: AudioWorklet does not have a valid AudioWorkletGlobalScope. Load a script via audioWorklet.addModule() first.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [construction-before-module-loading] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [construction-after-module-loading] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  \"dummyWorkletNode\" is an instance of AudioWorkletNode is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Unregistered name \"foobar\" must throw an exception. threw InvalidStateError: \"Failed to construct 'AudioWorkletNode': AudioWorkletNode cannot be created: The node name 'foobar' is not defined in AudioWorkletGlobalScope.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [construction-after-module-loading] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-analysernode-interface/ctor-analyser.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode() threw TypeError: \"Failed to construct 'AnalyserNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(1) threw TypeError: \"Failed to construct 'AnalyserNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(context, 42) threw TypeError: \"Failed to construct 'AnalyserNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new AnalyserNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof AnalyserNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.fftSize is equal to 2048.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.frequencyBinCount is equal to 1024.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.minDecibels is equal to -100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.maxDecibels is equal to -30.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.smoothingTimeConstant is equal to 0.8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelCount: 17}} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelCount: 0}) threw NotSupportedError: \"Failed to construct 'AnalyserNode': The channel count provided (0) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelCount: 99}) threw NotSupportedError: \"Failed to construct 'AnalyserNode': The channel count provided (99) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelCountMode: \"max\"} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelCountMode: \"max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelCountMode: \"clamped-max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelCountMode: \"explicit\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelCountMode: \"foobar\"} threw TypeError: \"Failed to construct 'AnalyserNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after invalid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelInterpretation: \"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelInterpretation: \"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelInterpretation: \"foobar\"}) threw TypeError: \"Failed to construct 'AnalyserNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation after invalid setter is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 20 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor with options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new AnalyserNode(c, {\"fftSize\":32,\"maxDecibels\":1,\"minDecibels\":-13,\"smoothingTimeConstant\":0.125}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 instanceof AnalyserNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.fftSize is equal to 32.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.maxDecibels is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.minDecibels is equal to -13.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.smoothingTimeConstant is equal to 0.125.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor with options] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [construct invalid options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, { fftSize: 33 }) threw IndexSizeError: \"Failed to construct 'AnalyserNode': The value provided (33) is not a power of two.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, { maxDecibels: -500 }) threw IndexSizeError: \"Failed to construct 'AnalyserNode': maxDecibels (-500) must be greater than or equal to minDecibels ( -100).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, { minDecibels: -10 }) threw IndexSizeError: \"Failed to construct 'AnalyserNode': maxDecibels (-30) must be greater than or equal to minDecibels ( -10).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, { smoothingTimeConstant: 2 }) threw IndexSizeError: \"Failed to construct 'AnalyserNode': The smoothing value provided (2) is outside the range [0, 1].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, { frequencyBinCount: 33 }) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.frequencyBinCount is equal to 1024.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [construct invalid options] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [setting min/max] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, {\"minDecibels\":-10,\"maxDecibels\":20}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, {\"maxDecibels\":20,\"minDecibels\":-10}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, {\"minDecibels\":-200,\"maxDecibels\":-150}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, {\"maxDecibels\":-150,\"minDecibels\":-200}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, {\"maxDecibels\":-150,\"minDecibels\":-10}) threw IndexSizeError: \"Failed to construct 'AnalyserNode': maxDecibels (-150) must be greater than or equal to minDecibels ( -10).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, {\"minDecibels\":-10,\"maxDecibels\":-150}) threw IndexSizeError: \"Failed to construct 'AnalyserNode': maxDecibels (-150) must be greater than or equal to minDecibels ( -10).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [setting min/max] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 7 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Initialized values contains only the constant -1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [copyFrom-exceptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioBuffer.prototype.copyFromChannel does exist.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0: buffer = context.createBuffer(3, 16, context.sampleRate) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1: buffer.copyFromChannel(null, 0) threw TypeError: \"Failed to execute 'copyFromChannel' on 'AudioBuffer': parameter 1 is not of type 'Float32Array'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2: buffer.copyFromChannel(context, 0) threw TypeError: \"Failed to execute 'copyFromChannel' on 'AudioBuffer': parameter 1 is not of type 'Float32Array'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3: buffer.copyFromChannel(x, -1) threw IndexSizeError: \"Failed to execute 'copyFromChannel' on 'AudioBuffer': The channelNumber provided (-1) is outside the range [0, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4: buffer.copyFromChannel(x, 3) threw IndexSizeError: \"Failed to execute 'copyFromChannel' on 'AudioBuffer': The channelNumber provided (3) is outside the range [0, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  5: buffer.copyFromChannel(x, 0, -1) threw IndexSizeError: \"Failed to execute 'copyFromChannel' on 'AudioBuffer': The startInChannel provided (4294967295) is outside the range [0, 16).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  6: buffer.copyFromChannel(x, 0, 16) threw IndexSizeError: \"Failed to execute 'copyFromChannel' on 'AudioBuffer': The startInChannel provided (16) is outside the range [0, 16).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  7: buffer.copyFromChannel(x, 3) threw IndexSizeError: \"Failed to execute 'copyFromChannel' on 'AudioBuffer': The channelNumber provided (3) is outside the range [0, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  8: buffer.copyFromChannel(SharedArrayBuffer view, 0) threw TypeError: \"Failed to execute 'copyFromChannel' on 'AudioBuffer': The provided ArrayBufferView value must not be shared.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  9: buffer.copyFromChannel(SharedArrayBuffer view, 0, 0) threw TypeError: \"Failed to execute 'copyFromChannel' on 'AudioBuffer': The provided ArrayBufferView value must not be shared.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [copyFrom-exceptions] All assertions passed. (total 11 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [copyTo-exceptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioBuffer.prototype.copyToChannel does exist.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0: buffer.copyToChannel(null, 0) threw TypeError: \"Failed to execute 'copyToChannel' on 'AudioBuffer': parameter 1 is not of type 'Float32Array'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1: buffer.copyToChannel(context, 0) threw TypeError: \"Failed to execute 'copyToChannel' on 'AudioBuffer': parameter 1 is not of type 'Float32Array'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2: buffer.copyToChannel(x, -1) threw IndexSizeError: \"Failed to execute 'copyToChannel' on 'AudioBuffer': The channelNumber provided (-1) is outside the range [0, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3: buffer.copyToChannel(x, 3) threw IndexSizeError: \"Failed to execute 'copyToChannel' on 'AudioBuffer': The channelNumber provided (3) is outside the range [0, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4: buffer.copyToChannel(x, 0, -1) threw IndexSizeError: \"Failed to execute 'copyToChannel' on 'AudioBuffer': The startInChannel provided (4294967295) is outside the range [0, 16).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  5: buffer.copyToChannel(x, 0, 16) threw IndexSizeError: \"Failed to execute 'copyToChannel' on 'AudioBuffer': The startInChannel provided (16) is outside the range [0, 16).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  6: buffer.copyToChannel(x, 3) threw IndexSizeError: \"Failed to execute 'copyToChannel' on 'AudioBuffer': The channelNumber provided (3) is outside the range [0, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  7: buffer.copyToChannel(SharedArrayBuffer view, 0) threw TypeError: \"Failed to execute 'copyToChannel' on 'AudioBuffer': The provided ArrayBufferView value must not be shared.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  8: buffer.copyToChannel(SharedArrayBuffer view, 0, 0) threw TypeError: \"Failed to execute 'copyToChannel' on 'AudioBuffer': The provided ArrayBufferView value must not be shared.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [copyTo-exceptions] All assertions passed. (total 10 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [copyFrom-validate] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst8, 0) is identical to the array [1,2,3,4,5,6,7,8].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst8, 1) is identical to the array [2,3,4,5,6,7,8,9].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst8, 2) is identical to the array [3,4,5,6,7,8,9,10].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst8, 0, 1) is identical to the array [2,3,4,5,6,7,8,9].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst8, 1, 1) is identical to the array [3,4,5,6,7,8,9,10].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst8, 2, 1) is identical to the array [4,5,6,7,8,9,10,11].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst8, 0, 11) is identical to the array [12,13,14,15,16,-1,-1,-1].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst8, 1, 11) is identical to the array [13,14,15,16,17,-1,-1,-1].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst8, 2, 11) is identical to the array [14,15,16,17,18,-1,-1,-1].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst26, 0) is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst26, 1) is identical to the array [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyFromChannel(dst26, 2) is identical to the array [3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [copyFrom-validate] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [copyTo-validate] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer = createConstantBuffer(context, 16, [-1,-1,-1]) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyToChannel(src, 0) is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyToChannel(src, 1) is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyToChannel(src, 2) is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyToChannel(src10, 0) is identical to the array [1,2,3,4,5,6,7,8,9,10,-1,-1,-1,-1,-1,-1...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyToChannel(src10, 1) is identical to the array [1,2,3,4,5,6,7,8,9,10,-1,-1,-1,-1,-1,-1...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyToChannel(src10, 2) is identical to the array [1,2,3,4,5,6,7,8,9,10,-1,-1,-1,-1,-1,-1...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyToChannel(src10, 0, 5) is identical to the array [-1,-1,-1,-1,-1,1,2,3,4,5,6,7,8,9,10,-1...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyToChannel(src10, 1, 5) is identical to the array [-1,-1,-1,-1,-1,1,2,3,4,5,6,7,8,9,10,-1...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.copyToChannel(src10, 2, 5) is identical to the array [-1,-1,-1,-1,-1,1,2,3,4,5,6,7,8,9,10,-1...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [copyTo-validate] All assertions passed. (total 10 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Biquad frequency response",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finite values in magnitude response is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finte values in phase response is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finite values in the expected magnitude response is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finite values in expected phase response is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Actual and expected results contained only finite values is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error (-119.17761387118809 dB) of magnitude response at frequency 1128 Hz is less than or equal to -119.17759642805565.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error (0.0000037083940022340564 deg) in phase response at frequency 864 Hz is less than or equal to 0.0000037084120332047404.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [getFrequencyResponse] Test out-of-bounds frequency values",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Magnitude response at frequency -1 is NaN.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Magnitude response at frequency 22051 is NaN.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Phase response at frequency -1 is NaN.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Phase response at frequency 22051 is NaN.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [getFrequencyResponse] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiosource-onended.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [absn-set-onended] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioBufferSource.onended called when ended set directly is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [absn-set-onended] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [absn-add-listener] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioBufferSource.onended called when using addEventListener is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [absn-add-listener] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [osc-set-onended] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Oscillator.onended called when ended set directly is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [osc-set-onended] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [osc-add-listener] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Oscillator.onended called when using addEventListener is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [osc-add-listener] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-reuse.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "AudioBuffer can be reused between AudioBufferSourceNodes",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/k-rate-biquad.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Biquad k-rate AudioParams (all)] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: Setting Q.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: Setting detune.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: Setting frequency.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: Setting gain.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: k-rate node: frequency.setValueAtTime(350,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: k-rate node: frequency.linearRampToValueAtTime(0,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: a-rate node:frequency.setValueAtTime(350,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: a-rate node:frequency.linearRampToValueAtTime(0,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: Output of k-rate BiquadFilterNode is identical to the array [0,0.005672732833772898,0.031761396676301956,0.09152887761592865,0.18822026252746582,0.3152909576892853,0.45802366733551025,0.596236526966095,0.7076704502105713,0.7715811133384705,0.7720549702644348,0.7006209492683411,0.5578281879425049,0.3535984456539154,0.10631734877824783,-0.15921233594417572...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: Output of a-rate BiquadFilterNode is identical to the array [0,0.005671397782862186,0.031749188899993896,0.09148305654525757,0.1881098747253418,0.3150883913040161,0.45771944522857666,0.5958530902862549,0.7072707414627075,0.7712685465812683,0.7719634175300598,0.7008947134017944,0.5585950016975403,0.3549392521381378,0.10823862254619598,-0.15679840743541718...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: Difference between a-rate and k-rate BiquadFilterNode is not constantly 0 (contains 7999 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Biquad k-rate AudioParams (all)] All assertions passed. (total 11 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Biquad k-rate Q] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate Q: Setting Q.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate Q: k-rate node: Q.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate Q: k-rate node: Q.linearRampToValueAtTime(10,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate Q: a-rate node:Q.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate Q: a-rate node:Q.linearRampToValueAtTime(10,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate Q: Output of k-rate BiquadFilterNode is identical to the array [0,0.3906746506690979,0.8280417323112488,1.2371118068695068,1.5446836948394775,1.6899588108062744,1.6333708763122559,1.3625402450561523,0.8945979475975037,0.27460309863090515,-0.429720014333725,-1.1362684965133667,-1.758806824684143,-2.2179055213928223,-2.4511797428131104,-2.4215500354766846...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate Q: Output of a-rate BiquadFilterNode is identical to the array [0,0.3906204402446747,0.8277556896209717,1.236454725265503,1.5436350107192993,1.6886674165725708,1.6321626901626587,1.361878514289856,0.8950015306472778,0.27653712034225464,-0.42596039175987244,-1.1306581497192383,-1.7516529560089111,-2.2098560333251953,-2.443169593811035,-2.414689540863037...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate Q: Difference between a-rate and k-rate BiquadFilterNode is not constantly 0 (contains 7999 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Biquad k-rate Q] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Biquad k-rate detune] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate detune: Setting detune.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate detune: k-rate node: detune.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate detune: k-rate node: detune.linearRampToValueAtTime(1200,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate detune: a-rate node:detune.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate detune: a-rate node:detune.linearRampToValueAtTime(1200,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate detune: Output of k-rate BiquadFilterNode is identical to the array [0,0.3906746506690979,0.8280417323112488,1.2371118068695068,1.5446836948394775,1.6899588108062744,1.6333708763122559,1.3625402450561523,0.8945979475975037,0.27460309863090515,-0.429720014333725,-1.1362684965133667,-1.758806824684143,-2.2179055213928223,-2.4511797428131104,-2.4215500354766846...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate detune: Output of a-rate BiquadFilterNode is identical to the array [0,0.390678733587265,0.8280619978904724,1.237152099609375,1.544729232788086,1.6899703741073608,1.6332865953445435,1.3622863292694092,0.8941071629524231,0.2738376557826996,-0.43074584007263184,-1.1374714374542236,-1.7600282430648804,-2.2189197540283203,-2.4517171382904053,-2.421334981918335...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate detune: Difference between a-rate and k-rate BiquadFilterNode is not constantly 0 (contains 7999 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Biquad k-rate detune] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Biquad k-rate frequency] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate frequency: Setting frequency.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate frequency: k-rate node: frequency.setValueAtTime(350,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate frequency: k-rate node: frequency.linearRampToValueAtTime(0,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate frequency: a-rate node:frequency.setValueAtTime(350,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate frequency: a-rate node:frequency.linearRampToValueAtTime(0,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate frequency: Output of k-rate BiquadFilterNode is identical to the array [0,0.3906746506690979,0.8280417323112488,1.2371118068695068,1.5446836948394775,1.6899588108062744,1.6333708763122559,1.3625402450561523,0.8945979475975037,0.27460309863090515,-0.429720014333725,-1.1362684965133667,-1.758806824684143,-2.2179055213928223,-2.4511797428131104,-2.4215500354766846...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate frequency: Output of a-rate BiquadFilterNode is identical to the array [0,0.3906687796115875,0.8280125260353088,1.237053632736206,1.5446178913116455,1.6899420022964478,1.633492350578308,1.3629063367843628,0.8953056931495667,0.2757072150707245,-0.4282398223876953,-1.1345319747924805,-1.7570421695709229,-2.216438055038452,-2.4503977298736572,-2.4218509197235107...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate frequency: Difference between a-rate and k-rate BiquadFilterNode is not constantly 0 (contains 7999 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Biquad k-rate frequency] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Biquad k-rate gain] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate gain: Setting gain.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate gain: k-rate node: gain.setValueAtTime(10,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate gain: k-rate node: gain.linearRampToValueAtTime(0,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate gain: a-rate node:gain.setValueAtTime(10,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate gain: a-rate node:gain.linearRampToValueAtTime(0,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate gain: Output of k-rate BiquadFilterNode is identical to the array [0,0.3906746506690979,0.8280417323112488,1.2371118068695068,1.5446836948394775,1.6899588108062744,1.6333708763122559,1.3625402450561523,0.8945979475975037,0.27460309863090515,-0.429720014333725,-1.1362684965133667,-1.758806824684143,-2.2179055213928223,-2.4511797428131104,-2.4215500354766846...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate gain: Output of a-rate BiquadFilterNode is identical to the array [0,0.390667200088501,0.8279994130134583,1.237004280090332,1.5444908142089844,1.6896843910217285,1.633053183555603,1.3622560501098633,0.8944581151008606,0.2747383117675781,-0.42918142676353455,-1.1352277994155884,-1.7572228908538818,-2.215818166732788,-2.448723077774048,-2.4189529418945312...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate gain: Difference between a-rate and k-rate BiquadFilterNode is not constantly 0 (contains 7999 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Biquad k-rate gain] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-stereopanner-interface/stereopannernode-panning.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [mono-test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono: Number of impulses found is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono: Number of impulse at the wrong offset is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono: Left channel error magnitude is less than or equal to 0.0000013.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono: Right channel error magnitude is less than or equal to 0.0000013.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [mono-test] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [stereo-test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo: Number of impulses found is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo: Number of impulse at the wrong offset is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo: Left channel error magnitude is less than or equal to 0.0000013.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo: Right channel error magnitude is less than or equal to 0.0000013.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [stereo-test] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-analysernode-interface/test-analyser-minimum.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": []
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/k-rate-stereo-panner.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test k-rate StereoPannerNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  StereoPannerNode: Setting pan.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  StereoPannerNode: k-rate node: pan.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  StereoPannerNode: k-rate node: pan.linearRampToValueAtTime(0.5,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  StereoPannerNode: a-rate node:pan.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  StereoPannerNode: a-rate node:pan.linearRampToValueAtTime(0.5,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  StereoPannerNode: Output of k-rate StereoPannerNode is identical to the array [0,0.23952363431453705,0.4507264196872711,0.6086363196372986,0.6945812106132507,0.698400616645813,0.6196419596672058,0.4676174819469452,0.2603031098842621,0.022210577502846718,-0.2185078114271164,-0.433390736579895,-0.5970295071601868,-0.6900766491889954,-0.7015309929847717,-0.630035936832428...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  StereoPannerNode: Output of a-rate StereoPannerNode is identical to the array [0,0.23952363431453705,0.45072638988494873,0.6086363196372986,0.6945812106132507,0.6984005570411682,0.619641900062561,0.4676174521446228,0.2603030800819397,0.02221057564020157,-0.218507781624794,-0.43339067697525024,-0.5970293879508972,-0.6900765299797058,-0.7015308141708374,-0.6300357580184937...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  StereoPannerNode: Difference between a-rate and k-rate StereoPannerNode is not constantly 0 (contains 7960 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test k-rate StereoPannerNode] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode() threw TypeError: \"Failed to construct 'DynamicsCompressorNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(1) threw TypeError: \"Failed to construct 'DynamicsCompressorNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(context, 42) threw TypeError: \"Failed to construct 'DynamicsCompressorNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new DynamicsCompressorNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof DynamicsCompressorNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.threshold.value is equal to -24.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.knee.value is equal to 30.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.ratio.value is equal to 12.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.reduction is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.attack.value is equal to 0.003000000026077032.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.release.value is equal to 0.25.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 13 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelCount\":1}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelCount\":2}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelCount\":0}) threw NotSupportedError: \"Failed to construct 'DynamicsCompressorNode': The channelCount provided (0) is outside the range [1, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelCount\":3}) threw NotSupportedError: \"Failed to construct 'DynamicsCompressorNode': The channelCount provided (3) is outside the range [1, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelCount\":99}) threw NotSupportedError: \"Failed to construct 'DynamicsCompressorNode': The channelCount provided (99) is outside the range [1, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelCountMode\":\"clamped-max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelCountMode\":\"explicit\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelCountMode\":\"max\"}) threw NotSupportedError: \"Failed to construct 'DynamicsCompressorNode': The provided value 'max' is not an allowed value for ChannelCountMode\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelCountMode\":\"foobar\"}) threw TypeError: \"Failed to construct 'DynamicsCompressorNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelInterpretation\":\"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelInterpretation\":\"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelInterpretation\":\"foobar\"}) threw TypeError: \"Failed to construct 'DynamicsCompressorNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 18 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor with options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new DynamicsCompressorNode(c, {\"threshold\":-33,\"knee\":15,\"ratio\":7,\"attack\":0.625,\"release\":0.125}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 instanceof DynamicsCompressorNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.threshold.value is equal to -33.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.knee.value is equal to 15.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.ratio.value is equal to 7.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.attack.value is equal to 0.625.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.release.value is equal to 0.125.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelCountMode is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor with options] All assertions passed. (total 10 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-disconnect.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [silent-disconnect] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #0 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #1 contains all the expected values in the correct order: [1,0].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The index of first zero in the channel #1 is equal to 11008.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [silent-disconnect] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Create Test Worklet] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Construction of AudioWorklet resolved correctly.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Create Test Worklet] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [AudioWorklet k-rate AudioParam] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "   k-rate output [0: 127] contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "   k-rate output [128: 255] contains only the constant 2.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "   k-rate output [256: 383] contains only the constant 5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "   k-rate output [384: 511] contains only the constant 7.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [AudioWorklet k-rate AudioParam] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test 0] No dezippering for frequency",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0, frequency is equal to 350.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0.015625, frequency is equal to 800.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0.0546875, frequency is equal to 200.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output from frequency setter equals [0,0.17418302595615387,0.3552042841911316,0.5364867448806763,0.7114058136940002,0.873506486415863,1.0167137384414673,1.1355278491973877,1.2252023220062256,1.2818958759307861,1.3027966022491455,1.2862135171890259,1.2316334247589111,1.13974130153656,1.0124047994613647,0.8526217341423035...] with an element-wise tolerance of {\"absoluteThreshold\":0.0000030399,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output from frequency setter matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test 0] All assertions passed. (total 5 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test 1] No dezippering for detune",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0, detune is equal to 33.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0.015625, detune is equal to 1000.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0.0390625, detune is equal to -400.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output from detune setter equals [0,0.1731615662574768,0.3515752851963043,0.5295105576515198,0.7010408043861389,0.8602387309074402,1.0013757944107056,1.1191174983978271,1.2087109088897705,1.266155481338501,1.2883533239364624,1.2732324600219727,1.2198400497436523,1.128400444984436,1.0003379583358765,0.8382604718208313...] with an element-wise tolerance of {\"absoluteThreshold\":0.0000040532,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output from detune setter matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test 1] All assertions passed. (total 5 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test 2] No dezippering for Q",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0, Q is equal to 5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0.015625, Q is equal to 10.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0.0625, Q is equal to -10.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output from Q setter equals [0,0.1679382622241974,0.3311063051223755,0.4848693013191223,0.6248595714569092,0.7471005916595459,0.8481203317642212,0.9250491857528687,0.9757021069526672,0.9986401796340942,0.9932119250297546,0.9595714807510376,0.898674488067627,0.812250554561615,0.7027547359466553,0.5732971429824829...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output from Q setter matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test 2] All assertions passed. (total 5 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test 3] No dezippering for gain",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0, gain is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0.015625, gain is equal to 5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  At time 0.046875, gain is equal to -0.3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output from gain setter equals [0,0.1691557615995407,0.3357764184474945,0.4948003888130188,0.6413880586624146,0.7710639238357544,0.8798481225967407,0.9643720388412476,1.0219770669937134,1.050791621208191,1.04978609085083,1.0188024044036865,0.9585589170455933,0.8706295490264893,0.7573990821838379,0.6219937205314636...] with an element-wise tolerance of {\"absoluteThreshold\":0.0000019074,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output from gain setter matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test 3] All assertions passed. (total 5 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test 4] No dezippering of frequency vs JS filter",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output from lowpass filter equals [0,0.0007127507124096155,0.004163934849202633,0.012737087905406952,0.02830198034644127,0.05216708034276962,0.08505349606275558,0.12709031999111176,0.17783068120479584,0.23628735542297363,0.30098608136177063,0.37003442645072937,0.44120359420776367,0.5120201706886292,0.5798648595809937,0.6420747637748718...] with an element-wise tolerance of {\"absoluteThreshold\":4.7684e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output matches JS filter results is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test 4] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test 5] Test with modulation",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Modulation: At time 0, frequency is equal to 350.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Modulation: At time 0.015625, frequency is equal to 10.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Modulation: At time 0.0625, frequency is equal to -10.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Modulation: Output from frequency setter equals [0,0.16927161812782288,0.3364819586277008,0.4967540204524994,0.6454269886016846,0.7780186533927917,0.8904149532318115,0.9789472222328186,1.0408990383148193,1.0747627019882202,1.0793930292129517,1.0543287992477417,1.0000861883163452,0.9177318811416626,0.8092702627182007,0.6773739457130432...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Modulation: Output from frequency setter matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test 5] All assertions passed. (total 5 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/distance-linear.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Linear distance model PannerNode",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.7071067690849304 is 0.7071067811865476 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.7000356912612915 is 0.7000357133746821 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.6929646730422974 is 0.6929646455628166 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.6858935952186584 is 0.6858935777509512 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.6788224577903748 is 0.6788225099390857 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.6717514395713806 is 0.6717514421272202 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.6646803617477417 is 0.6646803743153548 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.6576092839241028 is 0.6576093065034893 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.6505382657051086 is 0.6505382386916237 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.6434671878814697 is 0.6434671708797584 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.636396050453186 is 0.6363961030678928 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.6293250322341919 is 0.6293250352560273 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.622253954410553 is 0.6222539674441618 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.6151828765869141 is 0.6151828996322963 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.6081118583679199 is 0.6081118318204309 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.601040780544281 is 0.6010407640085654 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5939696431159973 is 0.5939696961966999 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5868986248970032 is 0.5868986283848345 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5798275470733643 is 0.579827560572969 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5727564692497253 is 0.5727564927611035 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5656854510307312 is 0.5656854249492381 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5586143732070923 is 0.5586143571373726 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5515432357788086 is 0.5515432893255071 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5444722175598145 is 0.5444722215136416 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5374011397361755 is 0.5374011537017762 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5303300619125366 is 0.5303300858899107 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5232590436935425 is 0.5232590180780452 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5161879658699036 is 0.5161879502661797 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5091168880462646 is 0.5091168824543142 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.5020458102226257 is 0.5020458146424488 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.4949747323989868 is 0.4949747468305833 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.4879036545753479 is 0.4879036790187178 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.48083260655403137 is 0.4808326112068523 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.47376155853271484 is 0.4737615433949869 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.4666904807090759 is 0.46669047558312143 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.4596194326877594 is 0.45961940777125593 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.4525483250617981 is 0.4525483399593905 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.4454772472381592 is 0.445477272147525 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.43840619921684265 is 0.43840620433565947 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.4313351511955261 is 0.43133513652379407 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.4242640435695648 is 0.4242640687119286 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.4171930253505707 is 0.41719300090006306 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.4101219177246094 is 0.41012193308819767 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.40305083990097046 is 0.40305086527633216 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.39597979187965393 is 0.39597979746446665 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.3889087438583374 is 0.3889087296526012 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.3818376660346985 is 0.3818376618407357 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.37476661801338196 is 0.37476659402887025 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.36769551038742065 is 0.36769552621700474 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.3606244921684265 is 0.3606244584051393 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.3535533845424652 is 0.3535533905932738 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.3464823067188263 is 0.3464823227814083 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.3394112288951874 is 0.3394112549695429 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.33234015107154846 is 0.33234018715767744 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.3252691328525543 is 0.3252691193458119 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.318198025226593 is 0.3181980515339465 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.3111269772052765 is 0.311126983722081 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.3040558993816376 is 0.30405591591021547 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.29698485136032104 is 0.29698484809835 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.28991377353668213 is 0.2899137802864845 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.2828427255153656 is 0.28284271247461906 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.2757716178894043 is 0.27577164466275356 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.26870059967041016 is 0.2687005768508881 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.26162949204444885 is 0.2616295090390226 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.2545584440231323 is 0.2545584412271571 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.2474873661994934 is 0.2474873734152917 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.24041630327701569 is 0.24041630560342622 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.23334522545337677 is 0.23334523779156066 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.22627417743206024 is 0.22627416997969527 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.21920309960842133 is 0.2192031021678298 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.2121320366859436 is 0.2121320343559643 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.2050609588623047 is 0.20506096654409883 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.19798991084098816 is 0.19798989873223333 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.19091883301734924 is 0.19091883092036785 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.18384777009487152 is 0.18384776310850245 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.1767766922712326 is 0.1767766952966369 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.1697056144475937 is 0.16970562748477142 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.16263456642627716 is 0.16263455967290602 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.15556347370147705 is 0.15556349186104051 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.14849242568016052 is 0.14849242404917495 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.1414213329553604 is 0.14142135623730956 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.13435029983520508 is 0.13435028842544408 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.12727925181388855 is 0.12727922061357852 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.12020815163850784 is 0.12020815280171311 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.11313706636428833 is 0.11313708498984763 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.10606598854064941 is 0.10606601717798216 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.09899497032165527 is 0.09899494936611666 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.09192388504743576 is 0.09192388155425127 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.08485280722379684 is 0.08485281374238579 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.07778171449899673 is 0.0777817459305203 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.07071070373058319 is 0.07071067811865474 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.06363962590694427 is 0.06363961030678926 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.056568533182144165 is 0.056568542494923775 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.04949745163321495 is 0.04949747468305837 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.04242643713951111 is 0.042426406871192895 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.035355351865291595 is 0.03535533905932741 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.028284266591072083 is 0.028284271247462005 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.021213185042142868 is 0.021213203435596524 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.014142167754471302 is 0.014142135623731043 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.007071083877235651 is 0.007071067811865482 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of impulses is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error in distance gains is less than or equal to 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 102 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Biquad highpass filter",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of filters tested is equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finite values in the rendered output is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error in Highpass filter response is less than or equal to 1.5487e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowshelf.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Biquad lowshelf filter",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of filters tested is equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finite values in the rendered output is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error in Lowshelf filter response is less than or equal to 3.8349e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-constantsourcenode-interface/constant-source-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [createConstantSource()] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Factory method: node = context.createConstantSource() did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Factory method: node instance of ConstantSourceNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Factory method: node.numberOfInputs is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Factory method: node.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Factory method: node.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Factory method: node.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Factory method: node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Factory method: node.offset.value is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Factory method: node.offset.defaultValue is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Factory method: node.offset.minValue is equal to -3.4028234663852886e+38.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Factory method: node.offset.maxValue is equal to 3.4028234663852886e+38.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [createConstantSource()] All assertions passed. (total 11 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [new ConstantSourceNode()] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Constructor: node = new ConstantSourceNode() did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Constructor: node instance of ConstantSourceNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Constructor: node.numberOfInputs is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Constructor: node.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Constructor: node.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Constructor: node.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Constructor: node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Constructor: node.offset.value is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Constructor: node.offset.defaultValue is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Constructor: node.offset.minValue is equal to -3.4028234663852886e+38.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Constructor: node.offset.maxValue is equal to 3.4028234663852886e+38.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [new ConstantSourceNode()] All assertions passed. (total 11 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [start/stop exceptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(NaN) threw TypeError: \"Failed to execute 'start' on 'AudioScheduledSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(Infinity) threw TypeError: \"Failed to execute 'start' on 'AudioScheduledSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(-Infinity) threw TypeError: \"Failed to execute 'start' on 'AudioScheduledSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Calling stop() before start() threw InvalidStateError: \"Failed to execute 'stop' on 'AudioScheduledSourceNode': cannot call stop without calling start first.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(-1) threw RangeError: \"Failed to execute 'start' on 'AudioScheduledSourceNode': The start time provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Calling start() twice threw InvalidStateError: \"Failed to execute 'start' on 'AudioScheduledSourceNode': cannot call start more than once.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(-1) threw RangeError: \"Failed to execute 'stop' on 'AudioScheduledSourceNode': The stop time provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(NaN) threw TypeError: \"Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(Infinity) threw TypeError: \"Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(-Infinity) threw TypeError: \"Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [start/stop exceptions] All assertions passed. (total 10 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [FFT scaling tests] Test Scaling of FFT in AnalyserNode",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  32-point FFT peak position is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  32-point FFT peak value in dBFS is greater than or equal to -14.43.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  64-point FFT peak position is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  64-point FFT peak value in dBFS is greater than or equal to -13.56.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  128-point FFT peak position is equal to 4.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  128-point FFT peak value in dBFS is greater than or equal to -13.56.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  256-point FFT peak position is equal to 8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  256-point FFT peak value in dBFS is greater than or equal to -13.56.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  512-point FFT peak position is equal to 16.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  512-point FFT peak value in dBFS is greater than or equal to -13.56.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1024-point FFT peak position is equal to 32.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1024-point FFT peak value in dBFS is greater than or equal to -13.56.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2048-point FFT peak position is equal to 64.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2048-point FFT peak value in dBFS is greater than or equal to -13.56.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4096-point FFT peak position is equal to 128.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4096-point FFT peak value in dBFS is greater than or equal to -13.56.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  8192-point FFT peak position is equal to 256.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  8192-point FFT peak value in dBFS is greater than or equal to -13.56.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  16384-point FFT peak position is equal to 512.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  16384-point FFT peak value in dBFS is greater than or equal to -13.56.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  32768-point FFT peak position is equal to 1024.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  32768-point FFT peak value in dBFS is greater than or equal to -13.56.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [FFT scaling tests] All assertions passed. (total 22 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelay.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Basic functionality of DelayNode with a non-default max delay time",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Delaying test signal by 1.5 sec was done correctly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test connections] AudioNode connection order doesn't trigger assertion errors",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Connecting nodes did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  OfflineContext startRendering() resolved correctly.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test connections] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audionode-interface/audionode.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Basic tests for AudioNode API.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioBufferSource.numberOfInputs is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioBufferSource.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioContext.destination.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioContext.destination.numberOfOutputs is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  audioNode.connect(0, 0, 0) threw TypeError: \"Failed to execute 'connect' on 'AudioNode': parameter 1 is not of type 'AudioNode'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  audioNode.connect(null, 0, 0) threw TypeError: \"Failed to execute 'connect' on 'AudioNode': parameter 1 is not of type 'AudioNode'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  audioNode.connect(context.destination, 5, 0) threw IndexSizeError: \"Failed to execute 'connect' on 'AudioNode': output index (5) exceeds number of outputs (1).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  audioNode.connect(context.destination, 0, 5) threw IndexSizeError: \"Failed to execute 'connect' on 'AudioNode': input index (5) exceeds number of inputs (1).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  audioNode.connect(context.destination, 0, 0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Connecting a node to a different context threw InvalidAccessError: \"Failed to execute 'connect' on 'AudioNode': cannot connect to a destination belonging to a different audio context.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context3 = new AudioContext(1, 44100, 44100) threw TypeError: \"Failed to construct 'AudioContext': parameter 1 ('contextOptions') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioNode is an EventTarget is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/idlharness.https.window.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "idl_test setup",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: attribute destination",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: attribute sampleRate",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: attribute currentTime",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: attribute listener",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: attribute state",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: attribute audioWorklet",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: attribute onstatechange",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createAnalyser()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createBiquadFilter()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createBuffer(unsigned long, unsigned long, float)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createBufferSource()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createChannelMerger(unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createChannelSplitter(unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createConstantSource()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createConvolver()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createDelay(double)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createDynamicsCompressor()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createGain()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createIIRFilter([object Object], [object Object])",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createOscillator()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createPanner()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createScriptProcessor(unsigned long, unsigned long, unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createStereoPanner()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation createWaveShaper()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: operation decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: attribute baseLatency",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: attribute outputLatency",
          "status": "FAIL",
          "message": "assert_true: The prototype object must have a property \"outputLatency\" expected true got false"
        },
        {
          "name": "AudioContext interface: operation getOutputTimestamp()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: operation resume()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: operation suspend()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: operation close()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: operation createMediaElementSource(HTMLMediaElement)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: operation createMediaStreamSource(MediaStream)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: operation createMediaStreamTrackSource(MediaStreamTrack)",
          "status": "FAIL",
          "message": "assert_own_property: interface prototype object missing non-static operation expected property \"createMediaStreamTrackSource\" missing"
        },
        {
          "name": "AudioContext interface: operation createMediaStreamDestination()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext must be primary interface of context",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of context",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: context must inherit property \"baseLatency\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: context must inherit property \"outputLatency\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"outputLatency\" not found in prototype chain"
        },
        {
          "name": "AudioContext interface: context must inherit property \"getOutputTimestamp()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: context must inherit property \"resume()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: context must inherit property \"suspend()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: context must inherit property \"close()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: context must inherit property \"createMediaElementSource(HTMLMediaElement)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: calling createMediaElementSource(HTMLMediaElement) on context with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: context must inherit property \"createMediaStreamSource(MediaStream)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: calling createMediaStreamSource(MediaStream) on context with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioContext interface: context must inherit property \"createMediaStreamTrackSource(MediaStreamTrack)\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"createMediaStreamTrackSource\" not found in prototype chain"
        },
        {
          "name": "AudioContext interface: calling createMediaStreamTrackSource(MediaStreamTrack) on context with too few arguments must throw TypeError",
          "status": "FAIL",
          "message": "assert_inherits: property \"createMediaStreamTrackSource\" not found in prototype chain"
        },
        {
          "name": "AudioContext interface: context must inherit property \"createMediaStreamDestination()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"destination\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"sampleRate\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"currentTime\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"listener\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"state\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"audioWorklet\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"onstatechange\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createAnalyser()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createBiquadFilter()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createBuffer(unsigned long, unsigned long, float)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createBuffer(unsigned long, unsigned long, float) on context with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createBufferSource()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createChannelMerger(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createChannelMerger(unsigned long) on context with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createChannelSplitter(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createChannelSplitter(unsigned long) on context with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createConstantSource()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createConvolver()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createDelay(double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createDelay(double) on context with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createDynamicsCompressor()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createGain()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createIIRFilter([object Object], [object Object])\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createIIRFilter([object Object], [object Object]) on context with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createOscillator()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createPanner()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints) on context with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createScriptProcessor(unsigned long, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createScriptProcessor(unsigned long, unsigned long, unsigned long) on context with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createStereoPanner()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"createWaveShaper()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: context must inherit property \"decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback) on context with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: operation startRendering()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: operation resume()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: operation suspend(double)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: attribute length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: attribute oncomplete",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext must be primary interface of new OfflineAudioContext(1, 1, sample_rate)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new OfflineAudioContext(1, 1, sample_rate)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"startRendering()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"resume()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"suspend(double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: calling suspend(double) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"length\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"oncomplete\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"destination\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"sampleRate\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"currentTime\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"listener\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"state\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"audioWorklet\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"onstatechange\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createAnalyser()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createBiquadFilter()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createBuffer(unsigned long, unsigned long, float)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createBuffer(unsigned long, unsigned long, float) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createBufferSource()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createChannelMerger(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createChannelMerger(unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createChannelSplitter(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createChannelSplitter(unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createConstantSource()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createConvolver()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createDelay(double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createDelay(double) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createDynamicsCompressor()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createGain()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createIIRFilter([object Object], [object Object])\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createIIRFilter([object Object], [object Object]) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createOscillator()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createPanner()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createScriptProcessor(unsigned long, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling createScriptProcessor(unsigned long, unsigned long, unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createStereoPanner()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"createWaveShaper()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property \"decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BaseAudioContext interface: calling decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioCompletionEvent interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioCompletionEvent interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioCompletionEvent interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioCompletionEvent interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioCompletionEvent interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioCompletionEvent interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioCompletionEvent interface: attribute renderedBuffer",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioCompletionEvent must be primary interface of new OfflineAudioCompletionEvent(\"\", {renderedBuffer: buffer})",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new OfflineAudioCompletionEvent(\"\", {renderedBuffer: buffer})",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OfflineAudioCompletionEvent interface: new OfflineAudioCompletionEvent(\"\", {renderedBuffer: buffer}) must inherit property \"renderedBuffer\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: attribute sampleRate",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: attribute length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: attribute duration",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: attribute numberOfChannels",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: operation getChannelData(unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: operation copyFromChannel(Float32Array, unsigned long, unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: operation copyToChannel(Float32Array, unsigned long, unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer must be primary interface of buffer",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of buffer",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: buffer must inherit property \"sampleRate\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: buffer must inherit property \"length\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: buffer must inherit property \"duration\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: buffer must inherit property \"numberOfChannels\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: buffer must inherit property \"getChannelData(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: calling getChannelData(unsigned long) on buffer with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: buffer must inherit property \"copyFromChannel(Float32Array, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: calling copyFromChannel(Float32Array, unsigned long, unsigned long) on buffer with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: buffer must inherit property \"copyToChannel(Float32Array, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBuffer interface: calling copyToChannel(Float32Array, unsigned long, unsigned long) on buffer with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: operation connect(AudioNode, unsigned long, unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: operation connect(AudioParam, unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: operation disconnect()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: operation disconnect(unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: operation disconnect(AudioNode)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: operation disconnect(AudioNode, unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: operation disconnect(AudioNode, unsigned long, unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: operation disconnect(AudioParam)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: operation disconnect(AudioParam, unsigned long)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: attribute context",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: attribute numberOfInputs",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: attribute numberOfOutputs",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: attribute channelCount",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: attribute channelCountMode",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: attribute channelInterpretation",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: attribute value",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: attribute automationRate",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: attribute defaultValue",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: attribute minValue",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: attribute maxValue",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: operation setValueAtTime(float, double)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: operation linearRampToValueAtTime(float, double)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: operation exponentialRampToValueAtTime(float, double)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: operation setTargetAtTime(float, double, float)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: operation setValueCurveAtTime([object Object], double, double)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: operation cancelScheduledValues(double)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: operation cancelAndHoldAtTime(double)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam must be primary interface of new AudioBufferSourceNode(context).playbackRate",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new AudioBufferSourceNode(context).playbackRate",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"value\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"automationRate\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"defaultValue\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"minValue\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"maxValue\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"setValueAtTime(float, double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: calling setValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"linearRampToValueAtTime(float, double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: calling linearRampToValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"exponentialRampToValueAtTime(float, double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: calling exponentialRampToValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"setTargetAtTime(float, double, float)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: calling setTargetAtTime(float, double, float) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"setValueCurveAtTime([object Object], double, double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: calling setValueCurveAtTime([object Object], double, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"cancelScheduledValues(double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: calling cancelScheduledValues(double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property \"cancelAndHoldAtTime(double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParam interface: calling cancelAndHoldAtTime(double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: attribute onended",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: operation start(double)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: operation stop(double)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: operation getFloatFrequencyData(Float32Array)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: operation getByteFrequencyData(Uint8Array)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: operation getFloatTimeDomainData(Float32Array)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: operation getByteTimeDomainData(Uint8Array)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: attribute fftSize",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: attribute frequencyBinCount",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: attribute minDecibels",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: attribute maxDecibels",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: attribute smoothingTimeConstant",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode must be primary interface of new AnalyserNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new AnalyserNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: new AnalyserNode(context) must inherit property \"getFloatFrequencyData(Float32Array)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: calling getFloatFrequencyData(Float32Array) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: new AnalyserNode(context) must inherit property \"getByteFrequencyData(Uint8Array)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: calling getByteFrequencyData(Uint8Array) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: new AnalyserNode(context) must inherit property \"getFloatTimeDomainData(Float32Array)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: calling getFloatTimeDomainData(Float32Array) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: new AnalyserNode(context) must inherit property \"getByteTimeDomainData(Uint8Array)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: calling getByteTimeDomainData(Uint8Array) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: new AnalyserNode(context) must inherit property \"fftSize\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: new AnalyserNode(context) must inherit property \"frequencyBinCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: new AnalyserNode(context) must inherit property \"minDecibels\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: new AnalyserNode(context) must inherit property \"maxDecibels\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AnalyserNode interface: new AnalyserNode(context) must inherit property \"smoothingTimeConstant\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AnalyserNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: attribute buffer",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: attribute playbackRate",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: attribute detune",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: attribute loop",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: attribute loopStart",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: attribute loopEnd",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: operation start(double, double, double)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode must be primary interface of new AudioBufferSourceNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new AudioBufferSourceNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property \"buffer\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property \"playbackRate\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property \"detune\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property \"loop\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property \"loopStart\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property \"loopEnd\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property \"start(double, double, double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioBufferSourceNode interface: calling start(double, double, double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property \"onended\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property \"start(double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: calling start(double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property \"stop(double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: calling stop(double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new AudioBufferSourceNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioDestinationNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioDestinationNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioDestinationNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioDestinationNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioDestinationNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioDestinationNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioDestinationNode interface: attribute maxChannelCount",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioDestinationNode must be primary interface of context.destination",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of context.destination",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioDestinationNode interface: context.destination must inherit property \"maxChannelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on context.destination with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on context.destination with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on context.destination with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on context.destination with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on context.destination with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on context.destination with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on context.destination with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on context.destination with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.destination must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: attribute positionX",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: attribute positionY",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: attribute positionZ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: attribute forwardX",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: attribute forwardY",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: attribute forwardZ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: attribute upX",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: attribute upY",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: attribute upZ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: operation setPosition(float, float, float)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: operation setOrientation(float, float, float, float, float, float)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener must be primary interface of context.listener",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of context.listener",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"positionX\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"positionY\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"positionZ\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"forwardX\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"forwardY\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"forwardZ\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"upX\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"upY\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"upZ\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"setPosition(float, float, float)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: calling setPosition(float, float, float) on context.listener with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"setOrientation(float, float, float, float, float, float)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioListener interface: calling setOrientation(float, float, float, float, float, float) on context.listener with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface: attribute playbackTime",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface: attribute inputBuffer",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface: attribute outputBuffer",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent must be primary interface of new AudioProcessingEvent('', {\n        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n      })",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new AudioProcessingEvent('', {\n        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n      })",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface: new AudioProcessingEvent('', {\n        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n      }) must inherit property \"playbackTime\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface: new AudioProcessingEvent('', {\n        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n      }) must inherit property \"inputBuffer\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioProcessingEvent interface: new AudioProcessingEvent('', {\n        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n      }) must inherit property \"outputBuffer\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: attribute type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: attribute frequency",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: attribute detune",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: attribute Q",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: attribute gain",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: operation getFrequencyResponse(Float32Array, Float32Array, Float32Array)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode must be primary interface of new BiquadFilterNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new BiquadFilterNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property \"type\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property \"frequency\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property \"detune\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property \"Q\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property \"gain\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property \"getFrequencyResponse(Float32Array, Float32Array, Float32Array)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "BiquadFilterNode interface: calling getFrequencyResponse(Float32Array, Float32Array, Float32Array) on new BiquadFilterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new BiquadFilterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new BiquadFilterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new BiquadFilterNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelMergerNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelMergerNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelMergerNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelMergerNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelMergerNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelMergerNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelMergerNode must be primary interface of new ChannelMergerNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new ChannelMergerNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new ChannelMergerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new ChannelMergerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelMergerNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelSplitterNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelSplitterNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelSplitterNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelSplitterNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelSplitterNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelSplitterNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ChannelSplitterNode must be primary interface of new ChannelSplitterNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new ChannelSplitterNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new ChannelSplitterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new ChannelSplitterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ChannelSplitterNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode interface: attribute offset",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode must be primary interface of new ConstantSourceNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new ConstantSourceNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode interface: new ConstantSourceNode(context) must inherit property \"offset\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property \"onended\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property \"start(double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: calling start(double) on new ConstantSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property \"stop(double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: calling stop(double) on new ConstantSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new ConstantSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new ConstantSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConstantSourceNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConvolverNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConvolverNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConvolverNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConvolverNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConvolverNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConvolverNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConvolverNode interface: attribute buffer",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConvolverNode interface: attribute normalize",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConvolverNode must be primary interface of new ConvolverNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new ConvolverNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConvolverNode interface: new ConvolverNode(context) must inherit property \"buffer\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConvolverNode interface: new ConvolverNode(context) must inherit property \"normalize\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new ConvolverNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new ConvolverNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new ConvolverNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DelayNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DelayNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DelayNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DelayNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DelayNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DelayNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DelayNode interface: attribute delayTime",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DelayNode must be primary interface of new DelayNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new DelayNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DelayNode interface: new DelayNode(context) must inherit property \"delayTime\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new DelayNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new DelayNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new DelayNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DelayNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: attribute threshold",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: attribute knee",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: attribute ratio",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: attribute reduction",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: attribute attack",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: attribute release",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode must be primary interface of new DynamicsCompressorNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new DynamicsCompressorNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property \"threshold\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property \"knee\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property \"ratio\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property \"reduction\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property \"attack\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property \"release\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new DynamicsCompressorNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "GainNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "GainNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "GainNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "GainNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "GainNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "GainNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "GainNode interface: attribute gain",
          "status": "PASS",
          "message": null
        },
        {
          "name": "GainNode must be primary interface of new GainNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new GainNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "GainNode interface: new GainNode(context) must inherit property \"gain\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new GainNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new GainNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new GainNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new GainNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new GainNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new GainNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new GainNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new GainNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new GainNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "IIRFilterNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "IIRFilterNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "IIRFilterNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "IIRFilterNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "IIRFilterNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "IIRFilterNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "IIRFilterNode interface: operation getFrequencyResponse(Float32Array, Float32Array, Float32Array)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "IIRFilterNode must be primary interface of new IIRFilterNode(context, {feedforward: [1], feedback: [1]})",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new IIRFilterNode(context, {feedforward: [1], feedback: [1]})",
          "status": "PASS",
          "message": null
        },
        {
          "name": "IIRFilterNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"getFrequencyResponse(Float32Array, Float32Array, Float32Array)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "IIRFilterNode interface: calling getFrequencyResponse(Float32Array, Float32Array, Float32Array) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaElementAudioSourceNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaElementAudioSourceNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaElementAudioSourceNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaElementAudioSourceNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaElementAudioSourceNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaElementAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaElementAudioSourceNode interface: attribute mediaElement",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaElementAudioSourceNode must be primary interface of new MediaElementAudioSourceNode(context, {mediaElement: new Audio})",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new MediaElementAudioSourceNode(context, {mediaElement: new Audio})",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaElementAudioSourceNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"mediaElement\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioDestinationNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioDestinationNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioDestinationNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioDestinationNode interface: attribute stream",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioDestinationNode must be primary interface of new MediaStreamAudioDestinationNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new MediaStreamAudioDestinationNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioDestinationNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"stream\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioSourceNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioSourceNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioSourceNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioSourceNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamAudioSourceNode interface: attribute mediaStream",
          "status": "PASS",
          "message": null
        },
        {
          "name": "MediaStreamTrackAudioSourceNode interface: existence and properties of interface object",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"MediaStreamTrackAudioSourceNode\" expected property \"MediaStreamTrackAudioSourceNode\" missing"
        },
        {
          "name": "MediaStreamTrackAudioSourceNode interface object length",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"MediaStreamTrackAudioSourceNode\" expected property \"MediaStreamTrackAudioSourceNode\" missing"
        },
        {
          "name": "MediaStreamTrackAudioSourceNode interface object name",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"MediaStreamTrackAudioSourceNode\" expected property \"MediaStreamTrackAudioSourceNode\" missing"
        },
        {
          "name": "MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"MediaStreamTrackAudioSourceNode\" expected property \"MediaStreamTrackAudioSourceNode\" missing"
        },
        {
          "name": "MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"MediaStreamTrackAudioSourceNode\" expected property \"MediaStreamTrackAudioSourceNode\" missing"
        },
        {
          "name": "MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"MediaStreamTrackAudioSourceNode\" expected property \"MediaStreamTrackAudioSourceNode\" missing"
        },
        {
          "name": "OscillatorNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: attribute type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: attribute frequency",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: attribute detune",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: operation setPeriodicWave(PeriodicWave)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode must be primary interface of new OscillatorNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new OscillatorNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: new OscillatorNode(context) must inherit property \"type\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: new OscillatorNode(context) must inherit property \"frequency\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: new OscillatorNode(context) must inherit property \"detune\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: new OscillatorNode(context) must inherit property \"setPeriodicWave(PeriodicWave)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "OscillatorNode interface: calling setPeriodicWave(PeriodicWave) on new OscillatorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property \"onended\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property \"start(double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: calling start(double) on new OscillatorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property \"stop(double)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioScheduledSourceNode interface: calling stop(double) on new OscillatorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new OscillatorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new OscillatorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new OscillatorNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute panningModel",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute positionX",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute positionY",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute positionZ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute orientationX",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute orientationY",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute orientationZ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute distanceModel",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute refDistance",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute maxDistance",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute rolloffFactor",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute coneInnerAngle",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute coneOuterAngle",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: attribute coneOuterGain",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: operation setPosition(float, float, float)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: operation setOrientation(float, float, float)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode must be primary interface of new PannerNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new PannerNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"panningModel\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"positionX\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"positionY\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"positionZ\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"orientationX\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"orientationY\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"orientationZ\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"distanceModel\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"refDistance\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"maxDistance\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"rolloffFactor\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"coneInnerAngle\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"coneOuterAngle\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"coneOuterGain\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"setPosition(float, float, float)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: calling setPosition(float, float, float) on new PannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: new PannerNode(context) must inherit property \"setOrientation(float, float, float)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PannerNode interface: calling setOrientation(float, float, float) on new PannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new PannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new PannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new PannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new PannerNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PeriodicWave interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PeriodicWave interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PeriodicWave interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PeriodicWave interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PeriodicWave interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PeriodicWave interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "PeriodicWave must be primary interface of new PeriodicWave(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new PeriodicWave(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ScriptProcessorNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ScriptProcessorNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ScriptProcessorNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ScriptProcessorNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ScriptProcessorNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ScriptProcessorNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ScriptProcessorNode interface: attribute onaudioprocess",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ScriptProcessorNode interface: attribute bufferSize",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ScriptProcessorNode must be primary interface of context.createScriptProcessor()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of context.createScriptProcessor()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ScriptProcessorNode interface: context.createScriptProcessor() must inherit property \"onaudioprocess\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ScriptProcessorNode interface: context.createScriptProcessor() must inherit property \"bufferSize\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on context.createScriptProcessor() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on context.createScriptProcessor() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: context.createScriptProcessor() must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "StereoPannerNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "StereoPannerNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "StereoPannerNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "StereoPannerNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "StereoPannerNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "StereoPannerNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "StereoPannerNode interface: attribute pan",
          "status": "PASS",
          "message": null
        },
        {
          "name": "StereoPannerNode must be primary interface of new StereoPannerNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new StereoPannerNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "StereoPannerNode interface: new StereoPannerNode(context) must inherit property \"pan\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new StereoPannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new StereoPannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new StereoPannerNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode interface: attribute curve",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode interface: attribute oversample",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode must be primary interface of new WaveShaperNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of new WaveShaperNode(context)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode interface: new WaveShaperNode(context) must inherit property \"curve\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode interface: new WaveShaperNode(context) must inherit property \"oversample\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on new WaveShaperNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on new WaveShaperNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: new WaveShaperNode(context) must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorklet interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorklet interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorklet interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorklet interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorklet interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorklet interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorklet must be primary interface of context.audioWorklet",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of context.audioWorklet",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletGlobalScope interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParamMap interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParamMap interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParamMap interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParamMap interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParamMap interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParamMap interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParamMap must be primary interface of worklet_node.parameters",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of worklet_node.parameters",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface: attribute parameters",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface: attribute port",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface: attribute onprocessorerror",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode must be primary interface of worklet_node",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of worklet_node",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface: worklet_node must inherit property \"parameters\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface: worklet_node must inherit property \"port\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletNode interface: worklet_node must inherit property \"onprocessorerror\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on worklet_node with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on worklet_node with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"context\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"numberOfInputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"numberOfOutputs\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"channelCount\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"channelCountMode\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"channelInterpretation\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioWorkletProcessor interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/panner-automation-position.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [0: 1-channel inverse rolloff: 1] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, left channel equals [0.7071067690849304,0.013321999460458755,0.0067243436351418495,0.00449715182185173,0.0033782348036766052,0.002705172635614872,0.0022557489573955536,0.0019343806197866797,0.0016931620193645358,0.0015054333489388227,0.0013551785377785563,0.0012321951799094677,0.0011296762386336923,0.00104290631134063,0.0009685150580480695,0.0009040298755280674...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, right channel equals [0.7071067690849304,0.013321999460458755,0.0067243436351418495,0.00449715182185173,0.0033782348036766052,0.002705172635614872,0.0022557489573955536,0.0019343806197866797,0.0016931620193645358,0.0015054333489388227,0.0013551785377785563,0.0012321951799094677,0.0011296762386336923,0.00104290631134063,0.0009685150580480695,0.0009040298755280674...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [0: 1-channel inverse rolloff: 1] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [0: 2-channel inverse rolloff: 1] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, left channel equals [1,0.018840152770280838,0.009509658440947533,0.006359932944178581,0.0047775455750525,0.003825691994279623,0.003190110670402646,0.0027356273494660854,0.0023944927379488945,0.0021290043368935585,0.0019165119156241417,0.0017425871919840574,0.0015976035501807928,0.0014748922549188137,0.0013696871465072036,0.001278491341508925...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, right channel equals [2,0.037680305540561676,0.019019316881895065,0.012719865888357162,0.009555091150105,0.007651383988559246,0.006380221340805292,0.005471254698932171,0.004788985475897789,0.004258008673787117,0.0038330238312482834,0.003485174383968115,0.0031952071003615856,0.0029497845098376274,0.002739374293014407,0.00255698268301785...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [0: 2-channel inverse rolloff: 1] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [1: 1-channel inverse rolloff: 1] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, left channel equals [0.7071067690849304,0.001196307479403913,0.0005938085960224271,0.0003949022793676704,0.0002958123222924769,0.00023647479247301817,0.00019696500385180116,0.00016876752488315105,0.00014763248327653855,0.0001312017993768677,0.00011806215479737148,0.00010731472139013931,0.00009836074605118483,0.00009078587027033791,0.00008429430454270914,0.00007866910891607404...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":4.8124e-7},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, right channel equals [0.7071067690849304,0.00498276436701417,0.002494250191375613,0.0016634686617180705,0.0012478390708565712,0.0009983853669837117,0.0008320511551573873,0.0007132254540920258,0.0006240977090783417,0.000554771046154201,0.0004993066540919244,0.00045392452739179134,0.00041610468178987503,0.00038410225533880293,0.000356670847395435,0.000332896423060447...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":4.8124e-7},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [1: 1-channel inverse rolloff: 1] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [1: 2-channel inverse rolloff: 1] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, left channel equals [1,0.002326501300558448,0.0011553276563063264,0.0007684475276619196,0.000575670157559216,0.0004602163680829108,0.0003833358350675553,0.0003284646081738174,0.00028733513318002224,0.00025535948225297034,0.0002297879836987704,0.00020887165737804025,0.00019144543330185115,0.00017670303350314498,0.00016406884242314845,0.00015312072355300188...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":4.3267e-7},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, right channel equals [2,0.014814520254731178,0.007416830863803625,0.004946674220263958,0.003710799152031541,0.002969020279124379,0.002474395092576742,0.0021210394334048033,0.001855994458310306,0.0016498314216732979,0.0014848907012492418,0.00134993193205446,0.0012374616926535964,0.001142291002906859,0.0010607137810438871,0.0009900116128847003...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":4.3267e-7},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [1: 2-channel inverse rolloff: 1] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [2: 1-channel exponential rolloff: 1.5] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, left channel equals [0.7071067690849304,0.00008563726441934705,0.000030067832994973287,0.000016328625861206092,0.000010593314073048532,0.000007574611117888708,0.000005759487976320088,0.0000045689607759413775,0.0000037386932945082663,0.0000031326046610047342,0.0000026742441150418017,0.0000023176937702373834,0.0000020338857211754657,0.0000018036150777334115,0.0000016137381635417114,0.0000014549860907209222...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":5.0783e-7},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, right channel equals [0.7071067690849304,0.00035668950295075774,0.00012629777484107763,0.00006878197018522769,0.000044686275941785425,0.000031979649065760896,0.00002433015288261231,0.00001930880534928292,0.000015804853319423273,0.000013245842637843452,0.000011309872206766158,0.00000980348249868257,0.00000860413729242282,0.00000763084153732052,0.0000068281406129244715,0.000006156923518574331...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":5.0783e-7},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [2: 1-channel exponential rolloff: 1.5] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [2: 2-channel exponential rolloff: 1.5] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, left channel equals [1,0.00016654180944897234,0.00005850067100254819,0.00003177416874677874,0.00002061528357444331,0.000014741360246262047,0.000011209189324290492,0.000008892362529877573,0.000007276568794623017,0.000006097022378526162,0.000005204963144933572,0.000004511035513132811,0.000003958673914894462,0.000003510504939185921,0.0000031409495022671763,0.0000028319695957179647...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":5.218e-7},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, right channel equals [2,0.0010604923591017723,0.0003755554498638958,0.0002045376895694062,0.00013288715854287148,0.00009510177915217355,0.00007235421799123287,0.00005742186840507202,0.00004700180943473242,0.00003939175803679973,0.00003363448922755197,0.00002915470213338267,0.000025588007702026516,0.000022693546270602383,0.0000203064064407954,0.000018310278392164037...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":5.218e-7},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [2: 2-channel exponential rolloff: 1.5] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [3: 1-channel linear rolloff: 1] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, left channel equals [0.7071067690849304,0.22892199456691742,0.22258761525154114,0.21748939156532288,0.21270129084587097,0.2080373466014862,0.2034355252981186,0.19886919856071472,0.19432516396045685,0.1897958517074585,0.18527695536613464,0.18076558411121368,0.1762598603963852,0.17175845801830292,0.1672605574131012,0.16276535391807556...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":0.0000065324},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, right channel equals [0.7071067690849304,0.9534875750541687,0.9349632859230042,0.9161425232887268,0.8972479104995728,0.8783238530158997,0.8593849539756775,0.840437650680542,0.8214850425720215,0.8025290369987488,0.7835704684257507,0.7646101713180542,0.7456485629081726,0.7266858816146851,0.7077224254608154,0.6887583136558533...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":0.0000065324},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [3: 1-channel linear rolloff: 1] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [3: 2-channel linear rolloff: 1] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, left channel equals [1,0.4451926648616791,0.4330716133117676,0.4232165515422821,0.41393065452575684,0.40487271547317505,0.39592882990837097,0.38705015182495117,0.37821245193481445,0.369401752948761,0.3606102168560028,0.35183247923851013,0.34306514263153076,0.3343057632446289,0.3255528211593628,0.31680476665496826...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":0.0000065756},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, right channel equals [2,2.834864377975464,2.780179977416992,2.7243428230285645,2.6682181358337402,2.611978530883789,2.5556817054748535,2.499351978302002,2.4430017471313477,2.3866379261016846,2.3302643299102783,2.2738840579986572,2.217498540878296,2.16110897064209,2.1047163009643555,2.048321008682251...] with an element-wise tolerance of {\"absoluteThreshold\":{\"relativeThreshold\":0.0000065756},\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [3: 2-channel linear rolloff: 1] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 8 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-oscillatornode-interface/detune-limiting.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [detune limits] Oscillator with detune and frequency at Nyquist or above",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Context sample rate is equal to 44100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Reference oscillator frequency is greater than or equal to 22050.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Osc(freq: 22050) output contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Osc(freq: 1, detune: 18514.189453125) output equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [detune limits] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [detune automation] Oscillator output with detune automation should be zero above Nyquist",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Frame where detuned oscillator reaches Nyquist is equal to 5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  osc[0:4] is not constantly 0 (contains 4 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  osc[5:] contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [detune automation] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-channelsplitternode-interface/audiochannelsplitter.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [construction] Construction of ChannelSplitterNode",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createChannelSplitter(0) threw IndexSizeError: \"Failed to execute 'createChannelSplitter' on 'BaseAudioContext': The number of outputs provided (0) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createChannelSplitter(33) threw IndexSizeError: \"Failed to execute 'createChannelSplitter' on 'BaseAudioContext': The number of outputs provided (33) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitternode = context.createChannelSplitter(32) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitternode.numberOfOutputs is equal to 32.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitternode.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitternode = context.createChannelSplitter() did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitternode.numberOfOutputs is equal to 6.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [construction] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [functionality] Functionality of ChannelSplitterNode",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Left channel contains only the constant -1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Right channel contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Left and right channels were exchanged correctly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [functionality] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-delaynode-interface/no-dezippering.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test0] Test DelayNode has no dezippering",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  output[0:63] contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  output[64:127] is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  output[128:] is identical to the array [113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test0] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test1] Test value setter and setValueAtTime",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  .value setter output is identical to the array [0,0,0,0,0.15114444494247437,0.3147895038127899,0.46949300169944763,0.6108605861663818,0.7348765134811401,0.8380183577537537,0.9173563122749329,0.9706368446350098,0.9963463544845581,0.9937547445297241,0.9629355072975159,0.9047641754150391...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  .value setter output matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test1] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test2] Test value setter and modulation",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  With modulation: .value setter output is identical to the array [0,0,0,0,0,0,0,0,0,0.9986401796340942,0.9932119250297546,0.9595714807510376,0.898674488067627,0.812250554561615,0.7027547359466553,0.5732971429824829...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  With modulation: .value setter output matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test2] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/ctor-biquadfilter.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode() threw TypeError: \"Failed to construct 'BiquadFilterNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(1) threw TypeError: \"Failed to construct 'BiquadFilterNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(context, 42) threw TypeError: \"Failed to construct 'BiquadFilterNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new BiquadFilterNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof BiquadFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.type is equal to lowpass.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.Q.value is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.detune.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.frequency.value is equal to 350.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.gain.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelCount: 17}} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelCount: 0}) threw NotSupportedError: \"Failed to construct 'BiquadFilterNode': The channel count provided (0) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelCount: 99}) threw NotSupportedError: \"Failed to construct 'BiquadFilterNode': The channel count provided (99) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelCountMode: \"max\"} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelCountMode: \"max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelCountMode: \"clamped-max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelCountMode: \"explicit\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelCountMode: \"foobar\"} threw TypeError: \"Failed to construct 'BiquadFilterNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after invalid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelInterpretation: \"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelInterpretation: \"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelInterpretation: \"foobar\"}) threw TypeError: \"Failed to construct 'BiquadFilterNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation after invalid setter is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 20 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [construct with options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new BiquadFilterNode(..., {\"type\":\"highpass\",\"frequency\":512,\"detune\":1,\"Q\":5,\"gain\":3}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.type is equal to highpass.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.frequency.value is equal to 512.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.detuen.value is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.Q.value is equal to 5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.gain.value is equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [construct with options] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-analysernode-interface/test-analysernode.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Test AnalyserNode API",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Test AnalyserNode's ctor API",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Biquad allpass filter",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of filters tested is equal to 4.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finite values in the rendered output is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error in Allpass filter response is less than or equal to 3.9337e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-channelmergernode-interface/ctor-channelmerger.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode() threw TypeError: \"Failed to construct 'ChannelMergerNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(1) threw TypeError: \"Failed to construct 'ChannelMergerNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(context, 42) threw TypeError: \"Failed to construct 'ChannelMergerNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new ChannelMergerNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof ChannelMergerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 6.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(c, {channelCount: 1}} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(c, {channelCount: 2}} threw InvalidStateError: \"Failed to construct 'ChannelMergerNode': ChannelMerger: channelCount cannot be changed from 1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(c, {channelCountMode: \"explicit\"} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(c, {channelCountMode: \"max\"}) threw InvalidStateError: \"Failed to construct 'ChannelMergerNode': ChannelMerger: channelCountMode cannot be changed from 'explicit'\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(c, {channelCountMode: \"clamped-max\"}) threw InvalidStateError: \"Failed to construct 'ChannelMergerNode': ChannelMerger: channelCountMode cannot be changed from 'explicit'\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(c, {channelInterpretation: \"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(c, {channelInterpretation: \"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(c, {channelInterpretation: \"foobar\"}) threw TypeError: \"Failed to construct 'ChannelMergerNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation after invalid setter is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 13 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new ChannelMergerNode(context, {\"numberOfInputs\":3,\"numberOfOutputs\":9,\"channelInterpretation\":\"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.numberOfInputs is equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(c, {\"numberOfInputs\":99}) threw IndexSizeError: \"Failed to construct 'ChannelMergerNode': The number of inputs provided (99) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(c, {\"channelCount\":3}) threw InvalidStateError: \"Failed to construct 'ChannelMergerNode': ChannelMerger: channelCount cannot be changed from 1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(c, {\"channelCountMode\":\"max\"}) threw InvalidStateError: \"Failed to construct 'ChannelMergerNode': ChannelMerger: channelCountMode cannot be changed from 'explicit'\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor options] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/automation-rate.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [AudioBufferSourceNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default AudioBufferSourceNode.detune.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set AudioBufferSourceNode.detune.automationRate to \"a-rate\" threw InvalidStateError: \"Failed to set the 'automationRate' property on 'AudioParam': AudioBufferSource.detune.automationRate is fixed and cannot be changed to \"a-rate\"\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default AudioBufferSourceNode.playbackRate.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set AudioBufferSourceNode.playbackRate.automationRate to \"a-rate\" threw InvalidStateError: \"Failed to set the 'automationRate' property on 'AudioParam': AudioBufferSource.playbackRate.automationRate is fixed and cannot be changed to \"a-rate\"\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [AudioBufferSourceNode] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [BiquadFilterNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default BiquadFilterNode.frequency.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set BiquadFilterNode.frequency.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  BiquadFilterNode.frequency.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default BiquadFilterNode.detune.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set BiquadFilterNode.detune.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  BiquadFilterNode.detune.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default BiquadFilterNode.Q.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set BiquadFilterNode.Q.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  BiquadFilterNode.Q.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default BiquadFilterNode.gain.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set BiquadFilterNode.gain.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  BiquadFilterNode.gain.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [BiquadFilterNode] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [ConstantSourceNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default ConstantSourceNode.offset.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set ConstantSourceNode.offset.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConstantSourceNode.offset.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [ConstantSourceNode] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [DelayNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default DelayNode.delayTime.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set DelayNode.delayTime.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  DelayNode.delayTime.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [DelayNode] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [DynamicsCompressorNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default DynamicsCompressorNode.threshold.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set DynamicsCompressorNode.threshold.automationRate to \"a-rate\" threw InvalidStateError: \"Failed to set the 'automationRate' property on 'AudioParam': DynamicsCompressor.threshold.automationRate is fixed and cannot be changed to \"a-rate\"\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default DynamicsCompressorNode.knee.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set DynamicsCompressorNode.knee.automationRate to \"a-rate\" threw InvalidStateError: \"Failed to set the 'automationRate' property on 'AudioParam': DynamicsCompressor.knee.automationRate is fixed and cannot be changed to \"a-rate\"\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default DynamicsCompressorNode.ratio.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set DynamicsCompressorNode.ratio.automationRate to \"a-rate\" threw InvalidStateError: \"Failed to set the 'automationRate' property on 'AudioParam': DynamicsCompressor.ratio.automationRate is fixed and cannot be changed to \"a-rate\"\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default DynamicsCompressorNode.attack.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set DynamicsCompressorNode.attack.automationRate to \"a-rate\" threw InvalidStateError: \"Failed to set the 'automationRate' property on 'AudioParam': DynamicsCompressor.attack.automationRate is fixed and cannot be changed to \"a-rate\"\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default DynamicsCompressorNode.release.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set DynamicsCompressorNode.release.automationRate to \"a-rate\" threw InvalidStateError: \"Failed to set the 'automationRate' property on 'AudioParam': DynamicsCompressor.release.automationRate is fixed and cannot be changed to \"a-rate\"\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [DynamicsCompressorNode] All assertions passed. (total 10 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [GainNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default GainNode.gain.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set GainNode.gain.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  GainNode.gain.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [GainNode] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [OscillatorNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default OscillatorNode.frequency.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set OscillatorNode.frequency.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  OscillatorNode.frequency.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default OscillatorNode.detune.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set OscillatorNode.detune.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  OscillatorNode.detune.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [OscillatorNode] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [PannerNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default PannerNode.positionX.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set PannerNode.positionX.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  PannerNode.positionX.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default PannerNode.positionY.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set PannerNode.positionY.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  PannerNode.positionY.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default PannerNode.positionZ.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set PannerNode.positionZ.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  PannerNode.positionZ.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default PannerNode.orientationX.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set PannerNode.orientationX.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  PannerNode.orientationX.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default PannerNode.orientationY.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set PannerNode.orientationY.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  PannerNode.orientationY.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default PannerNode.orientationZ.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set PannerNode.orientationZ.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  PannerNode.orientationZ.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [PannerNode] All assertions passed. (total 18 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [StereoPannerNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default StereoPannerNode.pan.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set StereoPannerNode.pan.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  StereoPannerNode.pan.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [StereoPannerNode] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [AudioListener] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default AudioListener.positionX.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set AudioListener.positionX.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioListener.positionX.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default AudioListener.positionY.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set AudioListener.positionY.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioListener.positionY.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default AudioListener.positionZ.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set AudioListener.positionZ.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioListener.positionZ.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default AudioListener.forwardX.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set AudioListener.forwardX.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioListener.forwardX.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default AudioListener.forwardY.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set AudioListener.forwardY.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioListener.forwardY.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default AudioListener.forwardZ.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set AudioListener.forwardZ.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioListener.forwardZ.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default AudioListener.upX.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set AudioListener.upX.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioListener.upX.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default AudioListener.upY.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set AudioListener.upY.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioListener.upY.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default AudioListener.upZ.automationRate is equal to a-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set AudioListener.upZ.automationRate to \"k-rate\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioListener.upZ.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [AudioListener] All assertions passed. (total 27 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 10 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/k-rate-delay.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test k-rate DelayNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  DelayNode: Setting delayTime.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  DelayNode: k-rate node: delayTime.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  DelayNode: k-rate node: delayTime.linearRampToValueAtTime(0.5,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  DelayNode: a-rate node:delayTime.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  DelayNode: a-rate node:delayTime.linearRampToValueAtTime(0.5,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  DelayNode: Output of k-rate DelayNode is identical to the array [0,0.3387375771999359,0.6374233961105347,0.8607417345046997,0.9822861552238464,0.9876875877380371,0.8763060569763184,0.6613109707832336,0.36812418699264526,0.03141050040721893,-0.30901670455932617,-0.6129070520401001,-0.8443272113800049,-0.975915789604187,-0.9921146035194397,-0.8910053968429565...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  DelayNode: Output of a-rate DelayNode is identical to the array [0,0.16936877369880676,0.3387375473976135,0.4880804717540741,0.6374233961105347,0.7490825057029724,0.8607417345046997,0.9215139150619507,0.9822861552238464,0.9849868416786194,0.9876875877380371,0.9319968223571777,0.8763060569763184,0.7688085436820984,0.6613110303878784,0.5147176384925842...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  DelayNode: Difference between a-rate and k-rate DelayNode is not constantly 0 (contains 7937 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test k-rate DelayNode] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-constantsourcenode-interface/test-constantsourcenode.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "ConstantSourceNode can be constructed",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode stop and start",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode onended event",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode start and stop when work",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode with no automation",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ConstantSourceNode with automation",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [setValueCurve] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(curve, 0.0125, 0.0125) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueAtTime(1, 0.018750000000000003) threw NotSupportedError: \"Failed to execute 'setValueAtTime' on 'AudioParam': setValueAtTime(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  linearRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: \"Failed to execute 'linearRampToValueAtTime' on 'AudioParam': linearRampToValueAtTime(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  exponentialRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': exponentialRampToValue(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setTargetAtTime(1, 0.018750000000000003, 1) threw NotSupportedError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': setTargetAtTime(1, 0.01875, 1) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueAtTime(1, 0.026250000000000002) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [setValueCurve] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [automations] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  linearRampToValueAtTime(1, 0.0125) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  exponentialRampToValueAtTime(1, 0.025) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setTargetAtTime(1, 0.037500000000000006, 0.1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(curve, 0.05, 0.1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(curve, 0.00625, 0.01) threw NotSupportedError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.00625, 0.01) overlaps linearRampToValueAtTime(1, 0.0125)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(curve, 0.018750000000000003, 0.01) threw NotSupportedError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.01875, 0.01) overlaps exponentialRampToValue(1, 0.025)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(curve, 0.03125, 0.01) threw NotSupportedError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.03125, 0.01) overlaps setTargetAtTime(1, 0.03750000000000001, 0.1)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(curve, 0.043750000000000004, 0.01) threw NotSupportedError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.04375, 0.01) overlaps setValueCurveAtTime(..., 0.05, 0.1)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  delayTime.setValueCurveAtTime([1, 5], 0.043750000000000004, 0.01) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  delayTime.setValueCurveAtTime([1, 5, Infinity], 0.043750000000000004, 0.01) threw TypeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(curve, 0.031415926535897934, 0.01) threw NotSupportedError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.03141592653589793, 0.01) overlaps setTargetAtTime(1, 0.03750000000000001, 0.1)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [automations] All assertions passed. (total 13 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [catch-exception] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Handled setValueCurve exception so output contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [catch-exception] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [start-end] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueAtTime(1, 0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  linearRampToValueAtTime(0, 0.0025) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(..., 0.0025, 0.0025) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  exponentialRampToValueAtTime(1, 0.0075) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(..., 0.0075, 0.0025) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(..., 0.01, 0.0025) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueAtTime(0, 0.0125) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(..., 0.0125, 0.0025) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setTargetAtTime(1, 0.015000000000000001, 1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [start-end] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [curve overlap] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueCurveAtTime([1,2,3], 5, 10) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  second g.gain.setValueCurveAtTime([1,2,3], 5, 10) threw NotSupportedError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 5, 10) overlaps setValueCurveAtTime(..., 5, 10)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueCurveAtTime([1,2,3], 5, 5) threw NotSupportedError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 5, 5) overlaps setValueCurveAtTime(..., 5, 10)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) threw NotSupportedError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 2.5, 10) overlaps setValueCurveAtTime(..., 5, 10)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueCurveAtTime([1,2,3], 10, 10) threw NotSupportedError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 10, 10) overlaps setValueCurveAtTime(..., 5, 10)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueCurveAtTime([1,2,3], 6, 9) threw NotSupportedError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 6, 9) overlaps setValueCurveAtTime(..., 5, 10)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueCurveAtTime([1,2,3], 4, 11) threw NotSupportedError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 4, 11) overlaps setValueCurveAtTime(..., 5, 10)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueAtTime(1.0, 15) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [curve overlap] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [curve lengths] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime([], 0, 0.01) threw InvalidStateError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': The curve length provided (0) is less than the minimum bound (2).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': The curve length provided (1) is less than the minimum bound (2).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime([1,2], 0, 0.01) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [curve lengths] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-gainnode-interface/ctor-gain.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode() threw TypeError: \"Failed to construct 'GainNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(1) threw TypeError: \"Failed to construct 'GainNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(context, 42) threw TypeError: \"Failed to construct 'GainNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new GainNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.gain.value is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelCount: 17}} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelCount: 0}) threw NotSupportedError: \"Failed to construct 'GainNode': The channel count provided (0) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelCount: 99}) threw NotSupportedError: \"Failed to construct 'GainNode': The channel count provided (99) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelCountMode: \"max\"} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelCountMode: \"max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelCountMode: \"clamped-max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelCountMode: \"explicit\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelCountMode: \"foobar\"} threw TypeError: \"Failed to construct 'GainNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after invalid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelInterpretation: \"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelInterpretation: \"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelInterpretation: \"foobar\"}) threw TypeError: \"Failed to construct 'GainNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation after invalid setter is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 20 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor with options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new GainNode(c, {\"gain\":-2}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 instanceof GainNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.gain.value is equal to -2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor with options] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] Convolver response with one channel",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer({numberOfChannels: 1, length: 2, sampleRate: 8192}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [1-channel input] produces 1-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1: Channel 1 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Convolver output equals [0,0,0.3311063051223755,0.6248595714569092,0.8481203317642212,0.9757021069526672,0.9932119250297546,0.898674488067627,0.7027547359466553,0.4275550842285156,0.1041216254234314,-0.23105812072753906,-0.5401713848114014,-0.7883464097976685,-0.9475855827331543,-0.9999247789382935...] with an element-wise tolerance of {\"absoluteThreshold\":4.1724e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [1-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [2-channel input] produces 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2: Channel 0 is identical to the array [0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585,-0.834891676902771...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2: Channel 1 is identical to the array [0,0,0.9947003126144409,0.7705774307250977,0.9109300374984741,0.770668089389801,0.9842367768287659,0.32022905349731445,-0.9348858594894409,-0.8055058121681213,-0.8837442398071289,-0.8007677793502808,-0.9286617636680603,-0.6026888489723206,0.7909697890281677,0.8679972290992737...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [2-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [3-channel input] 3->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3: Channel 0 is identical to the array [0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585,-0.834891676902771...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3: Channel 1 is identical to the array [0,0,0.9947003126144409,0.7705774307250977,0.9109300374984741,0.770668089389801,0.9842367768287659,0.32022905349731445,-0.9348858594894409,-0.8055058121681213,-0.8837442398071289,-0.8007677793502808,-0.9286617636680603,-0.6026888489723206,0.7909697890281677,0.8679972290992737...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [3-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [4-channel input] 4->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4: Channel 0 is identical to the array [0,0,0.9734255075454712,0.8085748553276062,0.8596614599227905,0.8377395868301392,0.18206258118152618,-0.06961169838905334,0.03773331642150879,-0.007562130689620972,-0.018085837364196777,0.029709070920944214,-0.021690011024475098,-0.0055168867111206055,0.05647382140159607,-0.4439384937286377...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4: Channel 1 is identical to the array [0,0,0.971980094909668,0.8048999309539795,0.8850500583648682,0.18059250712394714,0.02772340178489685,-0.2852807343006134,-0.7788605690002441,-0.0375840961933136,-0.008258610963821411,0.07240849733352661,-0.33466458320617676,-0.7563189268112183,-0.020491480827331543,-0.03146648406982422...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [4-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [5.1-channel input] 5.1->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  5.1: Channel 0 is identical to the array [0,0,2.3021068572998047,2.0779097080230713,1.5364117622375488,0.8359494805335999,-0.21231389045715332,-0.00529266893863678,0.836210310459137,1.0198438167572021,0.3261905908584595,-0.6783384084701538,-1.057640790939331,-0.5491994619369507,0.2516633868217468,-0.10923552513122559...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  5.1: Channel 1 is identical to the array [0,0,2.407027244567871,1.8516432046890259,1.2457610368728638,0.5805021524429321,0.36253032088279724,0.16488611698150635,-0.7450209259986877,-1.5345406532287598,-1.9043262004852295,-0.7297847867012024,0.01058971881866455,0.7125816345214844,1.7535796165466309,0.26786839962005615...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [5.1-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sample-accurate-scheduling.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Test sample-accurate scheduling",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Content of left and right channels match and is identical to the array [1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Non-zero sample found at sample offset 0 is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Non-zero sample found at sample offset 3 is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Non-zero sample found at sample offset 512 is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Non-zero sample found at sample offset 517 is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Non-zero sample found at sample offset 1000 is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Non-zero sample found at sample offset 1005 is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Non-zero sample found at sample offset 20000 is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Non-zero sample found at sample offset 21234 is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Non-zero sample found at sample offset 37590 is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of impulses found is equal to 9.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  bad offset is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-timing-info.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Check the timing information from AudioWorkletProcessor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  currentFrame from the processor at 0 is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  currentTime from the processor at 0 is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  currentFrame from the processor at 128 is equal to 128.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  currentTime from the processor at 0.0026666666666666666 is equal to 0.0026666666666666666.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  currentFrame from the processor at 256 is equal to 256.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  currentTime from the processor at 0.005333333333333333 is equal to 0.005333333333333333.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  currentFrame from the processor at 384 is equal to 384.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  currentTime from the processor at 0.008 is equal to 0.008.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Check the timing information from AudioWorkletProcessor] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/panner-equalpower-stereo.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Equal-power panner model of AudioPannerNode with stereo source",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of impulses found is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Offsets of impulses at the wrong position is identical to the array [].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Error in left channel gain values is less than or equal to 0.0000013.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Error in right channel gain values is less than or equal to 0.0000013.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode() threw TypeError: \"Failed to construct 'StereoPannerNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(1) threw TypeError: \"Failed to construct 'StereoPannerNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(context, 42) threw TypeError: \"Failed to construct 'StereoPannerNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new StereoPannerNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof StereoPannerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.pan.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCount\":1}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCount\":2}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCount\":0}) threw NotSupportedError: \"Failed to construct 'StereoPannerNode': The channelCount provided (0) is outside the range [1, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCount\":3}) threw NotSupportedError: \"Failed to construct 'StereoPannerNode': The channelCount provided (3) is outside the range [1, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCount\":99}) threw NotSupportedError: \"Failed to construct 'StereoPannerNode': The channelCount provided (99) is outside the range [1, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCountMode\":\"clamped-max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCountMode\":\"explicit\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCountMode\":\"max\"}) threw NotSupportedError: \"Failed to construct 'StereoPannerNode': StereoPanner: 'max' is not allowed\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCountMode\":\"foobar\"}) threw TypeError: \"Failed to construct 'StereoPannerNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelInterpretation\":\"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelInterpretation\":\"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelInterpretation\":\"foobar\"}) threw TypeError: \"Failed to construct 'StereoPannerNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 18 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor with options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new StereoPannerNode(, {\"pan\":0.75}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 instanceof StereoPannerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.pan.value is equal to 0.75.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor with options] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/audioparam-exceptional-values.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Creating context for testing did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test value] Test non-finite arguments for AudioParam value",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueAtTime(Infinity,1) threw TypeError: \"Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(Infinity,1) threw TypeError: \"Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(Infinity,1) threw TypeError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(Infinity,1,1) threw TypeError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueAtTime(-Infinity,1) threw TypeError: \"Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(-Infinity,1) threw TypeError: \"Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(-Infinity,1) threw TypeError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(-Infinity,1,1) threw TypeError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueAtTime(NaN,1) threw TypeError: \"Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(NaN,1) threw TypeError: \"Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(NaN,1) threw TypeError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(NaN,1,1) threw TypeError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test value] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test time] Test non-finite arguments for AudioParam time",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueAtTime(1,Infinity) threw TypeError: \"Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(1,Infinity) threw TypeError: \"Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(1,Infinity) threw TypeError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,Infinity,1) threw TypeError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,1,Infinity) threw TypeError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueAtTime(1,-Infinity) threw TypeError: \"Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(1,-Infinity) threw TypeError: \"Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(1,-Infinity) threw TypeError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,-Infinity,1) threw TypeError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,1,-Infinity) threw TypeError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueAtTime(1,NaN) threw TypeError: \"Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(1,NaN) threw TypeError: \"Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(1,NaN) threw TypeError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,NaN,1) threw TypeError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,1,NaN) threw TypeError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test time] All assertions passed. (total 15 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test setValueCurve] Test non-finite arguments for setValueCurveAtTime",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([0,0,0],Infinity,1) threw TypeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([0,0,0],-Infinity,1) threw TypeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([0,0,0],NaN,1) threw TypeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([1,2,Infinity,3],1,1) threw TypeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([1,NaN,2,3],1,1) threw TypeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test setValueCurve] All assertions passed. (total 5 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [special cases 1] Test exceptions for finite values",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueAtTime(1,-1) threw RangeError: \"Failed to execute 'setValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(1,-1) threw RangeError: \"Failed to execute 'linearRampToValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(1,-1) threw RangeError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,-1,1) threw RangeError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': Time must be a finite non-negative number: -1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,1,-1) threw RangeError: \"Failed to execute 'setTargetAtTime' on 'AudioParam': Time constant must be a finite non-negative number: -1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([0,0,0],-1,1) threw RangeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': Time must be a finite non-negative number: -1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([0,0,0],1,-1) threw RangeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': Duration must be a finite positive number: -1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime(curve, 1, 0) threw RangeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': Duration must be a finite positive number: 0\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime(curve, 1, -1) threw RangeError: \"Failed to execute 'setValueCurveAtTime' on 'AudioParam': Duration must be a finite positive number: -1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [special cases 1] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [special cases 2] Test special cases for expeonentialRamp",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(0,1) threw RangeError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(-1e-100,1) threw RangeError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(1e-100,1) threw RangeError: \"Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [special cases 2] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-offlineaudiocontext-interface/current-time-block-size.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Test currentTime at completion of OfflineAudioContext rendering",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-one-sample-loop.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [one-sample-loop] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered data contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [one-sample-loop] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/panner-automation-equalpower-stereo.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Equal-power panner model of AudioPannerNode with stereo source",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of impulses found is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Offsets of impulses at the wrong position is identical to the array [].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Error in left channel gain values is less than or equal to 0.0000013.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Error in right channel gain values is less than or equal to 0.0000013.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-analysernode-interface/test-analyser-output.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "name": "AnalyserNode output",
          "status": "NOTRUN",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Initialize context for testing did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [existence] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.createIIRFilter does exist.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [existence] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [parameters] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [parameters] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [exceptions-createIIRFilter] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter() threw TypeError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': 2 arguments required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter(new Float32Array(1)) threw TypeError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': 2 arguments required, but only 1 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter(null, null) threw TypeError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': The provided value cannot be converted to a sequence.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([], []) threw NotSupportedError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': The number of feedback coefficients provided (0) is outside the range [1, 20].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1], []) threw NotSupportedError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': The number of feedback coefficients provided (0) is outside the range [1, 20].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([], [1]) threw NotSupportedError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': The number of feedforward coefficients provided (0) is outside the range [1, 20].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter(new Float32Array(20), new Float32Array(20)) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter(new Float32Array(21), [1]) threw NotSupportedError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': The number of feedforward coefficients provided (21) is outside the range [1, 20].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1], new Float32Array(21)) threw NotSupportedError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': The number of feedback coefficients provided (21) is outside the range [1, 20].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1], new Float32Array(2)) threw InvalidStateError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': First feedback coefficient cannot be zero.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter(new Float32Array(10), [1]) threw InvalidStateError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': At least one feedforward coefficient must be non-zero.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1], [1, NaN, Infinity]) threw TypeError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1, NaN, Infinity], [1]) threw TypeError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1, 'abc', []], [1]) threw TypeError: \"Failed to execute 'createIIRFilter' on 'BaseAudioContext': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [exceptions-createIIRFilter] All assertions passed. (total 14 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [exceptions-getFrequencyData] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(null, new Float32Array(1), new Float32Array(1)) threw TypeError: \"Failed to execute 'getFrequencyResponse' on 'IIRFilterNode': parameter 1 is not of type 'Float32Array'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(1), null, new Float32Array(1)) threw TypeError: \"Failed to execute 'getFrequencyResponse' on 'IIRFilterNode': parameter 2 is not of type 'Float32Array'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(1), new Float32Array(1), null) threw TypeError: \"Failed to execute 'getFrequencyResponse' on 'IIRFilterNode': parameter 3 is not of type 'Float32Array'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(10), new Float32Array(1), new Float32Array(20)) threw InvalidAccessError: \"Failed to execute 'getFrequencyResponse' on 'IIRFilterNode': The magResponse length provided (1) is outside the range [10, 10].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(10), new Float32Array(20), new Float32Array(1)) threw InvalidAccessError: \"Failed to execute 'getFrequencyResponse' on 'IIRFilterNode': The magResponse length provided (20) is outside the range [10, 10].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [exceptions-getFrequencyData] All assertions passed. (total 5 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Test exponentialRampToValue with end time in the past",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test[0:127] contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Reference[0:127] contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test[128:] is identical to the array [0.10000000149011612,0.10001351684331894,0.10002703964710236,0.10004056245088577,0.10005408525466919,0.1000676080584526,0.10008113831281662,0.10009466856718063,0.10010819882154465,0.10012172907590866,0.10013526678085327,0.10014880448579788,0.10016234219074249,0.1001758798956871,0.10018942505121231,0.10020297020673752...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [setup] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [setup] All assertions passed. (total 0 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [without-audio-node-options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Creating AudioWOrkletNode without options did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode is instance of AudioWorkletNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.numberOfInputs (default) is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.numberOfOutputs (default) is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelCount (default) is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelCountMode (default) is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelInterpretation (default) is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [without-audio-node-options] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [audio-node-options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Creating AudioWOrkletNode with options: {\"numberOfInputs\":7,\"numberOfOutputs\":18,\"channelCount\":4,\"channelCountMode\":\"clamped-max\",\"channelInterpretation\":\"discrete\"} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.numberOfInputs is equal to 7.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.numberOfOutputs is equal to 18.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelCount is equal to 4.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelCountMode is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [audio-node-options] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [channel-count] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelCount is equal to 17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Creating AudioWorkletNode with channelCount 0 threw NotSupportedError: \"Failed to construct 'AudioWorkletNode': The channel count provided (0) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Creating AudioWorkletNode with channelCount 33 threw NotSupportedError: \"Failed to construct 'AudioWorkletNode': The channel count provided (33) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [channel-count] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [channel-count-mode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelCountMode (set via options.max) is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelCountMode (set via options.clamped-max) is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelCountMode (set via options.explicit) is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Creating AudioWorkletNode with channelCountMode \"foobar\" threw TypeError: \"Failed to construct 'AudioWorkletNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [channel-count-mode] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [channel-interpretation] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelInterpretation (set via options.speakers) is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  testNode.channelInterpretation (set via options.discrete) is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Creating AudioWorkletNode with channelCountMode \"foobar\" threw TypeError: \"Failed to construct 'AudioWorkletNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [channel-interpretation] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-analysernode-interface/test-analyser-scale.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": []
    },
    {
      "test": "/webaudio/the-audio-api/the-delaynode-interface/delaynode-channel-count-1.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Test that DelayNode output channelCount matches that of the delayed input",
          "status": "FAIL",
          "message": "assert_equals: Initial mono at 0 expected 0 but got 0.25"
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [silent-channel] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #0 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #1 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #2 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #3 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #4 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #5 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [silent-channel] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [stereo-down-mixing] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #0 contains only the constant 1.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #1 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #2 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #3 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #4 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #5 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [stereo-down-mixing] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [undefined-channel-layout] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #0 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #1 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #2 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #3 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #4 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #5 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [undefined-channel-layout] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [merging-to-stereo] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #0 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #1 contains only the constant -1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [merging-to-stereo] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/panner-equalpower.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Equal-power panner model of AudioPannerNode",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of impulses found is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Offsets of impulses at the wrong position is identical to the array [].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Error in left channel gain values is less than or equal to 0.0000013.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Error in right channel gain values is less than or equal to 0.0000013.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [mono source=listener] Source and listener at the same position",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono: Left and right channels is identical to the array [0,0.04429904744029045,0.08842403441667557,0.1322016716003418,0.1754598766565323,0.21802882850170135,0.2597411572933197,0.3004331588745117,0.3399447500705719,0.3781208395957947,0.4148113429546356,0.4498721659183502,0.48316577076911926,0.5145610570907593,0.5439349412918091,0.5711718797683716...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [mono source=listener] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [stereo source=listener] Source and listener at the same position",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo: Left and right channels is identical to the array [0,0.06264831125736237,0.12505047023296356,0.18696139752864838,0.24813774228096008,0.30833932757377625,0.3673294484615326,0.4248766303062439,0.4807544946670532,0.53474360704422,0.5866318345069885,0.636215329170227,0.6832996010780334,0.7276992201805115,0.7692402005195618,0.8077589869499207...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [stereo source=listener] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/k-rate-gain.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test k-rate GainNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  GainNode: Setting gain.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  GainNode: k-rate node: gain.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  GainNode: k-rate node: gain.linearRampToValueAtTime(0,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  GainNode: a-rate node:gain.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  GainNode: a-rate node:gain.linearRampToValueAtTime(0,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  GainNode: Output of k-rate GainNode is identical to the array [0,0.3387375771999359,0.6374233961105347,0.8607417345046997,0.9822861552238464,0.9876875877380371,0.8763060569763184,0.6613109707832336,0.36812418699264526,0.03141050040721893,-0.30901670455932617,-0.6129070520401001,-0.8443272113800049,-0.975915789604187,-0.9921146035194397,-0.8910053968429565...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  GainNode: Output of a-rate GainNode is identical to the array [0,0.338695228099823,0.63726407289505,0.860418975353241,0.9817950129508972,0.9870702624320984,0.8756487965583801,0.6607323288917542,0.36775603890419006,0.03137516230344772,-0.30863043665885925,-0.6120643019676208,-0.8430606722831726,-0.9743298888206482,-0.9903783798217773,-0.8893347382545471...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  GainNode: Difference between a-rate and k-rate GainNode is not constantly 0 (contains 7937 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test k-rate GainNode] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Initializing AudioWorklet and Context] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Initializing AudioWorklet and Context] All assertions passed. (total 0 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Verifying AudioParam in AudioWorkletNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default gain value of gainWorkletNode is equal to 0.7070000171661377.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Value of gainWorkletParam after setter = 0.1 is equal to 0.10000000149011612.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The rendered buffer contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Verifying AudioParam in AudioWorkletNode] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/k-rate-constant-source.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [ConstantSource k-rate offset] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset: Setting offset.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset: k-rate node: offset.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset: k-rate node: offset.linearRampToValueAtTime(10,0.064) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset: a-rate node:offset.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset: a-rate node:offset.linearRampToValueAtTime(10,0.064) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset: Output of k-rate ConstantSourceNode is identical to the array [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset: Output of a-rate ConstantSourceNode is identical to the array [0,0.01953125,0.0390625,0.05859375,0.078125,0.09765625,0.1171875,0.13671875,0.15625,0.17578125,0.1953125,0.21484375,0.234375,0.25390625,0.2734375,0.29296875...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset: Difference between a-rate and k-rate ConstantSourceNode is not constantly 0 (contains 508 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset k-rate output [0: 127] contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset k-rate output [128: 255] contains only the constant 2.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset k-rate output [256: 383] contains only the constant 5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate offset k-rate output [384: 511] contains only the constant 7.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [ConstantSource k-rate offset] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] Convolver response with one channel",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer({numberOfChannels: 2, length: 4, sampleRate: 8192}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [1-channel input] produces 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1: Channel 0 is identical to the array [0,0,0.9485260844230652,0.8472318053245544,1.7718820571899414,1.7117778062820435,1.668781042098999,1.722577452659607,1.6410210132598877,1.8474148511886597,1.1939716339111328,0.20856022834777832,-0.526597797870636,-1.5727121829986572,-1.800194263458252,-1.6267807483673096...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1: Channel 1 is identical to the array [0,0,0,0.9485260844230652,0.8472318053245544,1.7718820571899414,1.7117778062820435,1.668781042098999,1.722577452659607,1.6410210132598877,1.8474148511886597,1.1939716339111328,0.20856022834777832,-0.526597797870636,-1.5727121829986572,-1.800194263458252...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [1-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [2-channel input] produces 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2: Channel 0 is identical to the array [0,0,0.9485260844230652,0.8472318053245544,1.818056344985962,1.6351234912872314,1.7563550472259521,1.628699541091919,1.7798327207565308,1.309612512588501,-0.5365101099014282,-1.5863289833068848,-1.8087177276611328,-1.5926568508148193,-1.803882360458374,-1.4375805854797363...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2: Channel 1 is identical to the array [0,0,0,0.9485260844230652,0.8472318053245544,1.818056344985962,1.6351234912872314,1.7563550472259521,1.628699541091919,1.7798327207565308,1.309612512588501,-0.5365101099014282,-1.5863289833068848,-1.8087177276611328,-1.5926568508148193,-1.803882360458374...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [2-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [3-channel input] 3->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3: Channel 0 is identical to the array [0,0,0.9485260844230652,0.8472318053245544,1.818056344985962,1.6351234912872314,1.7563550472259521,1.628699541091919,1.7798327207565308,1.309612512588501,-0.5365101099014282,-1.5863289833068848,-1.8087177276611328,-1.5926568508148193,-1.803882360458374,-1.4375805854797363...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3: Channel 1 is identical to the array [0,0,0,0.9485260844230652,0.8472318053245544,1.818056344985962,1.6351234912872314,1.7563550472259521,1.628699541091919,1.7798327207565308,1.309612512588501,-0.5365101099014282,-1.5863289833068848,-1.8087177276611328,-1.5926568508148193,-1.803882360458374...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [3-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [4-channel input] 4->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4: Channel 0 is identical to the array [0,0,0.9734255075454712,0.8085748553276062,1.8316415548324585,1.6426395177841187,1.067112684249878,0.1109808087348938,0.06545671820640564,-0.2928428649902344,-0.7969464063644409,-0.007875025272369385,-0.02994862198829651,0.066891610622406,-0.2781907618045807,-1.200257420539856...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4: Channel 1 is identical to the array [0,0,0,0.9734255075454712,0.8085748553276062,1.8316415548324585,1.6426395177841187,1.067112684249878,0.1109808087348938,0.06545671820640564,-0.2928428649902344,-0.7969464063644409,-0.007875025272369385,-0.02994862198829651,0.066891610622406,-0.2781907618045807...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [4-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [5.1-channel input] 5.1->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  5.1: Channel 0 is identical to the array [0,0,2.3021068572998047,2.0779097080230713,3.94343900680542,2.6875927448272705,1.0334471464157104,0.5752094984054565,1.1987406015396118,1.1847299337387085,-0.41883033514022827,-2.212879180908203,-2.9619669914245605,-1.2789843082427979,0.2622531056404114,0.6033461093902588...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  5.1: Channel 1 is identical to the array [0,0,0,2.3021068572998047,2.0779097080230713,3.94343900680542,2.6875927448272705,1.0334471464157104,0.5752094984054565,1.1987406015396118,1.1847299337387085,-0.41883033514022827,-2.212879180908203,-2.9619669914245605,-1.2789843082427979,0.2622531056404114...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [5.1-channel input] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [delayed buffer set] Delayed set of 4-channel response",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output with delayed setting of convolver buffer is not constantly 0 (contains 767 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [delayed buffer set] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 7 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Test setValueAtTime with startTime in the past",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test[0:127] contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Reference[0:127] contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test[128:] is identical to the array [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueAtTime.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] AudioParam setValueAtTime() functionality.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of tests started and ended at the correct time is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 0 at offset 0 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 1 at offset 1323 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 2 at offset 2646 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 3 at offset 3969 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 4 at offset 5292 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 5 at offset 6615 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 6 at offset 7938 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 7 at offset 9261 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 8 at offset 10584 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 9 at offset 11907 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 10 at offset 13230 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 11 at offset 14553 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 12 at offset 15876 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 13 at offset 17199 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 14 at offset 18522 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 15 at offset 19845 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 16 at offset 21168 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 17 at offset 22491 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 18 at offset 23814 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 19 at offset 25137 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 20 at offset 26460 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 21 at offset 27783 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 22 at offset 29106 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 23 at offset 30429 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 24 at offset 31752 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 25 at offset 33075 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 26 at offset 34398 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 27 at offset 35721 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 28 at offset 37044 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 29 at offset 38367 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 30 at offset 39690 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 31 at offset 41013 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 32 at offset 42336 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 33 at offset 43659 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 34 at offset 44982 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 35 at offset 46305 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 36 at offset 47628 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 37 at offset 48951 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 38 at offset 50274 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 39 at offset 51597 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 40 at offset 52920 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 41 at offset 54243 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 42 at offset 55566 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 43 at offset 56889 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 44 at offset 58212 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 45 at offset 59535 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 46 at offset 60858 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 47 at offset 62181 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 48 at offset 63504 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 49 at offset 64827 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 50 at offset 66150 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 51 at offset 67473 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 52 at offset 68796 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 53 at offset 70119 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 54 at offset 71442 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 55 at offset 72765 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 56 at offset 74088 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 57 at offset 75411 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 58 at offset 76734 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 59 at offset 78057 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 60 at offset 79380 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 61 at offset 80703 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 62 at offset 82026 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 63 at offset 83349 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 64 at offset 84672 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 65 at offset 85995 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 66 at offset 87318 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 67 at offset 88641 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 68 at offset 89964 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 69 at offset 91287 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 70 at offset 92610 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 71 at offset 93933 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 72 at offset 95256 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 73 at offset 96579 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 74 at offset 97902 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 75 at offset 99225 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 76 at offset 100548 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 77 at offset 101871 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 78 at offset 103194 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 79 at offset 104517 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 80 at offset 105840 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 81 at offset 107163 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 82 at offset 108486 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 83 at offset 109809 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 84 at offset 111132 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 85 at offset 112455 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 86 at offset 113778 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 87 at offset 115101 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 88 at offset 116424 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 89 at offset 117747 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 90 at offset 119070 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 91 at offset 120393 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 92 at offset 121716 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 93 at offset 123039 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 94 at offset 124362 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 95 at offset 125685 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 96 at offset 127008 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 97 at offset 128331 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 98 at offset 129654 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 99 at offset 130977 is less than or equal to 6e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of failed tests with an acceptable relative tolerance of 6e-8 is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 102 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Input array length should be zero for disconnected input",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Before connecting the source: Input array length contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  First non-zero output is equal to 128.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  While source is connected: Input array length contains only the constant 128.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  After disconnecting the source: Input array length contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/buffer-resampling.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [interpolate] Interpolation of AudioBuffers to context sample rate",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Interpolated sine wave equals [0,0.05756402015686035,0.11493714153766632,0.1719290316104889,0.22835081815719604,0.2840152978897095,0.3387379050254822,0.39233702421188354,0.4446350336074829,0.49545857310295105,0.5446388125419617,0.5920131206512451,0.6374237537384033,0.6807208061218262,0.7217600345611572,0.7604057788848877...] with an element-wise tolerance of {\"absoluteThreshold\":0.090348,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  SNR (37.18 dB) is greater than or equal to 37.17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [interpolate] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-delaynode-interface/ctor-delay.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode() threw TypeError: \"Failed to construct 'DelayNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(1) threw TypeError: \"Failed to construct 'DelayNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(context, 42) threw TypeError: \"Failed to construct 'DelayNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new DelayNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof DelayNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.delayTime.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelCount: 17}} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelCount: 0}) threw NotSupportedError: \"Failed to construct 'DelayNode': The channel count provided (0) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelCount: 99}) threw NotSupportedError: \"Failed to construct 'DelayNode': The channel count provided (99) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelCountMode: \"max\"} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelCountMode: \"max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelCountMode: \"clamped-max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelCountMode: \"explicit\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelCountMode: \"foobar\"} threw TypeError: \"Failed to construct 'DelayNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after invalid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelInterpretation: \"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelInterpretation: \"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelInterpretation: \"foobar\"}) threw TypeError: \"Failed to construct 'DelayNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation after invalid setter is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 20 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new DelayNode(c, {\"delayTime\":0.5,\"maxDelayTime\":1.5}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.delayTime.value is equal to 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.delayTime.maxValue is equal to 1.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor options] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/pannernode-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Initialize context and panner did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [basic] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.refDistance is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.refDistance = 270.5 is equal to 270.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.maxDistance is equal to 10000.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.maxDistance = 100.5 is equal to 100.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.rolloffFactor is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.rolloffFactor = 0.75 is equal to 0.75.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.coneInnerAngle is equal to 360.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.coneInnerAngle = 240.5 is equal to 240.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.coneOuterAngle is equal to 360.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.coneOuterAngle = 166.5 is equal to 166.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.coneOuterGain is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.coneOuterGain = 0.25 is equal to 0.25.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.panningModel is equal to equalpower.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  inverse is equal to panner.distanceModel.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.positionX is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.positionY is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.positionZ is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.orientationX is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.orientationY is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.orientationZ is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [basic] All assertions passed. (total 22 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [listener] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.positionX is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.positionY is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.positionZ is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.forwardX is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.forwardY is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.forwardZ is equal to -1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.upX is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.upY is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.upZ is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [listener] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [panning models] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set panner.panningModel = \"equalpower\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.panningModel = \"equalpower\" is equal to equalpower.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set panner.panningModel = \"HRTF\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.panningModel = \"HRTF\" is equal to HRTF.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.panningModel = \"invalid\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.panningModel after invalid setter is equal to HRTF.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.panningModel = 1 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.panningModel is equal to HRTF.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [panning models] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [distance models] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.distanceModel = \"linear\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.distanceModel = \"linear\" is equal to linear.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.distanceModel = \"inverse\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.distanceModel = \"inverse\" is equal to inverse.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.distanceModel = \"exponential\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.distanceModel = \"exponential\" is equal to exponential.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.distanceModel = \"invalid\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.distanceModel is equal to exponential.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [distance models] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/ctor-audiobuffersource.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBufferSourceNode() threw TypeError: \"Failed to construct 'AudioBufferSourceNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBufferSourceNode(1) threw TypeError: \"Failed to construct 'AudioBufferSourceNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBufferSourceNode(context, 42) threw TypeError: \"Failed to construct 'AudioBufferSourceNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new AudioBufferSourceNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof AudioBufferSourceNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.buffer is equal to null.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.detune.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.loop is equal to false.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.loopEnd is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.loopStart is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.playbackRate.value is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 13 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [nullable buffer] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new AudioBufferSourceNode(c, {\"buffer\":null} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.buffer is equal to null.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [nullable buffer] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AudioBufferSourceNode(c, {\"buffer\":{},\"detune\":0.5,\"loop\":true,\"loopEnd\":0.010416666666666666,\"loopStart\":0.00010416666666666667,\"playbackRate\":0.75}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node2.buffer === buffer is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node2.detune.value is equal to 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node2.loop is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node2.loopEnd is equal to 0.010416666666666666.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node2.loopStart is equal to 0.00010416666666666667.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node2.playbackRate.value is equal to 0.75.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor options] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Tests attribute and maximum allowed delay of DelayNode",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting Delay length to 180 seconds or more threw NotSupportedError: \"Failed to execute 'createDelay' on 'BaseAudioContext': The max delay time provided (180) is outside the range (0, 180).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting Delay length to 0 seconds threw NotSupportedError: \"Failed to execute 'createDelay' on 'BaseAudioContext': The max delay time provided (0) is outside the range (0, 180).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting Delay length to negative threw NotSupportedError: \"Failed to execute 'createDelay' on 'BaseAudioContext': The max delay time provided (-1) is outside the range (0, 180).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting Delay length to NaN threw TypeError: \"Failed to execute 'createDelay' on 'BaseAudioContext': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  delay.delayTime.value = 0.5 is equal to 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Delaying test signal by 0.5 sec was done correctly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-options.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [valid-processor-data] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  |description| field in processorOptions from processor(\"foo\") is equal to the field in node constructor options (\"foo\").",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  |payload| array in processorOptions from processor([0,1,2,3]) is identical to the array the array in node constructor options ([0,1,2,3]).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [valid-processor-data] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [empty-option] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of properties in data from processor is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  |numberOfInputs| field in data from processor is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  |numberOfOutputs| field in data from processor is identical to the array 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [empty-option] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-convolvernode-interface/convolution-mono-mono.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Deviation (in dB) of triangular portion of convolution is less than or equal to -124.41.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Deviation in first part of tail of convolutions is less than or equal to -129.7.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered signal after tail of convolution is silent is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test signal convolved correctly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/audioparam-summingjunction.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered signal length is equal to 44100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered signal matches sum of two audio-rate gain changing signals plus baseline gain is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-delaynode-interface/delaynode-scheduling.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] DelayNode delayTime parameter can be scheduled at a given time",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Delaying test signal by 0.5 sec was done correctly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-convolvernode-interface/convolver-channels.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [channel-count-test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 1 channels did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 2 channels did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 3 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 3\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 4 channels did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 5 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 5\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 6 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 6\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 7 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 7\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 8 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 8\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 9 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 9\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 10 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 10\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 11 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 11\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 12 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 12\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 13 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 13\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 14 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 14\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 15 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 15\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 16 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 16\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 17 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 17\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 18 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 18\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 19 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 19\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 20 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 20\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 21 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 21\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 22 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 22\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 23 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 23\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 24 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 24\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 25 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 25\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 26 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 26\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 27 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 27\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 28 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 28\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 29 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 29\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 30 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 30\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 31 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 31\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 32 channels threw NotSupportedError: \"Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 32\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [channel-count-test] All assertions passed. (total 32 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Basic tests for AudioBuffer] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer = context.createBuffer(4, 88200, 44100) is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.sampleRate is equal to 44100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.length is equal to 88200.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.duration is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.numberOfChannels is equal to 4.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(0) instanceof window.Float32Array is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(1) instanceof window.Float32Array is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(2) instanceof window.Float32Array is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(3) instanceof window.Float32Array is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(4) threw IndexSizeError: \"Failed to execute 'getChannelData' on 'AudioBuffer': channel index (4) exceeds number of channels (4)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.createBuffer(1, 1000, 24576).duration is equal to 0.040690104166666664.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Basic tests for AudioBuffer] All assertions passed. (total 11 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-nondefault-delay.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] DelayNode with delay set to non-default maximum delay",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Delaying test signal by 1.5 sec was done correctly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/distance-exponential.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Exponential distance model for PannerNode",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.7071067690849304 is 0.7071067811865476 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.007001750636845827 is 0.007001750482092757 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.003518294310197234 is 0.003518294264038947 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0023494260385632515 is 0.0023494261261472827 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.001763534382916987 is 0.0017635344702377983 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.001411531469784677 is 0.0014115316522338509 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0011766677489504218 is 0.0011766678556703624 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0010088123381137848 is 0.0010088122653996085 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0008828681893646717 is 0.0008828681780783943 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0007848805980756879 is 0.0007848805998230096 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0007064709207043052 is 0.0007064709573249552 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.000642304599750787 is 0.0006423046636689839 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0005888238083571196 is 0.0005888238468344444 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0005435644998215139 is 0.0005435645231164894 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0005047661834396422 is 0.0005047662016094025 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00047113755135796964 is 0.00047113754285008335 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00044170982437208295 is 0.00044170984057529024 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0004157421935815364 is 0.00041574218539568777 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00039265822852030396 is 0.0003926582230242598 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0003720028616953641 is 0.00037200287308386824 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0003534120332915336 is 0.0003534120257829606 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0003365908924024552 is 0.00033659089256258244 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00032129825558513403 is 0.000321298258429533 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0003073348489124328 is 0.00030733484059099675 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00029453454772010446 is 0.00029453455621825906 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002827578573487699 is 0.0002827578851090863 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002718867617659271 is 0.00027188676345445823 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00026182059082202613 is 0.0002618206119036511 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002524732262827456 is 0.0002524732144543359 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002437702496536076 is 0.0002437702428669352 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00023564728326164186 is 0.00023564727603110863 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00022804820036981255 is 0.00022804820255702685 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002209239173680544 is 0.00022092392278720384 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002142313023796305 is 0.00021423128673467743 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00020793221483472735 is 0.00020793221938875033 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00020199301070533693 is 0.00020199299592548462 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001963836548384279 is 0.00019638363768289738 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00019107740081381053 is 0.00019107740605965677 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00018605036893859506 is 0.00018605037630348406 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001812810660339892 is 0.00018128107685376073 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00017675016715656966 is 0.0001767501827692215 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001724402536638081 is 0.00017244025400894687 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001683355076238513 is 0.00016833551109288422 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00016442163905594498 is 0.00016442164205827313 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00016068562399595976 is 0.00016068563573421284 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00015711563173681498 is 0.00015711563724134773 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001537008211016655 is 0.00015370082233532315 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001504312822362408 is 0.00015043128778808934 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00014729794929735363 is 0.00014729795546868834 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001442924840375781 is 0.0001442924881668536 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001414072175975889 is 0.00014140721551575796 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00013863506319466978 is 0.0001386350686280235 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00013596951612271369 is 0.00013596952227228016 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00013340453733690083 is 0.00013340454359453928 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00013093453890178353 is 0.00013093454653613723 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001285543548874557 is 0.0001285543512233631 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001262591395061463 is 0.00012625914770742077 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001240444544237107 is 0.00012404446352056735 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00012190613779239357 is 0.00012190613458793458 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011984026787104085 is 0.00011984027909696912 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011784327944042161 is 0.00011784327397949263 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011591173097258434 is 0.0001159117337066233 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011404248652979732 is 0.00011404249113547034 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011223257752135396 is 0.00011223258017966366 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011047922453144565 is 0.0001104792201042672 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010877980093937367 is 0.00010877980127016969 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010713187657529488 is 0.0001071318721742437 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010553312313277274 is 0.0001055331276499139 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010398139420431107 is 0.00010398139810869895 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010247463796986267 is 0.00010247463971713554 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010101093357661739 is 0.00010101092541556044 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009958843293134123 is 0.00009958843669576138 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009820545528782532 is 0.00009820545606372913 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009686036355560645 is 0.00009686036012182393 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009555161523167044 is 0.00009555161321177196 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009427775512449443 is 0.00009427776156615415 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0000930374299059622 is 0.00009303742792155874 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009182930807583034 is 0.00009182930655143387 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009065215999726206 is 0.00009065215868097922 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008950480696512386 is 0.00008950480825022975 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008838613575790077 is 0.00008838613799486857 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008729508408578113 is 0.00008729508581731386 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008623064786661416 is 0.00008623064142330383 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008519184484612197 is 0.00008519184320159076 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008417777280556038 is 0.00008417777532648753 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0000831875586300157 is 0.00008318756506491622 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008222038013627753 is 0.00008222038027131507 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008127542969305068 is 0.00008127542705529087 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008035194332478568 is 0.00008035194760827667 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007944921526359394 is 0.00007944921817669082 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007856654701754451 is 0.00007856654717020339 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007770327647449449 is 0.0000777032733947189 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007685876335017383 is 0.00007685876440058646 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007603241101605818 is 0.0000760324149373658 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007522365194745362 is 0.0000752236455072146 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0000744318967917934 is 0.00007443190100963128 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007365665078395978 is 0.0000736566494708926 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007289737550308928 is 0.00007289738085207445 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0000721536052878946 is 0.00007215360593004378 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007142485992517322 is 0.00007142485524626213 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of impulses is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error in distance gains is less than or equal to 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 102 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/setValueAtTime-within-block.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Test setValueAtTime with start time not on a block boundary",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-delaynode-interface/delaynode.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Tests attribute and basic functionality of DelayNode",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  delay.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  delay.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  delay.delayTime.defaultValue is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  delay.delayTime.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  delay.delayTime.value = 0.5 is equal to 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Delaying test signal by 0.5 sec was done correctly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/note-grain-on-timing.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test timing of noteGrainOn] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Found all grain starts and ends is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of start frames is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of end frames is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 0 boundary is identical to the array [0,441].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 1 boundary is identical to the array [662,1103].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 2 boundary is identical to the array [1323,1764].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 3 boundary is identical to the array [1985,2426].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 4 boundary is identical to the array [2646,3087].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 5 boundary is identical to the array [3308,3749].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 6 boundary is identical to the array [3969,4410].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 7 boundary is identical to the array [4631,5072].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 8 boundary is identical to the array [5292,5733].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 9 boundary is identical to the array [5954,6395].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 10 boundary is identical to the array [6615,7056].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 11 boundary is identical to the array [7276,7717].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 12 boundary is identical to the array [7938,8379].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 13 boundary is identical to the array [8600,9041].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 14 boundary is identical to the array [9261,9702].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 15 boundary is identical to the array [9922,10363].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 16 boundary is identical to the array [10584,11025].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 17 boundary is identical to the array [11246,11687].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 18 boundary is identical to the array [11907,12348].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 19 boundary is identical to the array [12568,13009].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 20 boundary is identical to the array [13230,13671].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 21 boundary is identical to the array [13892,14333].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 22 boundary is identical to the array [14553,14994].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 23 boundary is identical to the array [15214,15655].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 24 boundary is identical to the array [15876,16317].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 25 boundary is identical to the array [16538,16979].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 26 boundary is identical to the array [17199,17640].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 27 boundary is identical to the array [17861,18302].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 28 boundary is identical to the array [18522,18963].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 29 boundary is identical to the array [19184,19625].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 30 boundary is identical to the array [19845,20286].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 31 boundary is identical to the array [20507,20948].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 32 boundary is identical to the array [21168,21609].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 33 boundary is identical to the array [21830,22271].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 34 boundary is identical to the array [22491,22932].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 35 boundary is identical to the array [23153,23594].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 36 boundary is identical to the array [23814,24255].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 37 boundary is identical to the array [24475,24916].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 38 boundary is identical to the array [25137,25578].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 39 boundary is identical to the array [25799,26240].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 40 boundary is identical to the array [26460,26901].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 41 boundary is identical to the array [27122,27563].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 42 boundary is identical to the array [27783,28224].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 43 boundary is identical to the array [28445,28886].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 44 boundary is identical to the array [29106,29547].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 45 boundary is identical to the array [29767,30208].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 46 boundary is identical to the array [30429,30870].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 47 boundary is identical to the array [31091,31532].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 48 boundary is identical to the array [31752,32193].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 49 boundary is identical to the array [32414,32855].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 50 boundary is identical to the array [33075,33516].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 51 boundary is identical to the array [33737,34178].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 52 boundary is identical to the array [34398,34839].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 53 boundary is identical to the array [35060,35501].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 54 boundary is identical to the array [35721,36162].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 55 boundary is identical to the array [36383,36824].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 56 boundary is identical to the array [37044,37485].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 57 boundary is identical to the array [37706,38147].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 58 boundary is identical to the array [38367,38808].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 59 boundary is identical to the array [39029,39470].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 60 boundary is identical to the array [39690,40131].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 61 boundary is identical to the array [40352,40793].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 62 boundary is identical to the array [41013,41454].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 63 boundary is identical to the array [41675,42116].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 64 boundary is identical to the array [42336,42777].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 65 boundary is identical to the array [42998,43439].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 66 boundary is identical to the array [43659,44100].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 67 boundary is identical to the array [44320,44761].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 68 boundary is identical to the array [44982,45423].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 69 boundary is identical to the array [45644,46085].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 70 boundary is identical to the array [46305,46746].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 71 boundary is identical to the array [46967,47408].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 72 boundary is identical to the array [47628,48069].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 73 boundary is identical to the array [48290,48731].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 74 boundary is identical to the array [48951,49392].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 75 boundary is identical to the array [49613,50053].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 76 boundary is identical to the array [50274,50715].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 77 boundary is identical to the array [50936,51377].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 78 boundary is identical to the array [51597,52038].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 79 boundary is identical to the array [52259,52700].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 80 boundary is identical to the array [52920,53361].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 81 boundary is identical to the array [53581,54022].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 82 boundary is identical to the array [54243,54684].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 83 boundary is identical to the array [54904,55345].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 84 boundary is identical to the array [55566,56007].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 85 boundary is identical to the array [56227,56668].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 86 boundary is identical to the array [56889,57330].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 87 boundary is identical to the array [57551,57992].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 88 boundary is identical to the array [58212,58653].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 89 boundary is identical to the array [58874,59315].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 90 boundary is identical to the array [59535,59976].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 91 boundary is identical to the array [60197,60638].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 92 boundary is identical to the array [60858,61299].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 93 boundary is identical to the array [61520,61961].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 94 boundary is identical to the array [62181,62622].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 95 boundary is identical to the array [62843,63284].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 96 boundary is identical to the array [63504,63945].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 97 boundary is identical to the array [64165,64606].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 98 boundary is identical to the array [64827,65268].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 99 boundary is identical to the array [65488,65929].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of grains that started at the correct time is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of grains that ended at the correct time is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test timing of noteGrainOn] All assertions passed. (total 105 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-copy-curve.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test copying] Modifying curve should not modify WaveShaper",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Modifying curve array at time 0.016 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output of WaveShaper with modified curve is identical to the array [0,-0.03608250617980957,-0.10744702816009521,-0.13089966773986816,-0.18840241432189941,-0.23401212692260742,-0.2859501838684082,-0.310654878616333,-0.3947490453720093,-0.4055798053741455,-0.46558678150177,-0.5297708511352539,-0.5409641265869141,-0.6157069206237793,-0.6582663059234619,-0.6987311840057373...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test copying] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-constantsourcenode-interface/constant-source-output.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constant source] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Basic: ConstantSourceNode({offset: 0.5}) is identical to the array [0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constant source] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [stop before start] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConstantSourceNode with stop before start must output silence contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [stop before start] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [stop equal to start] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConstantSourceNode with stop equal to start  must output silence contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [stop equal to start] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [start/stop] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start/stop: ConstantSourceNode frames [0, 10) contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start/stop: ConstantSourceNode frames [10, 300) contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start/stop: ConstantSourceNode frames [300, 6000) contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [start/stop] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [basic automation] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Automation: ConstantSourceNode.linearRamp(1, 0.5) equals [0.5,0.5001666666666666,0.5003333333333333,0.5005,0.5006666666666667,0.5008333333333334,0.501,0.5011666666666666,0.5013333333333333,0.5015,0.5016666666666667,0.5018333333333334,0.502,0.5021666666666667,0.5023333333333333,0.5025...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":7.161e-7}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Automation: ConstantSourceNode after ramp contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [basic automation] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [connected audioparam] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Connected param: ConstantSourceNode frames [0, 10) contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Connected param: ConstantSourceNode frames [10, 6000) equals [1.5446388721466064,1.5920131206512451,1.6374237537384033,1.6807208061218262,1.7217600345611572,1.7604057788848877,1.7965296506881714,1.8300120830535889,1.8607418537139893,1.8886170387268066,1.9135453701019287,1.9354437589645386,1.954240322113037,1.9698717594146729,1.9822871685028076,1.9914445877075195...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [connected audioparam] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [setting-up-graph] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [setting-up-graph] All assertions passed. (total 0 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [start-playback-and-capture] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Recorded channel #0 should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Recorded channel #1 should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Recorded channel #2 should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Recorded channel #3 should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [start-playback-and-capture] 4 out of 4 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 2 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/audioparam-connect-audioratesignal.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered signal length is equal to 44100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered signal exactly matches the audio-rate gain changing signal is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highshelf.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Biquad highshelf filter",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of filters tested is equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finite values in the rendered output is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error in Highshelf filter response is less than or equal to 6.2577e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [exceptions-channels] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.createChannelMerger() did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.createChannelMerger(0) threw IndexSizeError: \"Failed to execute 'createChannelMerger' on 'BaseAudioContext': The number of inputs provided (0) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.createChannelMerger(32) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.createChannelMerger(33) threw IndexSizeError: \"Failed to execute 'createChannelMerger' on 'BaseAudioContext': The number of inputs provided (33) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [exceptions-channels] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [exceptions-properties] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  merger.channelCount is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  merger.channelCount = 3 threw InvalidStateError: \"Failed to set the 'channelCount' property on 'AudioNode': ChannelMerger: channelCount cannot be changed from 1\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  merger.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  merger.channelCountMode = \"max\" threw InvalidStateError: \"Failed to set the 'channelCountMode' property on 'AudioNode': ChannelMerger: channelCountMode cannot be changed from 'explicit'\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [exceptions-properties] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-waveshapernode-interface/silent-inputs.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test-0] curve output is non-zero for silent inputs",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  WaveShaper with silent inputs and curve {\"0\":0.5,\"1\":0.5,\"2\":0.5} contains only the constant 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test-0] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test-1] 2x curve output is non-zero for silent inputs",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  WaveShaper with 2x oversample, silent inputs, and curve {\"0\":0.5,\"1\":0.5,\"2\":0.5} contains only the constant 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test-1] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test-2] curve output is non-zero for no inputs",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  WaveShaper with no inputs and curve {\"0\":0.5,\"1\":0.5,\"2\":0.5} contains only the constant 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test-2] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-limits.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] WaveShaperNode including values outside the range of [-1,1]",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping -1.100000 to 0.000000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping -1.000000 to 0.000000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping -0.900000 to 0.100000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping -0.800000 to 0.200000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping -0.700000 to 0.300000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping -0.600000 to 0.400000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping -0.500000 to 0.500000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping -0.400000 to 0.600000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping -0.300000 to 0.700000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping -0.200000 to 0.800000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping -0.100000 to 0.900000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 0.000000 to 1.000000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 0.100000 to 0.900000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 0.200000 to 0.800000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 0.300000 to 0.700000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 0.400000 to 0.600000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 0.500000 to 0.500000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 0.600000 to 0.400000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 0.700000 to 0.300000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 0.800000 to 0.200000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 0.900000 to 0.100000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 1.000000 to 0.000000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error mapping 1.100000 to 0.000000 is less than or equal to 0.000001.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 23 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [disconnect()] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #0 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [disconnect()] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [disconnect(output)] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #0 contains only the constant 4.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [disconnect(output)] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [disconnect(AudioNode)] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #0 contains only the constant 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [disconnect(AudioNode)] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [disconnect(AudioNode, output)] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #0 contains only the constant 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [disconnect(AudioNode, output)] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [disconnect(AudioNode, output, input)] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #0 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #1 contains only the constant 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #2 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [disconnect(AudioNode, output, input)] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [exceptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitter.disconnect(2) threw IndexSizeError: \"Failed to execute 'disconnect' on 'AudioNode': The output index provided (2) is outside the range [0, 1].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Disconnecting a connection twice did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain1.disconnect(gain2) threw InvalidAccessError: \"Failed to execute 'disconnect' on 'AudioNode': the given destination is not connected.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain1.disconnect(gain3) threw InvalidAccessError: \"Failed to execute 'disconnect' on 'AudioNode': the given destination is not connected.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitter.disconnect(gain2, 2) threw IndexSizeError: \"Failed to execute 'disconnect' on 'AudioNode': The output index provided (2) is outside the range [0, 1].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitter.disconnect(gain1, 0) threw InvalidAccessError: \"Failed to execute 'disconnect' on 'AudioNode': output (0) is not connected to the given destination.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitter.disconnect(gain3, 0, 0) threw InvalidAccessError: \"Failed to execute 'disconnect' on 'AudioNode': output (0) is not connected to the input (0) of the destination.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitter.disconnect(merger, 3, 0) threw IndexSizeError: \"Failed to execute 'disconnect' on 'AudioNode': The output index provided (3) is outside the range [0, 1].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [exceptions] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [disabled-outputs] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Disabled outputs handled correctly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [disabled-outputs] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 7 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-iirfilternode-interface/test-iirfilternode.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "IIRFilterNode coefficients are checked properly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "feedforward coefficients can not be empty",
          "status": "PASS",
          "message": null
        },
        {
          "name": "feedback coefficients can not be empty",
          "status": "PASS",
          "message": null
        },
        {
          "name": "more than 20 feedforward coefficients can not be used",
          "status": "PASS",
          "message": null
        },
        {
          "name": "more than 20 feedback coefficients can not be used",
          "status": "PASS",
          "message": null
        },
        {
          "name": "at least one feedforward coefficient must be non-zero",
          "status": "PASS",
          "message": null
        },
        {
          "name": "the first feedback coefficient must be non-zero",
          "status": "PASS",
          "message": null
        },
        {
          "name": "IIRFilterNode getFrequencyResponse handles invalid frequencies properly",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-size.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Initializing AudioWorklet and Context] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Creating offline context for testing did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Creating test worklet resolved correctly.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Initializing AudioWorklet and Context] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Verify Size of AudioParam Arrays] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Render quantum 0: array size contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Render quantum 1: array size contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Render quantum 2-3: array size contains only the constant 128.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Remaining renders: array size contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Verify Size of AudioParam Arrays] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] DelayNode with delay set to default maximum delay",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Delaying test signal by 1 sec was done correctly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-getChannelData.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [buffer-eq] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(0) === buffer.getChannelData(0) is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(1) === buffer.getChannelData(1) is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [buffer-eq] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [buffer-not-eq] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer1.getChannelData(0) === buffer2.getChannelData(0) is equal to false.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer1.getChannelData(1) === buffer2.getChannelData(1) is equal to false.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [buffer-not-eq] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Test setTargetAtTime with start time in the past",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test[0:127] contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Reference[0:127] contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test[128:] is identical to the array [1,0.9994508624076843,0.9989020228385925,0.9983535408973694,0.9978054165840149,0.9972575902938843,0.9967101216316223,0.996163010597229,0.9956161975860596,0.9950697422027588,0.9945235848426819,0.9939777851104736,0.9934322834014893,0.9928871393203735,0.9923423528671265,0.9917978644371033...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [module-loading-after-realtime-context-creation] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  \"dummyWorkletNode\" is an instance of AudioWorkletNode from realtime context is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [module-loading-after-realtime-context-creation] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [module-loading-after-offline-context-creation] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  \"dummyWorkletNode\" is an instance of AudioWorkletNode from offline context is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [module-loading-after-offline-context-creation] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode() threw TypeError: \"Failed to construct 'ConvolverNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(1) threw TypeError: \"Failed to construct 'ConvolverNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(context, 42) threw TypeError: \"Failed to construct 'ConvolverNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new ConvolverNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof ConvolverNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.normalize is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.buffer is equal to null.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(c, {channelCount: 2}} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(c, {channelCount: 3}} threw NotSupportedError: \"Failed to construct 'ConvolverNode': ConvolverNode: channelCount cannot be changed from 2\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(c, {channelCountMode: \"clamped-max\"} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(c, {channelCountMode: \"max\"}) threw NotSupportedError: \"Failed to construct 'ConvolverNode': ConvolverNode: channelCountMode cannot be changed from 'clamped-max'\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(c, {channelCountMode: \"explicit\"}) threw NotSupportedError: \"Failed to construct 'ConvolverNode': ConvolverNode: channelCountMode cannot be changed from 'clamped-max'\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(c, {channelInterpretation: \"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(c, {channelInterpretation: \"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(c, {channelInterpretation: \"foobar\"}) threw TypeError: \"Failed to construct 'ConvolverNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation after invalid setter is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 13 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [nullable buffer] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new ConvolverNode(c, {\"buffer\":null} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.buffer is equal to null.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [nullable buffer] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [construct with options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new ConvolverNode(c, {\"buffer\":{},\"disableNormalization\":false}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 instanceOf ConvolverNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.buffer === <buf> is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.normalize is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node2 = new ConvolverNode(, {\"buffer\":null,\"disableNormalization\":true}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node2.buffer is equal to null.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node2.normalize is equal to false.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node3 = new ConvolverNode(context, {\"buffer\":null,\"disableNormalization\":false}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node3.buffer is equal to null.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node3.normalize is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [construct with options] All assertions passed. (total 10 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-gainnode-interface/gain-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gainNode.gain instanceof AudioParam is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-oscillatornode-interface/ctor-oscillator.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode() threw TypeError: \"Failed to construct 'OscillatorNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(1) threw TypeError: \"Failed to construct 'OscillatorNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(context, 42) threw TypeError: \"Failed to construct 'OscillatorNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new OscillatorNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof OscillatorNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.type is equal to sine.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.frequency.value is equal to 440.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelCount: 17}} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelCount: 0}) threw NotSupportedError: \"Failed to construct 'OscillatorNode': The channel count provided (0) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelCount: 99}) threw NotSupportedError: \"Failed to construct 'OscillatorNode': The channel count provided (99) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelCountMode: \"max\"} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelCountMode: \"max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelCountMode: \"clamped-max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelCountMode: \"explicit\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelCountMode: \"foobar\"} threw TypeError: \"Failed to construct 'OscillatorNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after invalid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelInterpretation: \"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelInterpretation: \"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelInterpretation: \"foobar\"}) threw TypeError: \"Failed to construct 'OscillatorNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation after invalid setter is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 20 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new OscillatorNode(c, {\"type\":\"sawtooth\",\"detune\":7,\"frequency\":918}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.type is equal to sawtooth.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.detune.value is equal to 7.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.frequency.value is equal to 918.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {\"type\":\"sine\",\"periodicWave\":{}}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {\"type\":\"custom\"}) threw InvalidStateError: \"Failed to construct 'OscillatorNode': A PeriodicWave must be specified if the type is set to \"custom\"\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(, {\"type\":\"custom\",\"periodicWave\":{}}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor options] All assertions passed. (total 10 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/historical.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "webkitAudioContext interface should not exist",
          "status": "PASS",
          "message": null
        },
        {
          "name": "webkitAudioPannerNode interface should not exist",
          "status": "PASS",
          "message": null
        },
        {
          "name": "webkitOfflineAudioContext interface should not exist",
          "status": "PASS",
          "message": null
        },
        {
          "name": "dopplerFactor member should not exist on the AudioListener.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "speedOfSound member should not exist on the AudioListener.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setVelocity member should not exist on the AudioListener.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "setVelocity should not exist on PannerNodes.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-channel-count.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [setup-buffer-and-worklet] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [setup-buffer-and-worklet] All assertions passed. (total 0 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [verify-rendered-buffer] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  First half of Channel #0 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Second half of Channel #0 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  First half of Channel #1 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Second half of Channel #1 contains only the constant 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  First half of Channel #2 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Second half of Channel #2 contains only the constant 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [verify-rendered-buffer] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/setTargetAtTime-after-event-within-block.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Test setTargetAtTime after an event in the same processing block",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [start/stop exceptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(NaN) threw TypeError: \"Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(Infinity) threw TypeError: \"Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(-Infinity) threw TypeError: \"Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Calling stop() before start() threw InvalidStateError: \"Failed to execute 'stop' on 'AudioScheduledSourceNode': cannot call stop without calling start first.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(-1) threw RangeError: \"Failed to execute 'start' on 'AudioBufferSourceNode': The start time provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(0,-1) threw RangeError: \"Failed to execute 'start' on 'AudioBufferSourceNode': The offset provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(0,0,-1) threw RangeError: \"Failed to execute 'start' on 'AudioBufferSourceNode': The duration provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Calling start() twice threw InvalidStateError: \"Failed to execute 'start' on 'AudioBufferSourceNode': cannot call start more than once.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(-1) threw RangeError: \"Failed to execute 'stop' on 'AudioScheduledSourceNode': The stop time provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(NaN) threw TypeError: \"Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(Infinity) threw TypeError: \"Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(-Infinity) threw TypeError: \"Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [start/stop exceptions] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audionode-interface/audionode-channel-rules.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Channel mixing rules for AudioNodes",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered number of frames is equal to 1360.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered number of channels is equal to 8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 1, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 2, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 3, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 4, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 5, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 6, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 7, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 8, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 11, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 12, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 14, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 18, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 111, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 122, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 123, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 124, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 128, max, speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 1, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 2, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 3, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 4, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 5, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 6, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 7, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 8, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 11, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 12, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 14, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 18, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 111, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 122, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 123, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 124, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 128, clamped-max(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 1, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 2, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 3, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 4, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 5, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 6, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 7, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 8, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 11, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 12, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 14, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 18, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 111, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 122, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 123, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 124, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 128, explicit(1), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 1, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 2, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 3, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 4, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 5, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 6, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 7, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 8, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 11, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 12, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 14, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 18, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 111, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 122, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 123, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 124, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 128, explicit(2), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 1, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 2, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 3, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 4, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 5, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 6, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 7, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 8, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 11, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 12, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 14, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 18, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 111, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 122, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 123, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 124, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 128, explicit(4), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 1, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 2, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 3, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 4, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 5, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 6, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 7, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 8, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 11, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 12, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 14, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 18, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 111, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 122, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 123, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 124, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 128, explicit(6), speakers is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 1, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 2, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 3, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 4, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 5, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 6, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 7, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 8, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 11, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 12, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 14, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 18, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 111, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 122, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 123, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 124, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 128, max, discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 1, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 2, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 3, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 4, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 5, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 6, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 7, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 8, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 11, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 12, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 14, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 18, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 111, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 122, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 123, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 124, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 128, clamped-max(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 1, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 2, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 3, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 4, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 5, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 6, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 7, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 8, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 11, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 12, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 14, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 18, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 111, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 122, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 123, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 124, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 128, explicit(4), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 1, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 2, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 3, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 4, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 5, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 6, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 7, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 8, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 11, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 12, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 14, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 18, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 111, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 122, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 123, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 124, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  connections: 128, explicit(8), discrete is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 172 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-bandpass.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Biquad bandpass filter.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of filters tested is equal to 4.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finite values in the rendered output is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error in Bandpass filter response is less than or equal to 2.2501e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] AudioParam linearRampToValueAtTime() functionality",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of tests started and ended at the correct time is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 0 at offset 1277 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 1 at offset 1532 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 2 at offset 3838 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 3 at offset 5246 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 4 at offset 5501 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 5 at offset 7164 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 6 at offset 8317 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 7 at offset 9470 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 8 at offset 11133 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 9 at offset 13181 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 10 at offset 13439 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 11 at offset 15102 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 12 at offset 16255 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 13 at offset 17918 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 14 at offset 19071 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 15 at offset 20734 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 16 at offset 22398 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 17 at offset 23550 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 18 at offset 24060 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 19 at offset 26366 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 20 at offset 26876 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 21 at offset 28029 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 22 at offset 30333 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 23 at offset 30845 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 24 at offset 31998 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 25 at offset 33661 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 26 at offset 34814 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 27 at offset 35967 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 28 at offset 37630 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 29 at offset 38783 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 30 at offset 40446 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 31 at offset 41599 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 32 at offset 43262 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 33 at offset 44415 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 34 at offset 46078 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 35 at offset 47231 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 36 at offset 48894 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 37 at offset 50047 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 38 at offset 50557 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 39 at offset 52863 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 40 at offset 53373 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 41 at offset 55164 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 42 at offset 56189 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 43 at offset 57852 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 44 at offset 58495 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 45 at offset 60796 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 46 at offset 61311 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 47 at offset 63484 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 48 at offset 64255 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 49 at offset 65918 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 50 at offset 66428 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 51 at offset 68604 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 52 at offset 68988 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 53 at offset 71420 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 54 at offset 72573 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 55 at offset 73981 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 56 at offset 75389 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 57 at offset 76542 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 58 at offset 76925 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 59 at offset 79358 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 60 at offset 80511 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 61 at offset 81919 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 62 at offset 83327 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 63 at offset 84092 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 64 at offset 85245 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 65 at offset 86653 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 66 at offset 87806 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 67 at offset 88828 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 68 at offset 90367 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 69 at offset 92413 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 70 at offset 93183 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 71 at offset 95229 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 72 at offset 95484 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 73 at offset 96765 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 74 at offset 98300 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 75 at offset 100477 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 76 at offset 100732 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 77 at offset 102015 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 78 at offset 103933 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 79 at offset 105724 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 80 at offset 106239 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 81 at offset 108415 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 82 at offset 109055 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 83 at offset 111101 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 84 at offset 111356 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 85 at offset 112764 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 86 at offset 114047 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 87 at offset 116220 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 88 at offset 116426 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 89 at offset 119039 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 90 at offset 120322 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 91 at offset 120395 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 92 at offset 123004 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 93 at offset 124287 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 94 at offset 125570 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 95 at offset 126593 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 96 at offset 128255 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 97 at offset 128895 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 98 at offset 130815 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 99 at offset 132223 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of failed tests with an acceptable relative tolerance of 0.000001865 is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 102 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-convolvernode-interface/convolver-upmixing-1-channel-response.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "speakers, initially mono",
          "status": "PASS",
          "message": null
        },
        {
          "name": "discrete",
          "status": "PASS",
          "message": null
        },
        {
          "name": "speakers, initially stereo",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [setup-worklet] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The first half of the captured buffer contains only the constant 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The second half of the captured buffer contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [setup-worklet] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Panner k-rate positionX] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX: Setting positionX.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX: k-rate node: positionX.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX: k-rate node: positionX.linearRampToValueAtTime(1000,0.08) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX: a-rate node:positionX.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX: a-rate node:positionX.linearRampToValueAtTime(1000,0.08) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX: Output of k-rate PannerNode is identical to the array [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX: Output of a-rate PannerNode is identical to the array [0,0.07824615389108658,0.060729388147592545,0.0456632636487484,0.03603518381714821,0.029616549611091614,0.02508825622498989,0.021739643067121506,0.019169356673955917,0.017137136310338974,0.015491400845348835,0.014132188633084297,0.012991074472665787,0.0120196882635355,0.011182943359017372,0.010454747825860977...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 638 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX k-rate output [0: 127] contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX k-rate output [128: 255] contains only the constant 0.001247443608008325.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX k-rate output [256: 383] contains only the constant 0.0006243652314879.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX k-rate output [384: 511] contains only the constant 0.0004163846024312079.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX k-rate output [512: 639] contains only the constant 0.00031234207563102245.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Panner k-rate positionX] All assertions passed. (total 13 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Panner k-rate positionY] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY: Setting positionY.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY: k-rate node: positionY.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY: k-rate node: positionY.linearRampToValueAtTime(1000,0.08) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY: a-rate node:positionY.setValueAtTime(0,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY: a-rate node:positionY.linearRampToValueAtTime(1000,0.08) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY: Output of k-rate PannerNode is identical to the array [0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY: Output of a-rate PannerNode is identical to the array [0.15397992730140686,0.05288306251168251,0.033593595027923584,0.025778021663427353,0.02088121324777603,0.01750437542796135,0.015046180225908756,0.013182773254811764,0.011724470183253288,0.010553553700447083,0.009593426249921322,0.008792281150817871,0.008113890886306763,0.007532190065830946,0.0070279804058372974,0.006586793810129166...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 638 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY k-rate output [0: 127] contains only the constant 0.15397992730140686.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY k-rate output [128: 255] contains only the constant 0.0008113960502669215.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY k-rate output [256: 383] contains only the constant 0.0004070002760272473.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY k-rate output [384: 511] contains only the constant 0.0002716227318160236.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY k-rate output [512: 639] contains only the constant 0.00020382541697472334.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Panner k-rate positionY] All assertions passed. (total 13 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Panner k-rate orientationX] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX: Setting orientationX.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX: k-rate node: orientationX.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX: k-rate node: orientationX.linearRampToValueAtTime(10,0.08) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX: a-rate node:orientationX.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX: a-rate node:orientationX.linearRampToValueAtTime(10,0.08) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX: Output of k-rate PannerNode is identical to the array [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX: Output of a-rate PannerNode is identical to the array [0,0.0007919143536128104,0.0015773701015859842,0.002354065189138055,0.0031235984060913324,0.00388692831620574,0.00464255316182971,0.005390664096921682,0.006131517700850964,0.006865368224680424,0.00759231299161911,0.008311999030411243,0.009024843573570251,0.009730782359838486,0.010429717600345612,0.011121843941509724...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 636 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX k-rate output [0: 127] contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX k-rate output [128: 255] contains only the constant 0.05854206532239914.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX k-rate output [256: 383] contains only the constant 0.07888391613960266.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX k-rate output [384: 511] contains only the constant 0.08858340233564377.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationX k-rate output [512: 639] contains only the constant 0.09418901801109314.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Panner k-rate orientationX] All assertions passed. (total 13 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Panner k-rate orientationY] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY: Setting orientationY.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY: k-rate node: orientationY.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY: k-rate node: orientationY.linearRampToValueAtTime(10,0.08) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY: a-rate node:orientationY.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY: a-rate node:orientationY.linearRampToValueAtTime(10,0.08) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY: Output of k-rate PannerNode is identical to the array [0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY: Output of a-rate PannerNode is identical to the array [0.07389304786920547,0.07389719784259796,0.07390938699245453,0.07392927259206772,0.07395654916763306,0.0739908218383789,0.07403190433979034,0.07407935708761215,0.07413297891616821,0.07419241219758987,0.07425744831562042,0.07432778924703598,0.07440318167209625,0.07448337227106094,0.07456806302070618,0.07465711236000061...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 635 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY k-rate output [0: 127] contains only the constant 0.07389304786920547.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY k-rate output [128: 255] contains only the constant 0.08894405514001846.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY k-rate output [256: 383] contains only the constant 0.09769003093242645.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY k-rate output [384: 511] contains only the constant 0.10211682319641113.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY k-rate output [512: 639] contains only the constant 0.1047375500202179.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Panner k-rate orientationY] All assertions passed. (total 13 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Panner k-rate orientationZ] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ: Setting orientationZ.automationRate to \"k-rate\" is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ: k-rate node: orientationZ.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ: k-rate node: orientationZ.linearRampToValueAtTime(10,0.08) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ: a-rate node:orientationZ.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ: a-rate node:orientationZ.linearRampToValueAtTime(10,0.08) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ: Output of k-rate PannerNode is identical to the array [0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ: Output of a-rate PannerNode is identical to the array [0.07389304786920547,0.07389719784259796,0.07390938699245453,0.07392927259206772,0.07395654916763306,0.0739908218383789,0.07403190433979034,0.07407935708761215,0.07413297891616821,0.07419241219758987,0.07425744831562042,0.07432778924703598,0.07440318167209625,0.07448337227106094,0.07456806302070618,0.07465711236000061...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 635 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ k-rate output [0: 127] contains only the constant 0.07389304786920547.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ k-rate output [128: 255] contains only the constant 0.08894405514001846.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ k-rate output [256: 383] contains only the constant 0.09769003093242645.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ k-rate output [384: 511] contains only the constant 0.10211682319641113.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ k-rate output [512: 639] contains only the constant 0.1047375500202179.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Panner k-rate orientationZ] All assertions passed. (total 13 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Listener k-rate positionX] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener positionX.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener positionX.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener positionX.linearRampToValueAtTime(1000,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionX: Output is not constantly 0.0013299635611474514 (contains 512 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionX: Output [0, 127] contains only the constant 0.0013299635611474514.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionX: Output [128, 255] contains only the constant 0.012293370440602303.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionX: Output [256, 383] contains only the constant 0.011927678249776363.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionX: Output [384, 511] contains only the constant 0.008936939761042595.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionX: Output [512, 639] contains only the constant 0.006943006068468094.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Listener k-rate positionX] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Listener k-rate positionY] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener positionY.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener positionY.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener positionY.linearRampToValueAtTime(1000,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionY: Output is not constantly 0.0011720563052222133 (contains 512 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionY: Output [0, 127] contains only the constant 0.0011720563052222133.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionY: Output [128, 255] contains only the constant 0.014085138216614723.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionY: Output [256, 383] contains only the constant 0.013277369551360607.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionY: Output [384, 511] contains only the constant 0.009970049373805523.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionY: Output [512, 639] contains only the constant 0.007745886687189341.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Listener k-rate positionY] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Listener k-rate positionZ] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener positionZ.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener positionZ.setValueAtTime(1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener positionZ.linearRampToValueAtTime(1000,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionZ: Output is not constantly 0.0013299635611474514 (contains 512 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionZ: Output [0, 127] contains only the constant 0.0013299635611474514.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionZ: Output [128, 255] contains only the constant 0.012293369509279728.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionZ: Output [256, 383] contains only the constant 0.011927677318453789.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionZ: Output [384, 511] contains only the constant 0.008936937898397446.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate positionZ: Output [512, 639] contains only the constant 0.006943006534129381.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Listener k-rate positionZ] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Listener k-rate forwardX] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener forwardX.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener forwardX.setValueAtTime(-1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener forwardX.linearRampToValueAtTime(1,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardX: Output is not constantly 0.0011720563052222133 (contains 512 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardX: Output [0, 127] contains only the constant 0.0011720563052222133.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardX: Output [128, 255] contains only the constant 0.0011720549082383513.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardX: Output [256, 383] contains only the constant 0.0011720503680408.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardX: Output [384, 511] contains only the constant 0.001172042335383594.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardX: Output [512, 639] contains only the constant 0.0011720301117748022.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Listener k-rate forwardX] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Listener k-rate forwardY] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener forwardY.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener forwardY.setValueAtTime(-1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener forwardY.linearRampToValueAtTime(1,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardY: Output is not constantly 0.0008287689415737987 (contains 512 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardY: Output [0, 127] contains only the constant 0.0008287689415737987.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardY: Output [128, 255] contains only the constant 0.0011720563052222133.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardY: Output [256, 383] contains only the constant 0.0011720563052222133.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardY: Output [384, 511] contains only the constant 0.0011720563052222133.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardY: Output [512, 639] contains only the constant 0.0011720563052222133.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Listener k-rate forwardY] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Listener k-rate forwardZ] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener forwardZ.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener forwardZ.setValueAtTime(-1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener forwardZ.linearRampToValueAtTime(1,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardZ: Output is not constantly 0.0011720563052222133 (contains 512 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardZ: Output [0, 127] contains only the constant 0.0011720563052222133.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardZ: Output [128, 255] contains only the constant 0.0011720549082383513.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardZ: Output [256, 383] contains only the constant 0.0011720503680408.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardZ: Output [384, 511] contains only the constant 0.001172042335383594.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate forwardZ: Output [512, 639] contains only the constant 0.0011720301117748022.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Listener k-rate forwardZ] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Listener k-rate upX] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener upX.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener upX.setValueAtTime(-1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener upX.linearRampToValueAtTime(1000,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upX: Output is not constantly 0.0010044159134849906 (contains 512 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upX: Output [0, 127] contains only the constant 0.0010044159134849906.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upX: Output [128, 255] contains only the constant 0.0010139292571693659.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upX: Output [256, 383] contains only the constant 0.001008721999824047.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upX: Output [384, 511] contains only the constant 0.0010071939323097467.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upX: Output [512, 639] contains only the constant 0.0010064655216410756.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Listener k-rate upX] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Listener k-rate upY] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener upY.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener upY.setValueAtTime(-1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener upY.linearRampToValueAtTime(1000,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upY: Output is not constantly 0.0008287689415737987 (contains 512 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upY: Output [0, 127] contains only the constant 0.0008287689415737987.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upY: Output [128, 255] contains only the constant 0.0011720563052222133.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upY: Output [256, 383] contains only the constant 0.0011720563052222133.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upY: Output [384, 511] contains only the constant 0.0011720563052222133.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upY: Output [512, 639] contains only the constant 0.0011720563052222133.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Listener k-rate upY] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Listener k-rate upZ] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener upZ.automationRate is equal to k-rate.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener upZ.setValueAtTime(-1,0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener upZ.linearRampToValueAtTime(1000,1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upZ: Output is not constantly 0.0010044159134849906 (contains 512 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upZ: Output [0, 127] contains only the constant 0.0010044159134849906.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upZ: Output [128, 255] contains only the constant 0.0010139293735846877.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upZ: Output [256, 383] contains only the constant 0.001008721999824047.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upZ: Output [384, 511] contains only the constant 0.0010071939323097467.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Listener k-rate upZ: Output [512, 639] contains only the constant 0.0010064655216410756.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Listener k-rate upZ] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 14 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-offlineaudiocontext-interface/ctor-offlineaudiocontext.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [basic] Old-style constructor",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext(3) threw TypeError: \"Failed to construct 'OfflineAudioContext': parameter 1 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext(3, 42) threw TypeError: \"Failed to construct 'OfflineAudioContext': Valid arities are: [1, 3], but 2 arguments provided.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(3, 42, 12345) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.length is equal to 42.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.sampleRate is equal to 12345.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.destination.channelCount is equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.destination.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.destination.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [basic] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [options-1] Required options",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext() threw TypeError: \"Failed to construct 'OfflineAudioContext': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext({}) threw TypeError: \"Failed to construct 'OfflineAudioContext': required member length is undefined.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext({\"length\":42}) threw TypeError: \"Failed to construct 'OfflineAudioContext': required member sampleRate is undefined.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext({\"sampleRate\":12345}) threw TypeError: \"Failed to construct 'OfflineAudioContext': required member length is undefined.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c2 = new OfflineAudioContext({\"length\":42,\"sampleRate\":12345}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c2.destination.channelCount is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c2.length is equal to 42.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c2.sampleRate is equal to 12345.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c2.destination.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c2.destination.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [options-1] All assertions passed. (total 10 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [options-2] Invalid options",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext({\"length\":42,\"sampleRate\":8000,\"numberOfChannels\":33}) threw NotSupportedError: \"Failed to construct 'OfflineAudioContext': The number of channels provided (33) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext({\"length\":0,\"sampleRate\":8000}) threw NotSupportedError: \"Failed to construct 'OfflineAudioContext': The number of frames provided (0) is less than the minimum bound (1).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext({\"length\":1,\"sampleRate\":1}) threw NotSupportedError: \"Failed to construct 'OfflineAudioContext': The sampleRate provided (1) is outside the range [3000, 384000].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [options-2] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [options-3] Valid options",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c = new OfflineAudioContext{\"length\":1,\"sampleRate\":8000}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c.length is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c.sampleRate is equal to 8000.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c.destination.channelCount is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c.destination.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c.destination.channelCountMode is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c = new OfflineAudioContext{\"length\":1,\"sampleRate\":8000,\"numberOfChannels\":7}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c.destination.channelCount is equal to 7.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [options-3] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-channels.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [validate .buffer] Validatation of AudioBuffer in .buffer attribute setter",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  source.buffer = 57 threw TypeError: \"Failed to set the 'buffer' property on 'AudioBufferSourceNode': The provided value is not of type 'AudioBuffer'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  source.buffer = null did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  source.buffer = buffer did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  source.buffer = new buffer threw InvalidStateError: \"Failed to set the 'buffer' property on 'AudioBufferSourceNode': Cannot set buffer to non-null after it has been already been set to a non-null buffer\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  source.buffer = null again did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  source.buffer = buffer again threw InvalidStateError: \"Failed to set the 'buffer' property on 'AudioBufferSourceNode': Cannot set buffer to non-null after it has been already been set to a non-null buffer\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  source.buffer = null after setting to null did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting source with mono buffer did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting source with stereo buffer did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting source with 3 channels buffer did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting source with 4 channels buffer did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting source with 5 channels buffer did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting source with 6 channels buffer did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting source with 7 channels buffer did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting source with 8 channels buffer did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting source with 9 channels buffer did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [validate .buffer] All assertions passed. (total 16 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/distance-inverse.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.7071067690849304 is 0.7071067811865476 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.007001750636845827 is 0.007001750482092757 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.003518294310197234 is 0.003518294264038947 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0023494260385632515 is 0.0023494261261472827 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.001763534382916987 is 0.0017635344702377983 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.001411531469784677 is 0.0014115316522338509 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0011766677489504218 is 0.0011766678556703624 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0010088123381137848 is 0.0010088122653996085 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0008828681893646717 is 0.0008828681780783943 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0007848805980756879 is 0.0007848805998230096 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0007064709207043052 is 0.0007064709573249552 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.000642304599750787 is 0.0006423046636689839 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0005888238083571196 is 0.0005888238468344444 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0005435644998215139 is 0.0005435645231164894 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0005047661834396422 is 0.0005047662016094025 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00047113755135796964 is 0.00047113754285008335 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00044170982437208295 is 0.00044170984057529024 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0004157421935815364 is 0.00041574218539568777 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00039265822852030396 is 0.0003926582230242598 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0003720028616953641 is 0.00037200287308386824 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0003534120332915336 is 0.0003534120257829606 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0003365908924024552 is 0.00033659089256258244 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00032129825558513403 is 0.000321298258429533 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0003073348489124328 is 0.00030733484059099675 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00029453454772010446 is 0.00029453455621825906 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002827578573487699 is 0.0002827578851090863 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002718867617659271 is 0.00027188676345445823 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00026182059082202613 is 0.0002618206119036511 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002524732262827456 is 0.0002524732144543359 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002437702496536076 is 0.0002437702428669352 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00023564728326164186 is 0.00023564727603110863 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00022804820036981255 is 0.00022804820255702685 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002209239173680544 is 0.00022092392278720384 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0002142313023796305 is 0.00021423128673467743 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00020793221483472735 is 0.00020793221938875033 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00020199301070533693 is 0.00020199299592548462 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001963836548384279 is 0.00019638363768289738 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00019107740081381053 is 0.00019107740605965677 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00018605036893859506 is 0.00018605037630348406 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001812810660339892 is 0.00018128107685376073 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00017675016715656966 is 0.0001767501827692215 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001724402536638081 is 0.00017244025400894687 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001683355076238513 is 0.00016833551109288422 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00016442163905594498 is 0.00016442164205827313 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00016068562399595976 is 0.00016068563573421284 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00015711563173681498 is 0.00015711563724134773 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001537008211016655 is 0.00015370082233532315 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001504312822362408 is 0.00015043128778808934 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00014729794929735363 is 0.00014729795546868834 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001442924840375781 is 0.0001442924881668536 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001414072175975889 is 0.00014140721551575796 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00013863506319466978 is 0.0001386350686280235 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00013596951612271369 is 0.00013596952227228016 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00013340453733690083 is 0.00013340454359453928 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00013093453890178353 is 0.00013093454653613723 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001285543548874557 is 0.0001285543512233631 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001262591395061463 is 0.00012625914770742077 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0001240444544237107 is 0.00012404446352056735 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00012190613779239357 is 0.00012190613458793458 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011984026787104085 is 0.00011984027909696912 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011784327944042161 is 0.00011784327397949263 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011591173097258434 is 0.0001159117337066233 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011404248652979732 is 0.00011404249113547034 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011223257752135396 is 0.00011223258017966366 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00011047922453144565 is 0.0001104792201042672 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010877980093937367 is 0.00010877980127016969 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010713187657529488 is 0.0001071318721742437 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010553312313277274 is 0.0001055331276499139 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010398139420431107 is 0.00010398139810869895 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010247463796986267 is 0.00010247463971713554 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00010101093357661739 is 0.00010101092541556044 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009958843293134123 is 0.00009958843669576138 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009820545528782532 is 0.00009820545606372913 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009686036355560645 is 0.00009686036012182393 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009555161523167044 is 0.00009555161321177196 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009427775512449443 is 0.00009427776156615415 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0000930374299059622 is 0.00009303742792155874 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009182930807583034 is 0.00009182930655143387 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00009065215999726206 is 0.00009065215868097922 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008950480696512386 is 0.00008950480825022975 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008838613575790077 is 0.00008838613799486857 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008729508408578113 is 0.00008729508581731386 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008623064786661416 is 0.00008623064142330383 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008519184484612197 is 0.00008519184320159076 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008417777280556038 is 0.00008417777532648753 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0000831875586300157 is 0.00008318756506491622 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008222038013627753 is 0.00008222038027131507 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008127542969305068 is 0.00008127542705529087 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00008035194332478568 is 0.00008035194760827667 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007944921526359394 is 0.00007944921817669082 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007856654701754451 is 0.00007856654717020339 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007770327647449449 is 0.0000777032733947189 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007685876335017383 is 0.00007685876440058646 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007603241101605818 is 0.0000760324149373658 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007522365194745362 is 0.0000752236455072146 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0000744318967917934 is 0.00007443190100963128 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007365665078395978 is 0.0000736566494708926 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007289737550308928 is 0.00007289738085207445 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.0000721536052878946 is 0.00007215360593004378 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  0.00007142485992517322 is 0.00007142485524626213 within an error of 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of impulses is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error in distance gains is less than or equal to 0.0000033.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 102 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/baseaudiocontext-audioworklet.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test if AudioWorklet exists] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  BaseAudioContext.audioWorklet is an instance of AudioWorklet is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test if AudioWorklet exists] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-messageport.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test postMessage from AudioWorkletProcessor to AudioWorkletNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The initial message from PortProcessor is equal to created.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test postMessage from AudioWorkletProcessor to AudioWorkletNode] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test postMessage from AudioWorkletNode to AudioWorkletProcessor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The response from PortProcessor is equal to hello.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test postMessage from AudioWorkletNode to AudioWorkletProcessor] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/audioparam-large-endtime.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [linearRamp] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  linearRampToValue(0.1, 1e+300) successfully rendered",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [linearRamp] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [exponentialRamp] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  exponentialRampToValue(0.1, 1e+300) successfully rendered",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [exponentialRamp] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-gainnode-interface/no-dezippering.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test0] Dezippering of GainNode removed",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  output[0:127] contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  output[128:] contains only the constant 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test0] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test2] Compare value setter and setValueAtTime",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  .value setter output is identical to the array [0,0.1679382622241974,0.3311063051223755,0.4848693013191223,0.6248595714569092,0.7471005916595459,0.8481203317642212,0.9250491857528687,0.9757021069526672,0.9986401796340942,0.9932119250297546,0.9595714807510376,0.898674488067627,0.812250554561615,0.7027547359466553,0.5732971429824829...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  .value setter output matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test2] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test3] Automation effects",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  With modulation: .value setter output is identical to the array [0,0.23077473044395447,0.5608845949172974,0.92753666639328,1.249295711517334,1.4497532844543457,1.480018973350525,1.3333392143249512,1.0474791526794434,0.6941255927085876,0.35842588543891907,0.1146966814994812,0.00547564635053277,0.03009122796356678,0.1460980921983719,0.28310179710388184...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  With modulation: .value setter output matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test3] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurveAtTime.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] AudioParam setValueCurveAtTime() functionality.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of tests started and ended at the correct time is equal to 20.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 0 at offset 1304 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 1 at offset 2573 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 2 at offset 3798 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 3 at offset 5277 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 4 at offset 6541 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 5 at offset 7766 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 6 at offset 9239 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 7 at offset 10418 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 8 at offset 11734 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 9 at offset 13163 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 10 at offset 14380 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 11 at offset 15809 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 12 at offset 17037 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 13 at offset 18497 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 14 at offset 19725 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 15 at offset 21149 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 16 at offset 22465 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 17 at offset 23693 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 18 at offset 25122 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 19 at offset 26438 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of failed tests with an acceptable relative tolerance of 0.0000037194 is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 22 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor-error] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor-error] All assertions passed. (total 0 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [process-error] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [process-error] All assertions passed. (total 0 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-start.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Tests AudioBufferSourceNode start()] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 0: start(when): implicitly play whole buffer from beginning to end is identical to the array [0,1,2,3,4,5,6,7,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 0: start(when): implicitly play whole buffer from beginning to end: tail contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 1: start(when, 0): play whole buffer from beginning to end explicitly giving offset of 0 is identical to the array [0,1,2,3,4,5,6,7,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 1: start(when, 0): play whole buffer from beginning to end explicitly giving offset of 0: tail contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 2: start(when, 0, 8_frames): play whole buffer from beginning to end explicitly giving offset of 0 and duration of 8 frames is identical to the array [0,1,2,3,4,5,6,7,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 2: start(when, 0, 8_frames): play whole buffer from beginning to end explicitly giving offset of 0 and duration of 8 frames: tail contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 3: start(when, 4_frames): play with explicit non-zero offset is identical to the array [4,5,6,7,0,0,0,0,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 3: start(when, 4_frames): play with explicit non-zero offset: tail contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 4: start(when, 4_frames, 4_frames): play with explicit non-zero offset and duration is identical to the array [4,5,6,7,0,0,0,0,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 4: start(when, 4_frames, 4_frames): play with explicit non-zero offset and duration: tail contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 5: start(when, 7_frames): play with explicit non-zero offset near end of buffer is identical to the array [7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 5: start(when, 7_frames): play with explicit non-zero offset near end of buffer: tail contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 6: start(when, 8_frames): play with explicit offset at end of buffer is identical to the array [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 6: start(when, 8_frames): play with explicit offset at end of buffer: tail contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 7: start(when, 9_frames): play with explicit offset past end of buffer is identical to the array [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 7: start(when, 9_frames): play with explicit offset past end of buffer: tail contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 8: start(when, 0, 15_frames): play with whole buffer, with long duration (clipped) is identical to the array [0,1,2,3,4,5,6,7,0,0,0,0,0,0,0,0...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Case 8: start(when, 0, 15_frames): play with whole buffer, with long duration (clipped): tail contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Tests AudioBufferSourceNode start()] All assertions passed. (total 18 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowpass.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Biquad lowpass filter",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of filters tested is equal to 5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finite values in the rendered output is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error in Lowpass filter response is less than or equal to 9.7869e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer() threw TypeError: \"Failed to construct 'AudioBuffer': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer(1) threw TypeError: \"Failed to construct 'AudioBuffer': parameter 1 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer(Date, 42) threw TypeError: \"Failed to construct 'AudioBuffer': required member sampleRate is undefined.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [required options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer = new AudioBuffer({}) threw TypeError: \"Failed to construct 'AudioBuffer': required member length is undefined.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer = new AudioBuffer({length: 1}) threw TypeError: \"Failed to construct 'AudioBuffer': required member sampleRate is undefined.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer = new AudioBuffer({sampleRate: 48000}) threw TypeError: \"Failed to construct 'AudioBuffer': required member length is undefined.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer = new AudioBuffer({numberOfChannels: 1} threw TypeError: \"Failed to construct 'AudioBuffer': required member length is undefined.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer0 = new AudioBuffer({length: 21, sampleRate: 48000} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer0.numberOfChannels is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer0.length is equal to 21.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer0.sampleRate is equal to 48000.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer1 = new AudioBuffer({numberOfChannels: 3, length: 1, sampleRate: 48000}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer1.numberOfChannels is equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer1.length is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer1.sampleRate is equal to 48000.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [required options] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid option values] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer({\"numberOfChannels\":0,\"length\":1,\"sampleRate\":16000}) threw NotSupportedError: \"Failed to construct 'AudioBuffer': The number of channels provided (0) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer({\"numberOfChannels\":99,\"length\":0,\"sampleRate\":16000}) threw NotSupportedError: \"Failed to construct 'AudioBuffer': The number of channels provided (99) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer({\"numberOfChannels\":1,\"length\":0,\"sampleRate\":16000}) threw NotSupportedError: \"Failed to construct 'AudioBuffer': The number of frames provided (0) is less than or equal to the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer({\"numberOfChannels\":1,\"length\":1,\"sampleRate\":100}) threw NotSupportedError: \"Failed to construct 'AudioBuffer': The sample rate provided (100) is outside the range [3000, 384000].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid option values] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer = new AudioBuffer({\"numberOfChannels\":5,\"length\":17,\"sampleRate\":16000}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.numberOfChannels is equal to 5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.length is equal to 17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.sampleRate is equal to 16000.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [valid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer({\"numberOfChannels\":3,\"length\":42,\"sampleRate\":54321}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.numberOfChannels is equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.length is equal to 42.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.sampleRate is equal to 54321.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(0) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(0) length is equal to 42.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(1) length is equal to 42.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(2) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(2) length is equal to 42.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer.getChannelData(3) threw IndexSizeError: \"Failed to execute 'getChannelData' on 'AudioBuffer': channel index (3) exceeds number of channels (3)\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [valid constructor] All assertions passed. (total 11 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [multiple contexts] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c1 result is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  c2 result is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  AudioBuffer shared between two different contexts correctly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [multiple contexts] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 7 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  WaveShaperNode applied non-linear distortion correctly is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/note-grain-on-play.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [note-grain-on-play] Test noteGrainOn offset rendering",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Found all grain starts and ends is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of start frames is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of end frames is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 0 boundary is identical to the array [0,441].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 1 boundary is identical to the array [662,1103].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 2 boundary is identical to the array [1323,1764].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 3 boundary is identical to the array [1985,2426].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 4 boundary is identical to the array [2646,3087].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 5 boundary is identical to the array [3308,3749].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 6 boundary is identical to the array [3969,4410].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 7 boundary is identical to the array [4631,5072].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 8 boundary is identical to the array [5292,5733].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 9 boundary is identical to the array [5954,6395].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 10 boundary is identical to the array [6615,7056].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 11 boundary is identical to the array [7276,7717].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 12 boundary is identical to the array [7938,8379].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 13 boundary is identical to the array [8600,9041].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 14 boundary is identical to the array [9261,9702].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 15 boundary is identical to the array [9922,10363].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 16 boundary is identical to the array [10584,11025].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 17 boundary is identical to the array [11246,11687].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 18 boundary is identical to the array [11907,12348].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 19 boundary is identical to the array [12568,13009].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 20 boundary is identical to the array [13230,13671].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 21 boundary is identical to the array [13892,14333].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 22 boundary is identical to the array [14553,14994].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 23 boundary is identical to the array [15214,15655].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 24 boundary is identical to the array [15876,16317].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 25 boundary is identical to the array [16538,16979].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 26 boundary is identical to the array [17199,17640].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 27 boundary is identical to the array [17861,18302].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 28 boundary is identical to the array [18522,18963].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 29 boundary is identical to the array [19184,19625].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 30 boundary is identical to the array [19845,20286].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 31 boundary is identical to the array [20507,20948].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 32 boundary is identical to the array [21168,21609].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 33 boundary is identical to the array [21830,22271].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 34 boundary is identical to the array [22491,22932].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 35 boundary is identical to the array [23153,23594].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 36 boundary is identical to the array [23814,24255].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 37 boundary is identical to the array [24475,24916].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 38 boundary is identical to the array [25137,25578].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 39 boundary is identical to the array [25799,26240].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 40 boundary is identical to the array [26460,26901].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 41 boundary is identical to the array [27122,27563].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 42 boundary is identical to the array [27783,28224].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 43 boundary is identical to the array [28445,28886].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 44 boundary is identical to the array [29106,29547].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 45 boundary is identical to the array [29767,30208].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 46 boundary is identical to the array [30429,30870].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 47 boundary is identical to the array [31091,31532].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 48 boundary is identical to the array [31752,32193].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 49 boundary is identical to the array [32414,32855].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 50 boundary is identical to the array [33075,33516].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 51 boundary is identical to the array [33737,34178].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 52 boundary is identical to the array [34398,34839].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 53 boundary is identical to the array [35060,35501].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 54 boundary is identical to the array [35721,36162].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 55 boundary is identical to the array [36383,36824].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 56 boundary is identical to the array [37044,37485].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 57 boundary is identical to the array [37706,38147].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 58 boundary is identical to the array [38367,38808].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 59 boundary is identical to the array [39029,39470].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 60 boundary is identical to the array [39690,40131].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 61 boundary is identical to the array [40352,40793].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 62 boundary is identical to the array [41013,41454].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 63 boundary is identical to the array [41675,42116].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 64 boundary is identical to the array [42336,42777].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 65 boundary is identical to the array [42998,43439].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 66 boundary is identical to the array [43659,44100].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 67 boundary is identical to the array [44320,44761].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 68 boundary is identical to the array [44982,45423].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 69 boundary is identical to the array [45644,46085].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 70 boundary is identical to the array [46305,46746].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 71 boundary is identical to the array [46967,47408].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 72 boundary is identical to the array [47628,48069].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 73 boundary is identical to the array [48290,48731].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 74 boundary is identical to the array [48951,49392].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 75 boundary is identical to the array [49613,50053].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 76 boundary is identical to the array [50274,50715].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 77 boundary is identical to the array [50936,51377].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 78 boundary is identical to the array [51597,52038].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 79 boundary is identical to the array [52259,52700].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 80 boundary is identical to the array [52920,53361].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 81 boundary is identical to the array [53581,54022].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 82 boundary is identical to the array [54243,54684].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 83 boundary is identical to the array [54904,55345].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 84 boundary is identical to the array [55566,56007].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 85 boundary is identical to the array [56227,56668].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 86 boundary is identical to the array [56889,57330].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 87 boundary is identical to the array [57551,57992].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 88 boundary is identical to the array [58212,58653].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 89 boundary is identical to the array [58874,59315].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 90 boundary is identical to the array [59535,59976].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 91 boundary is identical to the array [60197,60638].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 92 boundary is identical to the array [60858,61299].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 93 boundary is identical to the array [61520,61961].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 94 boundary is identical to the array [62181,62622].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 95 boundary is identical to the array [62843,63284].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 96 boundary is identical to the array [63504,63945].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 97 boundary is identical to the array [64165,64606].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 98 boundary is identical to the array [64827,65268].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 99 boundary is identical to the array [65488,65929].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of grains that started at the correct time is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of grains that ended at the correct time is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 0 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 1 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 2 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 3 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 4 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 5 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 6 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 7 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 8 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 9 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 10 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 11 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 12 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 13 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 14 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 15 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 16 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 17 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 18 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 19 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 20 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 21 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 22 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 23 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 24 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 25 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 26 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 27 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 28 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 29 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 30 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 31 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 32 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 33 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 34 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 35 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 36 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 37 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 38 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 39 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 40 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 41 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 42 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 43 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 44 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 45 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 46 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 47 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 48 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 49 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 50 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 51 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 52 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 53 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 54 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 55 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 56 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 57 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 58 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 59 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 60 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 61 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 62 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 63 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 64 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 65 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 66 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 67 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 68 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 69 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 70 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 71 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 72 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 73 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 74 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 75 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 76 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 77 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 78 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 79 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 80 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 81 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 82 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 83 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 84 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 85 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 86 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 87 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 88 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 89 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 90 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 91 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 92 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 93 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 94 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 95 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 96 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 97 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 98 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Pulse 99 contained the expected data is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of grains that did not contain the expected data is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [note-grain-on-play] All assertions passed. (total 206 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/event-insertion.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Insert same event at same time] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueAtTime(99, 0.0078125) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueAtTime(1, 0.0078125) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  linearRampToValueAtTime(99, 0.015625) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  linearRampToValueAtTime(2, 0.015625) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  exponentialRampToValueAtTime(99, 0.0234375) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  exponentialRampToValueAtTime(3, 0.0234375) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime([3,4], 0.0234375, 0.0078125) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueAtTime(99, 0.03900146484375) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueAtTime(1, 0.03900146484375) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueAtTime(5, 0.03900146484375) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output at frame 128 (time 0.0078125) is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output at frame 256 (time 0.015625) is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output at frame 384 (time 0.0234375) is equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output at frame 512 (time 0.03125) is equal to 4.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output at frame 640 (time 0.0390625) is equal to 5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Insert same event at same time] All assertions passed. (total 15 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Linear + Expo] Different events at same time",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+Expo: Context length is long enough for the test is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+Expo: linearRampToValueAtTime(2, 0.015625) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+Expo: setValueAtTime(99, 0.015625) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+Expo: exponentialRampToValueAtTime(3, 0.015625) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+Expo: At time 0.01556396484375 (frame 255) output is 1.99609375 within an error of 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+Expo: At time 0.015625 (frame 256) and later, output contains only the constant 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Linear + Expo] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Expo + Linear] Different events at same time",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Expo+Linear: Context length is long enough for the test is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Expo+Linear: exponentialRampToValueAtTime(3, 0.015625) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Expo+Linear: setValueAtTime(99, 0.015625) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Expo+Linear: linearRampToValueAtTime(2, 0.015625) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Expo+Linear: At time 0.01556396484375 (frame 255) output is 2.9871532226369792 within an error of 0.0000042533.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Expo+Linear: At time 0.015625 (frame 256) and later, output contains only the constant 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Expo + Linear] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Linear + SetTarget] Different events at same time",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+SetTarget: Context length is long enough for the test is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+SetTarget: linearRampToValueAtTime(3, 0.015625) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+SetTarget: setValueAtTime(100, 0.015625) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+SetTarget: setTargetAtTime(0, 0.015625, 0.1) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+SetTarget: At time 0.01556396484375 (frame 255) output is 2.9921875 within an error of 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+SetTarget: At time 0.015625 (frame 256) output is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Linear+SetTarget: At time 0.015625 (frame 256) and later equals [100,99.93898010253906,99.87800598144531,99.81706237792969,99.75615692138672,99.6952896118164,99.63446044921875,99.57366180419922,99.51290893554688,99.45218658447266,99.39151000976562,99.33086395263672,99.27025604248047,99.20968627929688,99.1491470336914,99.08865356445312...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":1.7807e-7}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Linear + SetTarget] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [coefficient-normalization] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter with normalized coefficients did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter with unnormalized coefficients did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output of IIR filter with unnormalized coefficients equals [1,-0.8999999761581421,0.8100000023841858,-0.7289999723434448,0.6560999751091003,-0.5904899835586548,0.5314409732818604,-0.4782969057559967,0.4304672181606293,-0.3874204754829407,0.34867843985557556,-0.3138105869293213,0.2824295461177826,-0.25418657064437866,0.22876793146133423,-0.20589113235473633...] with an element-wise tolerance of {\"absoluteThreshold\":2.1958e-38,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [coefficient-normalization] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [one-zero] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIR 1-zero output equals [0.5,0.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [one-zero] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [one-pole] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIR 1-pole output equals [1,-0.9,0.81,-0.7290000000000001,0.6561000000000001,-0.5904900000000002,0.5314410000000002,-0.47829690000000014,0.43046721000000016,-0.38742048900000015,0.34867844010000015,-0.31381059609000017,0.28242953648100017,-0.25418658283290013,0.22876792454961012,-0.2058911320946491...] with an element-wise tolerance of {\"absoluteThreshold\":2.7657e-8,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [one-pole] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [0: lowpass] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIRFilter for Biquad lowpass equals [0.002067622495815158,0.010262038558721542,0.026408346369862556,0.0501461997628212,0.08106274157762527,0.11869752407073975,0.16254766285419464,0.2120732218027115,0.26670271158218384,0.32583874464035034,0.3888637125492096,0.4551454484462738,0.5240428447723389,0.594911515712738,0.6671090722084045,0.7400005459785461...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0.000049834}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  SNR for IIRFIlter for Biquad lowpass is greater than or equal to 91.221.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [0: lowpass] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [1: highpass] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIRFilter for Biquad highpass equals [0.9836710095405579,0.9474785923957825,0.904482364654541,0.8552320003509521,0.8003131747245789,0.7403417825698853,0.6759579181671143,0.6078199744224548,0.5365985631942749,0.46297064423561096,0.38761380314826965,0.3112005889415741,0.23439310491085052,0.15783783793449402,0.08216073364019394,0.007962634786963463...] with an element-wise tolerance of {\"absoluteThreshold\":0.0000029,\"relativeThreshold\":0.00003}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  SNR for IIRFIlter for Biquad highpass is greater than or equal to 105.459.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [1: highpass] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [2: bandpass] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIRFilter for Biquad bandpass equals [0.004554244689643383,0.013583214953541756,0.022416498512029648,0.03098210319876671,0.03921092674136162,0.047037310898303986,0.054399557411670685,0.06124040484428406,0.06750746816396713,0.07315362989902496,0.07813739031553268,0.08242315798997879,0.08598149567842484,0.08878931403160095,0.090829998254776,0.09209349006414413...] with an element-wise tolerance of {\"absoluteThreshold\":2e-7,\"relativeThreshold\":0.00087}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  SNR for IIRFIlter for Biquad bandpass is greater than or equal to 104.06.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [2: bandpass] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [3: notch] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIRFilter for Biquad notch equals [0.995445728302002,0.986416757106781,0.9775834679603577,0.9690178632736206,0.9607890248298645,0.9529626369476318,0.9456003904342651,0.9387595653533936,0.9324925541877747,0.926846444606781,0.9218627214431763,0.9175769686698914,0.9140186309814453,0.911210834980011,0.9091701507568359,0.9079066514968872...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0.0000422}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  SNR for IIRFIlter for Biquad notch is greater than or equal to 91.312.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [3: notch] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [4: allpass] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIRFilter for Biquad allpass equals [0.9908915162086487,0.9728335738182068,0.9551669955253601,0.938035786151886,0.9215781092643738,0.9059253334999084,0.891200840473175,0.8775191307067871,0.8649849891662598,0.8536926507949829,0.8437251448631287,0.8351536393165588,0.8280369639396667,0.8224213123321533,0.8183399438858032,0.8158129453659058...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0.0000431}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  SNR for IIRFIlter for Biquad allpass is greater than or equal to 91.319.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [4: allpass] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [5: lowshelf] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIRFilter for Biquad lowshelf equals [1.038480281829834,1.1165722608566284,1.1966439485549927,1.2781513929367065,1.3605945110321045,1.4435153007507324,1.5264960527420044,1.6091575622558594,1.6911571025848389,1.7721866369247437,1.8519710302352905,1.9302663803100586,2.0068578720092773,2.0815584659576416,2.1542069911956787,2.224666118621826...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0.0000298}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  SNR for IIRFIlter for Biquad lowshelf is greater than or equal to 90.609.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [5: lowshelf] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [6: highshelf] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIRFilter for Biquad highshelf equals [3.0451014041900635,2.816114902496338,2.5985426902770996,2.3935580253601074,2.2019755840301514,2.024296998977661,1.8607536554336548,1.7113463878631592,1.5758819580078125,1.4540066719055176,1.3452364206314087,1.2489843368530273,1.164584755897522,1.0913151502609253,1.0284149646759033,0.9751021265983582...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0.0000124}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  SNR for IIRFIlter for Biquad highshelf is greater than or equal to 103.159.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [6: highshelf] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [7: peaking] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  IIRFilter for Biquad peaking equals [1.0055487155914307,1.016571283340454,1.0273985862731934,1.0379409790039062,1.0481117963790894,1.0578278303146362,1.0670100450515747,1.0755844116210938,1.083482265472412,1.090640902519226,1.0970042943954468,1.1025232076644897,1.1071557998657227,1.1108678579330444,1.1136330366134644,1.1154330968856812...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0.0000505}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  SNR for IIRFIlter for Biquad peaking is greater than or equal to 91.504.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [7: peaking] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [multi-channel] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max difference between IIR and Biquad on channel 0 is less than or equal to 0.000037671.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max difference between IIR and Biquad on channel 1 is less than or equal to 0.000030071.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max difference between IIR and Biquad on channel 2 is less than or equal to 0.000026241.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [multi-channel] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [4th-order-iir] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4-th order IIRFilter (biquad ref) equals [0.000004181719305051956,0.000032965795980999246,0.00012939768203068525,0.0003477365826256573,0.0007387272780761123,0.0013446896336972713,0.0021993760019540787,0.0033279552590101957,0.004747116006910801,0.006465280428528786,0.008482920937240124,0.010792967863380909,0.013381300494074821,0.01622730866074562,0.019304513931274414,0.02258124388754368...] with an element-wise tolerance of {\"absoluteThreshold\":1.59e-7,\"relativeThreshold\":0.0000211}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  SNR of 4-th order IIRFilter (biquad ref) is greater than or equal to 108.947.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [4th-order-iir] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 13 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Creating context for testing did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Fetching expected audio resolved correctly.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] AudioBufferSource with 5.1 buffer",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered audio for channel 0 equals [0,0.06262397766113281,0.12503433227539062,0.18695639073848724,0.24811547994613647,0.3083285093307495,0.3673207759857178,0.42487868666648865,0.48075807094573975,0.5347453355789185,0.5866267681121826,0.6362193822860718,0.6833094358444214,0.7277138829231262,0.7692495584487915,0.807763934135437...] with an element-wise tolerance of {\"absoluteThreshold\":0.000030517578125,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered audio for channel 1 equals [0,0.12503433227539062,0.24811547994613647,0.3673207759857178,0.48075807094573975,0.5866267681121826,0.6833094358444214,0.7692495584487915,0.843104362487793,0.903744637966156,0.9501937627792358,0.981719434261322,0.9978331923484802,0.9982604384422302,0.983031690120697,0.9523911476135254...] with an element-wise tolerance of {\"absoluteThreshold\":0.000030517578125,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered audio for channel 2 equals [0,0.18695639073848724,0.3673207759857178,0.5347453355789185,0.6833094358444214,0.807763934135437,0.903744637966156,0.9678640365600586,0.9978331923484802,0.9926145076751709,0.9523911476135254,0.8785668611526489,0.773766279220581,0.6417127251625061,0.48698386549949646,0.3151036202907562...] with an element-wise tolerance of {\"absoluteThreshold\":0.000030517578125,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered audio for channel 3 equals [0,0.24811547994613647,0.48075807094573975,0.6833094358444214,0.843104362487793,0.9501937627792358,0.9978331923484802,0.983031690120697,0.9067659378051758,0.773766279220581,0.5923947691917419,0.3739432990550995,0.13211463391780853,-0.11798095703125,-0.3607177734375,-0.58087158203125...] with an element-wise tolerance of {\"absoluteThreshold\":0.000030517578125,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered audio for channel 4 equals [0,0.3083285093307495,0.5866267681121826,0.807763934135437,0.9501937627792358,1,0.9523911476135254,0.8119449615478516,0.5923947691917419,0.3151036202907562,0.007110812701284885,-0.30157470703125,-0.58087158203125,-0.803558349609375,-0.94793701171875,-0.999969482421875...] with an element-wise tolerance of {\"absoluteThreshold\":0.000030517578125,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered audio for channel 5 equals [0,0.3673207759857178,0.6833094358444214,0.903744637966156,0.9978331923484802,0.9523911476135254,0.773766279220581,0.48698386549949646,0.13211463391780853,-0.241241455078125,-0.58087158203125,-0.839263916015625,-0.980316162109375,-0.98431396484375,-0.8507080078125,-0.598114013671875...] with an element-wise tolerance of {\"absoluteThreshold\":0.000030517578125,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquadfilternode-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Basic tests for BiquadFilterNode",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of inputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of outputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default filter type is equal to lowpass.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default frequency value is equal to 350.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default Q value is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default gain value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting filter.type to lowpass did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Filter type is is equal to lowpass.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting filter.type to highpass did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Filter type is is equal to highpass.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting filter.type to bandpass did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Filter type is is equal to bandpass.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting filter.type to lowshelf did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Filter type is is equal to lowshelf.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting filter.type to highshelf did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Filter type is is equal to highshelf.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting filter.type to peaking did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Filter type is is equal to peaking.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting filter.type to notch did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Filter type is is equal to notch.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting filter.type to allpass did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Filter type is is equal to allpass.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting filter.type to (invalid) 99 is not equal to 99.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 23 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Test SetValueCurve with start time in the past",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test[0:127] contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Reference[0:127] contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test[128:] is identical to the array [1,0.9999450445175171,0.999890148639679,0.999835193157196,0.9997802972793579,0.999725341796875,0.9996703863143921,0.999615490436554,0.999560534954071,0.9995056390762329,0.99945068359375,0.9993957281112671,0.999340832233429,0.999285876750946,0.9992309808731079,0.999176025390625...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set buffer to null before set non-null did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set buffer first normally did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set buffer a second time did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set buffer to null did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set buffer to null again, to make sure did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Set buffer to non-null to verify it is set did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-sizing.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [FFT size test] Test that re-sizing the FFT arrays does not fail.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to -1 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (4294967295) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 0 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (0) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 1 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (1) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 2 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (2) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 3 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (3) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 4 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (4) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 5 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (5) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 8 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (8) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 9 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (9) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 16 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (16) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 17 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (17) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 32 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 33 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (33) is not a power of two.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 64 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 65 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (65) is not a power of two.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 128 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 129 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (129) is not a power of two.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 256 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 257 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (257) is not a power of two.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 512 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 513 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (513) is not a power of two.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 1024 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 1025 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (1025) is not a power of two.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 2048 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 2049 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (2049) is not a power of two.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 4096 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 4097 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (4097) is not a power of two.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 8192 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 8193 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (8193) is not a power of two.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 16384 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 16385 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (16385) is not a power of two.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 32768 did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 32769 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (32769) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 65536 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (65536) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 65537 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (65537) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 131072 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (131072) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 131073 threw IndexSizeError: \"Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (131073) is outside the range [32, 32768].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [FFT size test] All assertions passed. (total 37 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Dynamically change the channel count to if unspecified.] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The expected output channel count is equal to 17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Dynamically change the channel count to if unspecified.] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Givien outputChannelCount must be honored.] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The expected output channel count is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Givien outputChannelCount must be honored.] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [setting-up-graph] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [setting-up-graph] All assertions passed. (total 0 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [start-playback-and-capture] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Recorded channel #0 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Recorded channel #1 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Recorded channel #2 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Recorded channel #3 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [start-playback-and-capture] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Biquad notch filter",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of filters tested is equal to 4.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finite values in the rendered output is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error in Notch filter response is less than or equal to 1.9669e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "PannerNode AudioParam automation works properly",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/audioparam-exponentialRampToValueAtTime.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] AudioParam exponentialRampToValueAtTime() functionality",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of tests started and ended at the correct time is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 0 at offset 126 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 1 at offset 1535 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 2 at offset 3967 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 3 at offset 5247 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 4 at offset 5503 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 5 at offset 7679 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 6 at offset 8063 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 7 at offset 9471 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 8 at offset 11902 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 9 at offset 13183 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 10 at offset 14462 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 11 at offset 14719 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 12 at offset 15999 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 13 at offset 17919 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 14 at offset 18686 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 15 at offset 21119 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 16 at offset 21375 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 17 at offset 23807 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 18 at offset 23935 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 19 at offset 26367 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 20 at offset 26623 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 21 at offset 29055 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 22 at offset 29311 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 23 at offset 31743 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 24 at offset 31998 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 25 at offset 34175 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 26 at offset 34558 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 27 at offset 36351 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 28 at offset 37247 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 29 at offset 39679 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 30 at offset 40703 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 31 at offset 41599 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 32 at offset 43646 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 33 at offset 44415 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 34 at offset 45183 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 35 at offset 47103 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 36 at offset 48895 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 37 at offset 49151 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 38 at offset 51583 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 39 at offset 52735 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 40 at offset 53247 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 41 at offset 54527 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 42 at offset 56447 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 43 at offset 57215 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 44 at offset 58879 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 45 at offset 59775 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 46 at offset 61695 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 47 at offset 62335 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 48 at offset 64255 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 49 at offset 65151 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 50 at offset 67455 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 51 at offset 67711 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 52 at offset 69630 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 53 at offset 70527 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 54 at offset 72063 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 55 at offset 73087 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 56 at offset 74879 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 57 at offset 76671 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 58 at offset 77935 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 59 at offset 78463 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 60 at offset 80382 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 61 at offset 81151 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 62 at offset 82175 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 63 at offset 83839 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 64 at offset 85247 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 65 at offset 86143 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 66 at offset 88063 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 67 at offset 89087 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 68 at offset 91262 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 69 at offset 92287 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 70 at offset 93822 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 71 at offset 94975 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 72 at offset 95448 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 73 at offset 96891 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 74 at offset 98687 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 75 at offset 99839 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 76 at offset 100990 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 77 at offset 102782 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 78 at offset 104447 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 79 at offset 105710 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 80 at offset 107132 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 81 at offset 107363 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 82 at offset 108799 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 83 at offset 110438 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 84 at offset 112112 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 85 at offset 113201 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 86 at offset 115071 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 87 at offset 115839 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 88 at offset 117375 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 89 at offset 118902 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 90 at offset 120188 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 91 at offset 121215 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 92 at offset 123007 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 93 at offset 123390 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 94 at offset 124923 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 95 at offset 125943 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 96 at offset 127861 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 97 at offset 129532 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 98 at offset 130551 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 99 at offset 131322 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of failed tests with an acceptable relative tolerance of 0.00001222 is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 102 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-null.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting ConvolverNode impulse response buffer to null did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  conv.buffer === null is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-convolvernode-interface/convolver-cascade.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [cascade-mono] Cascaded mono convolvers",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output of cascaded mono convolvers is not constantly 0 (contains 1996 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [cascade-mono] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-dynamicscompressornode-interface/dynamicscompressor-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Basic tests for DynamicsCompressorNode API",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  compressor.threshold.value is equal to -24.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  compressor.knee.value is equal to 30.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  compressor.ratio.value is equal to 12.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  compressor.attack.value is equal to 0.003000000026077032.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  compressor.release.value is equal to 0.25.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  typeof compressor.reduction is equal to number.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  compressor.reduction is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Initialize context for testing did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [existence] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.createBiquadFilter does exist.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [existence] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [parameters] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [parameters] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [exceptions-createBiquadFilter] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createBiquadFilter() did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [exceptions-createBiquadFilter] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [exceptions-getFrequencyData] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(null, new Float32Array(1), new Float32Array(1)) threw TypeError: \"Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': parameter 1 is not of type 'Float32Array'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(1), null, new Float32Array(1)) threw TypeError: \"Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': parameter 2 is not of type 'Float32Array'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(1), new Float32Array(1), null) threw TypeError: \"Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': parameter 3 is not of type 'Float32Array'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(10), new Float32Array(1), new Float32Array(20)) threw InvalidAccessError: \"Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': The magResponse length provided (1) is outside the range [10, 10].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(10), new Float32Array(20), new Float32Array(1)) threw InvalidAccessError: \"Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': The magResponse length provided (20) is outside the range [10, 10].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [exceptions-getFrequencyData] All assertions passed. (total 5 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-ended.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [AudioBufferSourceNode calls its onended EventListener] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  source.onended called is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [AudioBufferSourceNode calls its onended EventListener] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test postMessage from AudioWorkletProcessor to AudioWorkletNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  event.data.sab from worklet is an instance of SharedArrayBuffer is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  event.data from main thread is an instance of SharedArrayBuffer is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test postMessage from AudioWorkletProcessor to AudioWorkletNode] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Oscillator k-rate detune] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate detune: Difference between a-rate and k-rate outputs is not constantly 0 (contains 510 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Oscillator k-rate detune] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Oscillator k-rate frequency] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate frequency: Difference between a-rate and k-rate outputs is not constantly 0 (contains 510 different values).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Oscillator k-rate frequency] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-constantsourcenode-interface/constant-source-onended.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "ConstantSourceNode onended event fired",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-peaking.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Biquad peaking filter",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of filters tested is equal to 4.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of non-finite values in the rendered output is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error in Peaking filter response is less than or equal to 5.8234e-8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input-non-default.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [silent-channel] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #0 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #1 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #2 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #3 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #4 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #5 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1-channel source: Channel #6 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [silent-channel] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [stereo-down-mixing] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #0 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #1 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #2 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #3 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #4 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #5 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2-channel source: Channel #6 contains only the constant 1.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [stereo-down-mixing] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [undefined-channel-layout] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #0 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #1 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #2 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #3 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #4 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #5 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3-channel source: Channel #6 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [undefined-channel-layout] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode() threw TypeError: \"Failed to construct 'IIRFilterNode': 2 arguments required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(1) threw TypeError: \"Failed to construct 'IIRFilterNode': 2 arguments required, but only 1 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(context, 42) threw TypeError: \"Failed to construct 'IIRFilterNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new IIRFilterNode(context, {\"feedforward\":[1],\"feedback\":[1,-0.9]}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof IIRFilterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelCount: 17}} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelCount: 0}) threw NotSupportedError: \"Failed to construct 'IIRFilterNode': The channel count provided (0) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelCount: 99}) threw NotSupportedError: \"Failed to construct 'IIRFilterNode': The channel count provided (99) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelCountMode: \"max\"} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelCountMode: \"max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelCountMode: \"clamped-max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelCountMode: \"explicit\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelCountMode: \"foobar\"} threw TypeError: \"Failed to construct 'IIRFilterNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after invalid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelInterpretation: \"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelInterpretation: \"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelInterpretation: \"foobar\"}) threw TypeError: \"Failed to construct 'IIRFilterNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation after invalid setter is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 20 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new IIRFilterNode(, {\"feedback\":[1,0.5]}) threw TypeError: \"Failed to construct 'IIRFilterNode': required member feedforward is undefined.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new IIRFilterNode(c, {\"feedforward\":[1,0.5]}) threw TypeError: \"Failed to construct 'IIRFilterNode': required member feedback is undefined.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor options] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [functionality] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output of filter using new IIRFilter(...) is identical to the array [0,0.05756402015686035,0.1437191516160965,0.21500658988952637,0.29277655482292175,0.36597785353660583,0.4397642910480499,0.511192798614502,0.5813756585121155,0.6494057774543762,0.7153944969177246,0.7789546847343445,0.8399595618247986,0.8981648087501526,0.9533984661102295,1.0054665803909302...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [functionality] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Stereo panner.positionX] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionX.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionX.value frame [0, 128) channel 1 contains only the constant 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionX.value frame [128, 256) channel 0 contains only the constant 6.123233968888981e-21.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionX.value frame [128, 256) channel 1 contains only the constant 0.00029999998514540493.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionX: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionX: Output at frame 128 channel 1 is not equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Stereo panner.positionX] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Mono panner.positionX] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionX.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionX.value frame [0, 128) channel 1 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionX.value frame [128, 256) channel 0 contains only the constant 6.123233968888981e-21.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionX.value frame [128, 256) channel 1 contains only the constant 0.00009999999747378752.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionX: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionX: Output at frame 128 channel 1 is not equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Mono panner.positionX] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Stereo panner.positionY] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionY.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionY.value frame [0, 128) channel 1 contains only the constant 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionY.value frame [128, 256) channel 0 contains only the constant 6.123233968888981e-21.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionY.value frame [128, 256) channel 1 contains only the constant 0.00029999998514540493.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionY: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionY: Output at frame 128 channel 1 is not equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Stereo panner.positionY] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Mono panner.positionY] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionY.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionY.value frame [0, 128) channel 1 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionY.value frame [128, 256) channel 0 contains only the constant 6.123233968888981e-21.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionY.value frame [128, 256) channel 1 contains only the constant 0.00009999999747378752.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionY: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionY: Output at frame 128 channel 1 is not equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Mono panner.positionY] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Stereo panner.positionZ] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionZ.value frame [0, 128) channel 0 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionZ.value frame [0, 128) channel 1 contains only the constant 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionZ.value frame [128, 256) channel 0 contains only the constant 0.00009999999747378752.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionZ.value frame [128, 256) channel 1 contains only the constant 0.00019999999494757503.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionZ: Output at frame 128 channel 0 is not equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo panner.positionZ: Output at frame 128 channel 1 is not equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Stereo panner.positionZ] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Mono panner.positionZ] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionZ.value frame [0, 128) channel 0 contains only the constant 0.7071067690849304.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionZ.value frame [0, 128) channel 1 contains only the constant 0.7071067690849304.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionZ.value frame [128, 256) channel 0 contains only the constant 0.00007071067375363782.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionZ.value frame [128, 256) channel 1 contains only the constant 0.00007071067375363782.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionZ: Output at frame 128 channel 0 is not equal to 0.7071067690849304.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono panner.positionZ: Output at frame 128 channel 1 is not equal to 0.7071067690849304.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Mono panner.positionZ] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Stereo listener.positionX] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionX.value frame [0, 128) channel 0 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionX.value frame [0, 128) channel 1 contains only the constant 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionX.value frame [128, 256) channel 0 contains only the constant 0.00030002999119460583.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionX.value frame [128, 256) channel 1 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionX: Output at frame 128 channel 0 is not equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionX: Output at frame 128 channel 1 is not equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Stereo listener.positionX] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Mono listener.positionX] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionX.value frame [0, 128) channel 0 contains only the constant 0.7071067690849304.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionX.value frame [0, 128) channel 1 contains only the constant 0.7071067690849304.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionX.value frame [128, 256) channel 0 contains only the constant 0.00010001000191550702.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionX.value frame [128, 256) channel 1 contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionX: Output at frame 128 channel 0 is not equal to 0.7071067690849304.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionX: Output at frame 128 channel 1 is not equal to 0.7071067690849304.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Mono listener.positionX] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Stereo listener.positionY] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionY.value frame [0, 128) channel 0 contains only the constant 0.40824827551841736.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionY.value frame [0, 128) channel 1 contains only the constant 1.5629488229751587.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionY.value frame [128, 256) channel 0 contains only the constant 0.0000707106664776802.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionY.value frame [128, 256) channel 1 contains only the constant 0.00027071067597717047.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionY: Output at frame 128 channel 0 is not equal to 0.40824827551841736.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionY: Output at frame 128 channel 1 is not equal to 1.5629488229751587.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Stereo listener.positionY] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Mono listener.positionY] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionY.value frame [0, 128) channel 0 contains only the constant 0.22094237804412842.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionY.value frame [0, 128) channel 1 contains only the constant 0.5334020853042603.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionY.value frame [128, 256) channel 0 contains only the constant 0.00003826833926723339.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionY.value frame [128, 256) channel 1 contains only the constant 0.00009238795610144734.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionY: Output at frame 128 channel 0 is not equal to 0.22094237804412842.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionY: Output at frame 128 channel 1 is not equal to 0.5334020853042603.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Mono listener.positionY] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Stereo listener.positionZ] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionZ.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionZ.value frame [0, 128) channel 1 contains only the constant 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionZ.value frame [128, 256) channel 0 contains only the constant 0.00010001000191550702.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionZ.value frame [128, 256) channel 1 contains only the constant 0.00020003000099677593.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionZ: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo listener.positionZ: Output at frame 128 channel 1 is not equal to 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Stereo listener.positionZ] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Mono listener.positionZ] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionZ.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionZ.value frame [0, 128) channel 1 contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionZ.value frame [128, 256) channel 0 contains only the constant 0.00007071421714499593.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionZ.value frame [128, 256) channel 1 contains only the constant 0.0000707212820998393.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionZ: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono listener.positionZ: Output at frame 128 channel 1 is not equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Mono listener.positionZ] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [setPosition] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setPosition.value frame [0, 128) channel 0 contains only the constant 0.40824827551841736.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setPosition.value frame [0, 128) channel 1 contains only the constant 1.5629488229751587.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setPosition.value frame [128, 256) channel 0 contains only the constant 0.000124290119856596.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setPosition.value frame [128, 256) channel 1 contains only the constant 0.0002424988488201052.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setPosition: Output at frame 128 channel 0 is not equal to 0.40824827551841736.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setPosition: Output at frame 128 channel 1 is not equal to 1.5629488229751587.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [setPosition] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [orientation setter] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.orientation{XYZ}.value frame [0, 128) channel 0 contains only the constant 0.5005000233650208.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.orientation{XYZ}.value frame [0, 128) channel 1 contains only the constant 1.0010000467300415.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.orientation{XYZ}.value frame [128, 256) channel 0 contains only the constant 0.07899462431669235.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.orientation{XYZ}.value frame [128, 256) channel 1 contains only the constant 0.1579892486333847.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.orientation{XYZ}: Output at frame 128 channel 0 is not equal to 0.5005000233650208.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.orientation{XYZ}: Output at frame 128 channel 1 is not equal to 1.0010000467300415.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [orientation setter] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [forward setter] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.forward{XYZ}.value frame [0, 128) channel 0 contains only the constant 0.5005000233650208.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.forward{XYZ}.value frame [0, 128) channel 1 contains only the constant 1.0010000467300415.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.forward{XYZ}.value frame [128, 256) channel 0 contains only the constant 0.5133963823318481.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.forward{XYZ}.value frame [128, 256) channel 1 contains only the constant 1.0009169578552246.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.forward{XYZ}: Output at frame 128 channel 0 is not equal to 0.5005000233650208.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.forward{XYZ}: Output at frame 128 channel 1 is not equal to 1.0010000467300415.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [forward setter] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [up setter] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.up{XYZ}.value frame [0, 128) channel 0 contains only the constant 0.12537498772144318.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.up{XYZ}.value frame [0, 128) channel 1 contains only the constant 0.47998905181884766.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.up{XYZ}.value frame [128, 256) channel 0 contains only the constant 0.1447705775499344.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.up{XYZ}.value frame [128, 256) channel 1 contains only the constant 0.4569823145866394.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.up{XYZ}: Output at frame 128 channel 0 is not equal to 0.12537498772144318.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  listener.up{XYZ}: Output at frame 128 channel 1 is not equal to 0.47998905181884766.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [up setter] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 16 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-grain.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test setting the source buffer after starting the grain] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Buffer was played is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Test setting the source buffer after starting the grain] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [disconnect(AudioParam)] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #0 contains all the expected values in the correct order: [2.25,1.5].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The index of value change is equal to 11008.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [disconnect(AudioParam)] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [disconnect(AudioParam, output)] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #0 contains all the expected values in the correct order: [3,1.5].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The index of value change in channel #0 is equal to 11008.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Channel #1 contains all the expected values in the correct order: [6,3].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The index of value change in channel #1 is equal to 11008.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [disconnect(AudioParam, output)] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [exceptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain1.disconnect(gain3.gain) threw InvalidAccessError: \"Failed to execute 'disconnect' on 'AudioNode': the given AudioParam is not connected.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitter.disconnect(gain1.gain, 1) threw InvalidAccessError: \"Failed to execute 'disconnect' on 'AudioNode': specified destination AudioParam and node output (1) are not connected.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitter.disconnect(gain1.gain, 2) threw IndexSizeError: \"Failed to execute 'disconnect' on 'AudioNode': The output index provided (2) is outside the range [0, 1].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [exceptions] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audionode-interface/channel-mode-interp-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [interp] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  After rendering node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [interp] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [mode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  After rendering node.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [mode] All assertions passed. (total 2 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "WaveShaperNode - Testing that -1, 0 and +1 map correctly to curve (with 1:1 correlation)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode - Testing interpolation (where inputs don't correlate directly to curve elements)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode - Testing out-of-range inputs (should be mapped to the first/last elements of the curve)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode - Testing a 2-element curve (does not have a middle element)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode - Testing a 4-element curve (does not have a middle element)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode - Testing a huge curve",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WaveShaperNode - Testing null curve (should return input values)",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "name": "Element Source tests completed",
          "status": "NOTRUN",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-constantsourcenode-interface/ctor-constantsource.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConstantSourceNode() threw TypeError: \"Failed to construct 'ConstantSourceNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConstantSourceNode(1) threw TypeError: \"Failed to construct 'ConstantSourceNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConstantSourceNode(context, 42) threw TypeError: \"Failed to construct 'ConstantSourceNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new ConstantSourceNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof ConstantSourceNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.offset.value is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-playbackrate-zero.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [synthesize-verify] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The zero playbackRate held the sample value correctly",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [synthesize-verify] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Basic AnalyserNode test] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of inputs for AnalyserNode is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Number of outputs for AnalyserNode is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default minDecibels value is equal to -100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default maxDecibels value is equal to -30.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Default smoothingTimeConstant value is equal to 0.8.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.minDecibels = -50.333333333333336 is equal to -50.333333333333336.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.maxDecibels = -40.333333333333336 is equal to -40.333333333333336.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Basic AnalyserNode test] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-channelsplitternode-interface/ctor-channelsplitter.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode() threw TypeError: \"Failed to construct 'ChannelSplitterNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(1) threw TypeError: \"Failed to construct 'ChannelSplitterNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(context, 42) threw TypeError: \"Failed to construct 'ChannelSplitterNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new ChannelSplitterNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof ChannelSplitterNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 6.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 6.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {channelCount: 6}} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 6.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {channelCount: 7}} threw InvalidStateError: \"Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelCount cannot be changed from 6\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {channelCountMode: \"explicit\"} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {channelCountMode: \"max\"}) threw InvalidStateError: \"Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelCountMode cannot be changed from 'explicit'\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {channelCountMode: \"clamped-max\"}) threw InvalidStateError: \"Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelCountMode cannot be changed from 'explicit'\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {channelInterpretation: \"speakers\"}) threw InvalidStateError: \"Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelInterpretation cannot be changed from 'discrete'\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 8 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new ChannelSplitterNode(context, {\"numberOfInputs\":3,\"numberOfOutputs\":9,\"channelInterpretation\":\"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.numberOfOutputs is equal to 9.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {\"numberOfOutputs\":99}) threw IndexSizeError: \"Failed to construct 'ChannelSplitterNode': The number of outputs provided (99) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {\"channelCount\":3}) threw InvalidStateError: \"Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelCount cannot be changed from 6\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {\"channelCountMode\":\"max\"}) threw InvalidStateError: \"Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelCountMode cannot be changed from 'explicit'\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor options] All assertions passed. (total 7 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-waveshapernode-interface/ctor-waveshaper.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [incorrect construction] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode() threw TypeError: \"Failed to construct 'WaveShaperNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(1) threw TypeError: \"Failed to construct 'WaveShaperNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(context, 42) threw TypeError: \"Failed to construct 'WaveShaperNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [incorrect construction] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [valid default construction] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new WaveShaperNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof WaveShaperNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.curve is equal to null.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.oversample is equal to none.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [valid default construction] All assertions passed. (total 9 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelCount: 17}} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 17.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelCount: 0}) threw NotSupportedError: \"Failed to construct 'WaveShaperNode': The channel count provided (0) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelCount: 99}) threw NotSupportedError: \"Failed to construct 'WaveShaperNode': The channel count provided (99) is outside the range [1, 32].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelCountMode: \"max\"} did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelCountMode: \"max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelCountMode: \"clamped-max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelCountMode: \"explicit\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after valid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelCountMode: \"foobar\"} threw TypeError: \"Failed to construct 'WaveShaperNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode after invalid setter is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelInterpretation: \"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelInterpretation: \"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelInterpretation: \"foobar\"}) threw TypeError: \"Failed to construct 'WaveShaperNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation after invalid setter is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 20 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [valid non-default] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new WaveShaperNode(, {\"curve\":{\"0\":1,\"1\":2,\"2\":3},\"oversample\":\"4x\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.curve is identical to the array [1,2,3].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.oversample is equal to 4x.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [valid non-default] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test-suspend] Test suspend() for offline context",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  offlineContext = new OfflineAudioContext(1, 44100, 44100) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  offlineContext.state is equal to suspended.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  p1 = offlineContext.suspend() did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  p1 instanceof Promise is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  p1 rejected correctly with TypeError: Failed to execute 'suspend' on 'OfflineAudioContext': 1 argument required, but only 0 present..",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test-suspend] All assertions passed. (total 5 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test-resume] Test resume() for offline context",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  p2 = offlineContext.resume() did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  p2 instanceof Promise is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  After resume, offlineContext.state is equal to suspended.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  p2 rejected correctly with InvalidStateError: cannot resume an offline context that has not started.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test-resume] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test-after-close] Test state after context closed",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  p3 = offlineContext.startRendering() did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  After close, offlineContext.state is equal to closed.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  offlineContext.suspend() rejected correctly with TypeError: Failed to execute 'suspend' on 'OfflineAudioContext': 1 argument required, but only 0 present..",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  offlineContext.resume() rejected correctly with InvalidStateError: cannot resume an offline context that has not started.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test-after-close] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [resume-running-context] Test resuming a running context",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Create online context did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.state is equal to running.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.resume resolved correctly.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.state after resume is equal to running.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [resume-running-context] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-stereopanner-interface/no-dezippering.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test mono input] Test StereoPanner with mono input has no dezippering",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono: Left channel, pan = -1:  contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono: Right channel, pan = -1: contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono: Left channel, pan = 1:  equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {\"absoluteThreshold\":6.1233e-17,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono: Right channel, pan = 1: contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test mono input] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test stereo input] Test StereoPanner with stereo input has no dezippering",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo: Left channel, pan = -1:  contains only the constant 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo: Right channel, pan = -1: contains only the constant 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo: Left channel, pan = 1:  equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {\"absoluteThreshold\":6.1233e-17,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo: Right channel, pan = 1: contains only the constant 3.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test stereo input] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test mono input setValue] Test StereoPanner with mono input value setter vs setValueAtTime",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono Left .value setter output is identical to the array [0,0.1431909054517746,0.2823145389556885,0.41341903805732727,0.5327803492546082,0.6370079517364502,0.7231414914131165,0.7887340784072876,0.8319228291511536,0.8514807224273682,0.8468523621559143,0.8181691765785217,0.76624596118927,0.6925574541091919,0.5991969108581543,0.48881617188453674...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono Left .value setter output matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono Right .value setter output is identical to the array [0,0.0877474993467331,0.17300257086753845,0.25334352254867554,0.3264882266521454,0.39035898447036743,0.4431416392326355,0.483336865901947,0.5098029375076294,0.5217880606651306,0.5189517736434937,0.5013747215270996,0.46955612301826477,0.424399733543396,0.36718833446502686,0.2995469272136688...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Mono Right .value setter output matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test mono input setValue] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test stereo input setValue] Test StereoPanner with mono input value setter  vs setValueAtTime",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo Left .value setter output is identical to the array [0,0.3454650640487671,0.662327229976654,0.9246212840080261,1.1114109754562378,1.2087113857269287,1.2107640504837036,1.120543360710144,0.9494497179985046,0.7162171602249146,0.4451404809951782,0.1637810319662094,-0.09962651878595352,-0.31883078813552856,-0.4720267355442047,-0.5439075827598572...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo Left .value setter output matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo Right .value setter output is identical to the array [0,0.08529330044984818,0.16980315744876862,0.25275346636772156,0.33338260650634766,0.41094908118247986,0.4847412407398224,0.5540815591812134,0.618333101272583,0.6769042611122131,0.7292587161064148,0.7749154567718506,0.8134552836418152,0.84452223777771,0.8678330779075623,0.8831735253334045...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Stereo Right .value setter output matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test stereo input setValue] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test mono input automation] Test StereoPanner with mono input and automation",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Modulated Stereo Left .value setter output is identical to the array [0,0.3402526378631592,0.6413129568099976,0.8772034645080566,1.0272915363311768,1.0782092809677124,1.0251129865646362,0.8721681237220764,0.634390115737915,0.3706442713737488,0.07306596636772156,-0.2276521474123001,-0.500984787940979,-0.7199963927268982,-0.8642349243164062,-0.9217721223831177...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Modulated Stereo Left .value setter output matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Modulated Stereo Right .value setter output is identical to the array [0,0.08775438368320465,0.1789630502462387,0.27175208926200867,0.36420613527297974,0.4544224739074707,0.5405690670013428,0.6209331750869751,0.695970356464386,0.7820523977279663,0.8270168304443359,0.8301812410354614,0.7975679039955139,0.7409225106239319,0.6758685111999512,0.6194734573364258...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Modulated Stereo Right .value setter output matches setValueAtTime output is true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test mono input automation] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audionode-interface/audionode-connect-return-value.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "connect should return the node connected to.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/panner-rolloff-clamping.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [linear-clamp-high] rolloffFactor clamping for linear distance model",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Panner distanceModel: \"linear\", rolloffFactor: 2 is identical to the array [0,0.009021542966365814,0.026864444836974144,0.03272818773984909,0.04710530489683151,0.05850887671113014,0.0714946985244751,0.07767147570848465,0.09869713336229324,0.10140510648488998,0.1164083331823349,0.1324559450149536,0.13525457680225372,0.15394212305545807,0.1645830273628235,0.17470026016235352...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [linear-clamp-high] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-getoutputtimestamp.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [getoutputtimestamp-initial-values] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  timestamp.contextTime does exist.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  timestamp.performanceTime does exist.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  timestamp.contextTime is greater than or equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  timestamp.performanceTime is greater than or equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [getoutputtimestamp-initial-values] All assertions passed. (total 4 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-analysernode-interface/test-analyser-gain.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Test effect of AnalyserNode on GainNode output",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [initialize] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new OfflineAudioContext(...) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [initialize] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [invalid constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode() threw TypeError: \"Failed to construct 'PannerNode': 1 argument required, but only 0 present.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(1) threw TypeError: \"Failed to construct 'PannerNode': parameter 1 is not of type 'BaseAudioContext'.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(context, 42) threw TypeError: \"Failed to construct 'PannerNode': parameter 2 ('options') is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [invalid constructor] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [default constructor] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 = new PannerNode(context) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0 instanceof PannerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfInputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.numberOfOutputs is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelCountMode is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.panningModel is equal to equalpower.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.positionX.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.positionY.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.positionZ.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.orientationX.value is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.orientationY.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.orientationZ.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.distanceModel is equal to inverse.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.refDistance is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.maxDistance is equal to 10000.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.rolloffFactor is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.coneInnerAngle is equal to 360.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.coneOuterAngle is equal to 360.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node0.coneOuterGain is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.listener.positionX.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.listener.positionY.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.listener.positionZ.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.listener.forwardX.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.listener.forwardY.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.listener.forwardZ.value is equal to -1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.listener.upX.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.listener.upY.value is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.listener.upZ.value is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [default constructor] All assertions passed. (total 30 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test AudioNodeOptions] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1 = new PannerNode(c, {\"channelCount\":1}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node1.channelCount is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node2 = new PannerNode(c, {\"channelCount\":2}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node2.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {\"channelCount\":0}) threw NotSupportedError: \"Failed to construct 'PannerNode': The channelCount provided (0) is outside the range [1, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {\"channelCount\":3}) threw NotSupportedError: \"Failed to construct 'PannerNode': The channelCount provided (3) is outside the range [1, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {\"channelCount\":99}) threw NotSupportedError: \"Failed to construct 'PannerNode': The channelCount provided (99) is outside the range [1, 2].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node3 = new PannerNode(c, {\"channelCountMode\":\"clamped-max\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node3.channelCountMode is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node4 = new PannerNode(c, {\"channelCountMode\":\"explicit\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node4.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {\"channelCountMode\":\"max\"}) threw NotSupportedError: \"Failed to construct 'PannerNode': Panner: 'max' is not allowed\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, \" + JSON.stringify(options) + \") threw TypeError: \"Failed to construct 'PannerNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node5 = new PannerNode(c, {\"channelInterpretation\":\"speakers\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node5.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node6 = new PannerNode(c, {\"channelInterpretation\":\"discrete\"}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node6.channelInterpretation is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {\"channelInterpretation\":\"foobar\"}) threw TypeError: \"Failed to construct 'PannerNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {\"maxDistance\":-1}) threw RangeError: \"Failed to construct 'PannerNode': The maxDistance provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node7 = new PannerNode(c, {\"maxDistance\":100}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node7.maxDistance is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {\"rolloffFactor\":-1}) threw RangeError: \"Failed to construct 'PannerNode': The rolloffFactor provided (-1) is less than the minimum bound (0).\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node8 = new PannerNode(c, {\"rolloffFactor\":0}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node8.rolloffFactor is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node8 = new PannerNode(c, {\"rolloffFactor\":0.5}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node8.rolloffFactor is equal to 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node8 = new PannerNode(c, {\"rolloffFactor\":100}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node8.rolloffFactor is equal to 100.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {\"coneOuterGain\":-1}) threw InvalidStateError: \"Failed to construct 'PannerNode': The coneOuterGain provided (-1) is outside the range [0, 1].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {\"coneOuterGain\":1.1}) threw InvalidStateError: \"Failed to construct 'PannerNode': The coneOuterGain provided (1.1) is outside the range [0, 1].\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node9 = new PannerNode(c, {\"coneOuterGain\":0}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node9.coneOuterGain is equal to 0.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node9 = new PannerNode(c, {\"coneOuterGain\":0.5}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node9.coneOuterGain is equal to 0.5.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node9 = new PannerNode(c, {\"coneOuterGain\":1}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node9.coneOuterGain is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] All assertions passed. (total 36 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [constructor with options] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new PannerNode(c, {\"panningModel\":\"HRTF\",\"positionX\":1.4142135623730951,\"positionY\":2.8284271247461903,\"positionZ\":4.242640687119286,\"orientationX\":-1.4142135623730951,\"orientationY\":-2.8284271247461903,\"orientationZ\":-4.242640687119286,\"distanceModel\":\"linear\",\"refDistance\":3.141592653589793,\"maxDistance\":6.283185307179586,\"rolloffFactor\":9.42477796076938,\"coneInnerAngle\":12.566370614359172,\"coneOuterAngle\":15.707963267948966,\"coneOuterGain\":0.3141592653589793}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node instanceof PannerNode is equal to true.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.panningModel is equal to HRTF.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.positionX.value is equal to 1.4142135381698608.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.positionY.value is equal to 2.8284270763397217.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.positionZ.value is equal to 4.242640495300293.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.orientationX.value is equal to -1.4142135381698608.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.orientationY.value is equal to -2.8284270763397217.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.orientationZ.value is equal to -4.242640495300293.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.distanceModel is equal to linear.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.refDistance is equal to 3.141592653589793.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.maxDistance is equal to 6.283185307179586.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.rolloffFactor is equal to 9.42477796076938.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.coneInnerAngle is equal to 12.566370614359172.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.coneOuterAngle is equal to 15.707963267948966.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.coneOuterGain is equal to 0.3141592653589793.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCount is equal to 2.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelCountMode is equal to clamped-max.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor with options] All assertions passed. (total 19 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [automate-freq] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output of bandpass filter with frequency automation equals [0,0.27222275733947754,0.1703483760356903,-0.4806261956691742,-0.2788437604904175,0.3957056999206543,0.10840324312448502,-0.39677220582962036,0.06871235370635986,0.41004475951194763,-0.1897629052400589,-0.3590146601200104,0.29248547554016113,0.2614542245864868,-0.376722127199173,-0.14195005595684052...] with an element-wise tolerance of {\"absoluteThreshold\":0.0000046455,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [automate-freq] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [automate-q] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output of bandpass filter with Q automation equals [0,0.013114781118929386,0.047823384404182434,0.09765293449163437,0.15657125413417816,0.21899054944515228,0.27981746196746826,0.3345244824886322,0.379226952791214,0.4107542335987091,0.4267079830169678,0.42550167441368103,0.40637844800949097,0.3694050908088684,0.31544122099876404,0.24608469009399414...] with an element-wise tolerance of {\"absoluteThreshold\":9.8348e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [automate-q] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [automate-gain] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output of lowshelf filter with gain automation equals [0,0.4781356751918793,1.5511385202407837,3.0428154468536377,4.649440288543701,6.148099899291992,7.424892902374268,8.436473846435547,9.169538497924805,9.61856460571289,9.779438972473145,9.650873184204102,9.237476348876953,8.551753997802734,7.614615440368652,6.454819679260254...] with an element-wise tolerance of {\"absoluteThreshold\":0.000027657,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [automate-gain] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [automate-detune] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output of bandpass filter with detune automation equals [0,0.0008383856620639563,0.00141120795160532,0.00036609364906325936,0.0001000093761831522,0.0012290297308936715,0.001128630479797721,0.0000010075401633002912,0.0004436193557921797,0.0014331036945804954,0.00065815937705338,-0.00011537729005794972,0.0008997227996587753,0.0013498960761353374,0.00016446926747448742,0.00006718232179991901...] with an element-wise tolerance of {\"absoluteThreshold\":0.000031471,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [automate-detune] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [automate-all] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output of peaking filter with automation of all parameters equals [0,0.9876883625984192,-0.30901700258255005,-0.8910065293312073,0.5877852439880371,0.7071067690849304,-0.80901700258255,-0.45399048924446106,0.9510565400123596,0.15643446147441864,-1,0.15643446147441864,0.9510565400123596,-0.45399048924446106,-0.80901700258255,0.7071067690849304...] with an element-wise tolerance of {\"absoluteThreshold\":0.00062907,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [automate-all] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [modulation] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Output of bandpass filter with sinusoidal modulation of bandpass center frequency equals [0,0.0018003738950937986,0.00716581242159009,0.015862563624978065,0.027496544644236565,0.04151911661028862,0.05723972246050835,0.07384545356035233,0.09042731672525406,0.10601259768009186,0.11960244923830032,0.13021349906921387,0.13692189753055573,0.13890819251537323,0.13550083339214325,0.12621651589870453...] with an element-wise tolerance of {\"absoluteThreshold\":0.000039787,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [modulation] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-simple.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [simple] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Initial WaveShaper.curve is equal to null.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Initial WaveShaper.oversample is equal to none.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting oversample to \"2x\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Waveshaper.oversample = \"2x\" is equal to 2x.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting oversample to \"4x\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Waveshaper.oversample = \"4x\" is equal to 4x.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting oversample to \"invalid\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Waveshaper.oversample = \"invalid\" is equal to 4x.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting curve to [-1,0.25,0.75] did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  WaveShaper.curve is identical to the array [-1,0.25,0.75].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting curve back to null did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Waveshaper.curve = null is equal to null.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [simple] All assertions passed. (total 12 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Query |sampleRate| upon AudioWorkletGlobalScope construction] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  frequencyParam.maxValue is equal to 24000.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [Query |sampleRate| upon AudioWorkletGlobalScope construction] All assertions passed. (total 1 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Test linearRampToValue with end time in the past",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test[0:127] contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Reference[0:127] contains only the constant 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Test[128:] is identical to the array [0.10000000149011612,0.1000492125749588,0.10009842365980148,0.10014764219522476,0.10019685328006744,0.10024606436491013,0.10029527544975281,0.10034449398517609,0.10039370507001877,0.10044291615486145,0.10049212723970413,0.10054134577512741,0.10059055685997009,0.10063976794481277,0.10068897902965546,0.10073819756507874...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test] All assertions passed. (total 3 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully.",
          "status": "PASS",
          "message": null
        }
      ]
    }
  ]
}