{
  "results": [
    {
      "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": "X default baseLatency is not greater than 0. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  context = new AudioContext({'latencyHint': 'interactive'}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  interactive baseLatency is equal to undefined.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context = new AudioContext({'latencyHint': 'balanced'}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X balanced baseLatency is not greater than or equal to undefined. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  context = new AudioContext({'latencyHint': 'playback'}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X playback baseLatency is not greater than or equal to undefined. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [test-audiocontextoptions-latencyHint-basic] 3 out of 9 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X double-constructor baseLatency small is not less than or equal to undefined. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  context = new AudioContext({'latencyHint': validLatency}) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X double-constructor baseLatency inrange 1 is not greater than or equal to undefined. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X double-constructor baseLatency inrange 2 is not less than or equal to undefined. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  creating two high latency contexts did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  high latency context baseLatency is equal to undefined.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X high latency context baseLatency is not greater than undefined. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X context = new AudioContext({'latencyHint': 'foo'}) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  context = new AudioContext('latencyHint') threw TypeError: \"Argument 1 of AudioContext.constructor can't be converted to a dictionary.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test-audiocontextoptions-latencyHint-double] 5 out of 10 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 out of 2 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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-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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  linearRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  exponentialRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setTargetAtTime(1, 0.018750000000000003, 1) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(curve, 0.018750000000000003, 0.01) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(curve, 0.03125, 0.01) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(curve, 0.043750000000000004, 0.01) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: \"Element of argument 1 of AudioParam.setValueCurveAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: \"Element of argument 1 of AudioParam.setValueCurveAtTime is not a finite floating-point value.\".",
          "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: \"Element of argument 1 of AudioParam.setValueCurveAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime(curve, 0.031415926535897934, 0.01) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueCurveAtTime([1,2,3], 5, 5) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueCurveAtTime([1,2,3], 10, 10) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueCurveAtTime([1,2,3], 6, 9) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  g.gain.setValueCurveAtTime([1,2,3], 4, 11) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "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-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: \"Not enough arguments to AnalyserNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(1) threw TypeError: \"Argument 1 of AnalyserNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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": "X node0.channelCount is not equal to 2. Got 1.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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] 1 out of 12 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AnalyserNode(c, {channelCount: 99}) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"'channelCountMode' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"'channelInterpretation' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, { maxDecibels: -500 }) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, { minDecibels: -10 }) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, { smoothingTimeConstant: 2 }) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new AnalyserNode(c, {\"minDecibels\":-10,\"maxDecibels\":-150}) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [setting min/max] All assertions passed. (total 6 assertions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 7 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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: \"Index or size is negative or greater than the allowed amount\".",
          "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-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.https.html",
      "status": "ERROR",
      "message": "TypeError: context.audioWorklet is undefined",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Initializing AudioWorklet and Context] ",
          "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 1999 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-audioworklet-interface/audioworkletglobalscope-timing-info.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "\n      Test currentTime and currentFrame in AudioWorkletGlobalScope\n    ",
          "status": "FAIL",
          "message": "TypeError: context.audioWorklet is undefined"
        }
      ]
    },
    {
      "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: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.createChannelMerger(32) did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context.createChannelMerger(33) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "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": "X merger.channelCount = 3 did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  merger.channelCountMode is equal to explicit.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X merger.channelCountMode = \"max\" did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [exceptions-properties] 2 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-delaynode-interface/delaynode-scheduling.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": []
    },
    {
      "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting Delay length to 0 seconds threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting Delay length to negative threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting Delay length to NaN threw TypeError: \"Argument 1 of BaseAudioContext.createDelay is not a finite floating-point value.\".",
          "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-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: \"Not enough arguments to WaveShaperNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(1) threw TypeError: \"Argument 1 of WaveShaperNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new WaveShaperNode(c, {channelCount: 99}) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"'channelCountMode' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"'channelInterpretation' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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-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-audiobuffersourcenode-interface/audiosource-time-limits.html",
      "status": "ERROR",
      "message": "RangeError: The value for the stop time is outside the valid range.",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [buffersource: huge stop time] ",
          "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-pannernode-interface/panner-automation-position.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [0: 1-channel inverse rolloff: 1] ",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-disconnect.html",
      "status": "ERROR",
      "message": "TypeError: context.suspend is not a function",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [silent-disconnect] ",
          "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: \"Argument 1 of AudioParam.setValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(Infinity,1) threw TypeError: \"Argument 1 of AudioParam.linearRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(Infinity,1) threw TypeError: \"Argument 1 of AudioParam.exponentialRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(Infinity,1,1) threw TypeError: \"Argument 1 of AudioParam.setTargetAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueAtTime(-Infinity,1) threw TypeError: \"Argument 1 of AudioParam.setValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(-Infinity,1) threw TypeError: \"Argument 1 of AudioParam.linearRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(-Infinity,1) threw TypeError: \"Argument 1 of AudioParam.exponentialRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(-Infinity,1,1) threw TypeError: \"Argument 1 of AudioParam.setTargetAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueAtTime(NaN,1) threw TypeError: \"Argument 1 of AudioParam.setValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(NaN,1) threw TypeError: \"Argument 1 of AudioParam.linearRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(NaN,1) threw TypeError: \"Argument 1 of AudioParam.exponentialRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(NaN,1,1) threw TypeError: \"Argument 1 of AudioParam.setTargetAtTime is not a finite floating-point value.\".",
          "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: \"Argument 2 of AudioParam.setValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(1,Infinity) threw TypeError: \"Argument 2 of AudioParam.linearRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(1,Infinity) threw TypeError: \"Argument 2 of AudioParam.exponentialRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,Infinity,1) threw TypeError: \"Argument 2 of AudioParam.setTargetAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,1,Infinity) threw TypeError: \"Argument 3 of AudioParam.setTargetAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueAtTime(1,-Infinity) threw TypeError: \"Argument 2 of AudioParam.setValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(1,-Infinity) threw TypeError: \"Argument 2 of AudioParam.linearRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(1,-Infinity) threw TypeError: \"Argument 2 of AudioParam.exponentialRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,-Infinity,1) threw TypeError: \"Argument 2 of AudioParam.setTargetAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,1,-Infinity) threw TypeError: \"Argument 3 of AudioParam.setTargetAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueAtTime(1,NaN) threw TypeError: \"Argument 2 of AudioParam.setValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(1,NaN) threw TypeError: \"Argument 2 of AudioParam.linearRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(1,NaN) threw TypeError: \"Argument 2 of AudioParam.exponentialRampToValueAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,NaN,1) threw TypeError: \"Argument 2 of AudioParam.setTargetAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,1,NaN) threw TypeError: \"Argument 3 of AudioParam.setTargetAtTime is not a finite floating-point value.\".",
          "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: \"Argument 2 of AudioParam.setValueCurveAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([0,0,0],-Infinity,1) threw TypeError: \"Argument 2 of AudioParam.setValueCurveAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([0,0,0],NaN,1) threw TypeError: \"Argument 2 of AudioParam.setValueCurveAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([1,2,Infinity,3],1,1) threw TypeError: \"Element of argument 1 of AudioParam.setValueCurveAtTime is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([1,NaN,2,3],1,1) threw TypeError: \"Element of argument 1 of AudioParam.setValueCurveAtTime is not a finite floating-point value.\".",
          "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: \"The start time for an AudioParam method must be non-negative.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.linearRampToValueAtTime(1,-1) threw RangeError: \"The end time for an AudioParam method must be non-negative.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(1,-1) threw RangeError: \"The end time for an AudioParam method must be non-negative.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,-1,1) threw RangeError: \"The start time for an AudioParam method must be non-negative.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setTargetAtTime(1,1,-1) threw RangeError: \"The start time for an AudioParam method must be non-negative.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([0,0,0],-1,1) threw RangeError: \"The start time for an AudioParam method must be non-negative.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime([0,0,0],1,-1) threw RangeError: \"The curve duration for setValueCurveAtTime must be strictly positive.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime(curve, 1, 0) threw RangeError: \"The curve duration for setValueCurveAtTime must be strictly positive.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.setValueCurveAtTime(curve, 1, -1) threw RangeError: \"The curve duration for setValueCurveAtTime must be strictly positive.\".",
          "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: \"The value passed to exponentialRampToValueAtTime must be positive.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(-1e-100,1) threw RangeError: \"The value passed to exponentialRampToValueAtTime must be positive.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain.gain.exponentialRampToValueAtTime(1e-100,1) threw RangeError: \"The value passed to exponentialRampToValueAtTime must be positive.\".",
          "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-audiobuffer-interface/audiobuffer-copy-channel.html",
      "status": "ERROR",
      "message": "IndexSizeError: Index or size is negative or greater than the allowed amount",
      "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: \"Argument 1 of AudioBuffer.copyFromChannel is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2: buffer.copyFromChannel(context, 0) threw TypeError: \"Argument 1 of AudioBuffer.copyFromChannel does not implement interface Float32Array.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3: buffer.copyFromChannel(x, -1) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4: buffer.copyFromChannel(x, 3) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  5: buffer.copyFromChannel(x, 0, -1) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  6: buffer.copyFromChannel(x, 0, 16) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  7: buffer.copyFromChannel(x, 3) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [copyFrom-exceptions] All assertions passed. (total 9 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: \"Argument 1 of AudioBuffer.copyToChannel is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  1: buffer.copyToChannel(context, 0) threw TypeError: \"Argument 1 of AudioBuffer.copyToChannel does not implement interface Float32Array.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  2: buffer.copyToChannel(x, -1) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  3: buffer.copyToChannel(x, 3) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4: buffer.copyToChannel(x, 0, -1) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  5: buffer.copyToChannel(x, 0, 16) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  6: buffer.copyToChannel(x, 3) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [copyTo-exceptions] All assertions passed. (total 8 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
        }
      ]
    },
    {
      "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": "X Osc(freq: 44100.00390625) output: Expected 0 for all values but found 5511 unexpected values: \n\tIndex\tActual\n\t[1]\t1.7484555314695172e-7\n\t[2]\t1.7484555314695172e-7\n\t[3]\t1.7484555314695172e-7\n\t[4]\t1.7484555314695172e-7\n\t...and 5507 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  Osc(freq: 1, detune: 18514.189453125) output equals [0,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7,1.7484555314695172e-7...] with an element-wise tolerance of {\"absoluteThreshold\":0,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [detune limits] 1 out of 4 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X osc[5:]: Expected 0 for all values but found 5507 unexpected values: \n\tIndex\tActual\n\t[0]\t0.0007123791729100049\n\t[1]\t0.0008548549376428127\n\t[2]\t0.0009973307605832815\n\t[3]\t0.0011398064671084285\n\t...and 5503 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [detune automation] 1 out of 3 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 out of 2 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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 1254 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 1 at offset 2561 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 2 at offset 2731 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 3 at offset 3980 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 4 at offset 6530 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 5 at offset 6700 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 6 at offset 9176 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 7 at offset 10499 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 8 at offset 10669 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 9 at offset 13219 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 10 at offset 14468 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 11 at offset 14638 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 12 at offset 17114 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 13 at offset 18437 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 14 at offset 18607 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 15 at offset 21083 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 16 at offset 22480 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 17 at offset 22576 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 18 at offset 25052 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 19 at offset 26375 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 20 at offset 26545 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 21 at offset 29021 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 22 at offset 29117 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 23 at offset 30514 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 24 at offset 32990 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 25 at offset 34313 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 26 at offset 34483 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 27 at offset 36959 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 28 at offset 37129 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 29 at offset 38452 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 30 at offset 40928 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 31 at offset 42251 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 32 at offset 42421 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 33 at offset 44897 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 34 at offset 45067 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 35 at offset 46390 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 36 at offset 48866 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 37 at offset 49036 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 38 at offset 50359 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 39 at offset 52835 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 40 at offset 53005 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 41 at offset 54328 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 42 at offset 56804 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 43 at offset 56974 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 44 at offset 58297 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 45 at offset 60773 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 46 at offset 60943 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 47 at offset 62266 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 48 at offset 64742 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 49 at offset 64912 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 50 at offset 67388 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 51 at offset 68719 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 52 at offset 70116 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 53 at offset 71365 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 54 at offset 71519 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 55 at offset 72842 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 56 at offset 75334 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 57 at offset 76657 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 58 at offset 76737 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 59 at offset 78134 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 60 at offset 79457 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 61 at offset 80780 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 62 at offset 83272 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 63 at offset 84595 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 64 at offset 84749 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 65 at offset 86072 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 66 at offset 87395 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 67 at offset 88644 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 68 at offset 91210 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 69 at offset 92533 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 70 at offset 92687 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 71 at offset 94010 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 72 at offset 96502 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 73 at offset 97899 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 74 at offset 99148 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 75 at offset 100467 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 76 at offset 100552 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 77 at offset 103190 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 78 at offset 104436 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 79 at offset 104598 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 80 at offset 105921 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 81 at offset 108405 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 82 at offset 108567 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 83 at offset 111051 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 84 at offset 112451 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 85 at offset 112459 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 86 at offset 115020 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 87 at offset 115182 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 119068 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 90 at offset 120306 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 121718 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 93 at offset 124360 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 94 at offset 125586 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 95 at offset 126908 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 96 at offset 128330 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 97 at offset 128381 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 98 at offset 129710 is less than or equal to 0.000001865.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 99 at offset 131532 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-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-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 903 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 1 at offset 2226 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 2 at offset 3549 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 3 at offset 4872 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 4 at offset 6195 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 5 at offset 7518 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 6 at offset 8841 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 7 at offset 10164 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 8 at offset 11487 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 9 at offset 12810 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 10 at offset 14133 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 11 at offset 15456 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 12 at offset 16779 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 13 at offset 18102 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 14 at offset 19425 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 15 at offset 20748 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 16 at offset 22071 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 17 at offset 23394 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 18 at offset 24717 is less than or equal to 0.0000037194.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 19 at offset 26040 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-audionode-interface/audionode-connect-method-chaining.html",
      "status": "ERROR",
      "message": "IndexSizeError: Index or size is negative or greater than the allowed amount",
      "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
        }
      ]
    },
    {
      "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-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-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-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.05756402388215065,0.11493714898824692,0.17192909121513367,0.22835086286067963,0.28401532769203186,0.3387378752231598,0.39233705401420593,0.4446351230144501,0.49545860290527344,0.5446389317512512,0.5920130610466003,0.6374238729476929,0.6807207465171814,0.721760094165802,0.7604058384895325...] with an element-wise tolerance of {\"absoluteThreshold\":0.090348,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  SNR (49.51 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-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: \"Not enough arguments to StereoPannerNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(1) threw TypeError: \"Argument 1 of StereoPannerNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCount\":3}) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCount\":99}) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new StereoPannerNode(c, {\"channelCountMode\":\"foobar\"}) threw TypeError: \"'channelCountMode' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"'channelInterpretation' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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-audiocontext-interface/audiocontext-getoutputtimestamp.html",
      "status": "ERROR",
      "message": "TypeError: context.getOutputTimestamp is not a function",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [getoutputtimestamp-initial-values] ",
          "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.026408344507217407,0.0501461960375309,0.08106273412704468,0.11869751662015915,0.16254764795303345,0.2120732069015503,0.26670268177986145,0.32583874464035034,0.3888637125492096,0.4551454186439514,0.5240428447723389,0.5949114561080933,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.9474786520004272,0.9044824242591858,0.8552321195602417,0.8003132939338684,0.7403419613838196,0.6759582161903381,0.6078203320503235,0.5365989208221436,0.462971031665802,0.3876142203807831,0.3112010061740875,0.23439353704452515,0.15783827006816864,0.08216116577386856,0.007963056676089764...] 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.01358321588486433,0.022416500374674797,0.030982105061411858,0.039210930466651917,0.047037314623594284,0.05439956113696098,0.061240408569574356,0.06750746816396713,0.07315362989902496,0.07813738286495209,0.0824231505393982,0.08598148077726364,0.08878929913043976,0.09082996845245361,0.09209345281124115...] 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.9775835275650024,0.9690179228782654,0.9607890844345093,0.9529626965522766,0.9456004500389099,0.9387595653533936,0.9324925541877747,0.9268463850021362,0.9218626022338867,0.9175768494606018,0.9140185117721558,0.9112107157707214,0.9091700315475464,0.9079065322875977...] 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.9215781688690186,0.9059253931045532,0.8912009000778198,0.8775191903114319,0.8649850487709045,0.8536927700042725,0.8437252044677734,0.8351536989212036,0.8280370235443115,0.8224214315414429,0.8183400630950928,0.8158131241798401...] 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.1966440677642822,1.278151512145996,1.360594630241394,1.443515419960022,1.526496171951294,1.609157681465149,1.6911571025848389,1.7721866369247437,1.851970911026001,1.930266261100769,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.816114664077759,2.5985424518585205,2.3935577869415283,2.2019753456115723,2.024296998977661,1.8607537746429443,1.7113466262817383,1.5758823156356812,1.4540070295333862,1.345236897468567,1.2489848136901855,1.1645853519439697,1.091315746307373,1.0284156799316406,0.975102961063385...] 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.0379410982131958,1.048111915588379,1.0578279495239258,1.0670101642608643,1.0755844116210938,1.0834821462631226,1.0906407833099365,1.0970040559768677,1.1025229692459106,1.107155442237854,1.1108675003051758,1.1136326789855957,1.1154327392578125...] 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.0013446897501125932,0.0021993762347847223,0.0033279559575021267,0.0047471169382333755,0.006465281825512648,0.008482922799885273,0.010792970657348633,0.013381303288042545,0.01622731238603592,0.019304519519209862,0.022581251338124275...] 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/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-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.1693689525127411,0.3387379050254822,0.4880809485912323,0.6374239921569824,0.7490829825401306,0.8607419729232788,0.921514630317688,0.9822872281074524,0.9849877953529358,0.9876883625984192,0.931997537612915,0.8763067126274109,0.7688093781471252,0.6613120436668396,0.5147184133529663...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  DelayNode: Output of a-rate DelayNode is identical to the array [0,0.1693689525127411,0.3387379050254822,0.4880809485912323,0.6374239921569824,0.7490829825401306,0.8607419729232788,0.921514630317688,0.9822872281074524,0.9849877953529358,0.9876883625984192,0.931997537612915,0.8763067126274109,0.7688093781471252,0.6613120436668396,0.5147184133529663...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X DelayNode: Difference between a-rate and k-rate DelayNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Test k-rate DelayNode] 1 out of 8 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html",
      "status": "TIMEOUT",
      "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": "X 1: Channel 0 expected to be equal to the array [0,0,0.9458408951759338,0.8448333740234375,1.7668662071228027,1.7069319486618042,1.6640567779541016,1.7177010774612427,1.6363751888275146,1.8421850204467773,1.1905916929244995,0.20796972513198853,-0.5251069664955139,-1.5682599544525146,-1.7950979471206665,-1.6221753358840942...] but differs in 969 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t1.1920928955078125e-7\t0.0000000000000000e+0\n\t[1]\t-7.4505805969238281e-8\t0.0000000000000000e+0\n\t[2]\t9.4584071636199951e-1\t9.4584089517593384e-1\n\t[3]\t8.4483325481414795e-1\t8.4483337402343750e-1\n\t...and 965 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X 1: Channel 1 expected to be equal to the array [0,0,0,0.9458408951759338,0.8448333740234375,1.7668662071228027,1.7069319486618042,1.6640567779541016,1.7177010774612427,1.6363751888275146,1.8421850204467773,1.1905916929244995,0.20796972513198853,-0.5251069664955139,-1.5682599544525146,-1.7950979471206665...] but differs in 1011 places:\n\tIndex\tActual\t\t\tExpected\n\t[2]\t-2.6077032089233398e-8\t0.0000000000000000e+0\n\t[3]\t9.4584083557128906e-1\t9.4584089517593384e-1\n\t[4]\t8.4483331441879272e-1\t8.4483337402343750e-1\n\t[5]\t1.7668659687042236e+0\t1.7668662071228027e+0\n\t...and 1007 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [1-channel input] 2 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [2-channel input] produces 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X 2: Channel 0 expected to be equal to the array [0,0,0.9458408951759338,0.8448333740234375,1.812909483909607,1.6304945945739746,1.751382827758789,1.6240888833999634,1.7747939825057983,1.3059051036834717,-0.5349912047386169,-1.5818383693695068,-1.8035974502563477,-1.5881481170654297,-1.7987757921218872,-1.4335107803344727...] but differs in 1032 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t-8.9406967163085938e-8\t0.0000000000000000e+0\n\t[1]\t-1.9371509552001953e-7\t0.0000000000000000e+0\n\t[2]\t9.4584083557128906e-1\t9.4584089517593384e-1\n\t[3]\t8.4483325481414795e-1\t8.4483337402343750e-1\n\t...and 1028 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X 2: Channel 1 expected to be equal to the array [0,0,0,0.9458408951759338,0.8448333740234375,1.812909483909607,1.6304945945739746,1.751382827758789,1.6240888833999634,1.7747939825057983,1.3059051036834717,-0.5349912047386169,-1.5818383693695068,-1.8035974502563477,-1.5881481170654297,-1.7987757921218872...] but differs in 1003 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t-5.9604644775390625e-8\t0.0000000000000000e+0\n\t[1]\t-1.4901161193847656e-7\t0.0000000000000000e+0\n\t[2]\t-2.0489096641540527e-7\t0.0000000000000000e+0\n\t[3]\t9.4584083557128906e-1\t9.4584089517593384e-1\n\t...and 999 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [2-channel input] 2 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [3-channel input] 3->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X 3: Channel 0 expected to be equal to the array [0,0,0.9458408951759338,0.8448333740234375,1.812909483909607,1.6304945945739746,1.751382827758789,1.6240888833999634,1.7747939825057983,1.3059051036834717,-0.5349912047386169,-1.5818383693695068,-1.8035974502563477,-1.5881481170654297,-1.7987757921218872,-1.4335107803344727...] but differs in 1032 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t-8.9406967163085938e-8\t0.0000000000000000e+0\n\t[1]\t-1.9371509552001953e-7\t0.0000000000000000e+0\n\t[2]\t9.4584083557128906e-1\t9.4584089517593384e-1\n\t[3]\t8.4483325481414795e-1\t8.4483337402343750e-1\n\t...and 1028 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X 3: Channel 1 expected to be equal to the array [0,0,0,0.9458408951759338,0.8448333740234375,1.812909483909607,1.6304945945739746,1.751382827758789,1.6240888833999634,1.7747939825057983,1.3059051036834717,-0.5349912047386169,-1.5818383693695068,-1.8035974502563477,-1.5881481170654297,-1.7987757921218872...] but differs in 1003 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t-5.9604644775390625e-8\t0.0000000000000000e+0\n\t[1]\t-1.4901161193847656e-7\t0.0000000000000000e+0\n\t[2]\t-2.0489096641540527e-7\t0.0000000000000000e+0\n\t[3]\t9.4584083557128906e-1\t9.4584089517593384e-1\n\t...and 999 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [3-channel input] 2 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [4-channel input] 4->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X 4: Channel 0 expected to be equal to the array [0,0,0.9706697463989258,0.8062858581542969,1.8264563083648682,1.6379892826080322,1.0640915632247925,0.11066664755344391,0.0652712881565094,-0.2920137643814087,-0.7946902513504028,-0.007852882146835327,-0.029863953590393066,0.06670215725898743,-0.27740323543548584,-1.19685959815979...] but differs in 1056 places:\n\tIndex\tActual\t\t\tExpected\n\t[1]\t-4.4703483581542969e-8\t0.0000000000000000e+0\n\t[2]\t9.7066980600357056e-1\t9.7066974639892578e-1\n\t[3]\t8.0628573894500732e-1\t8.0628585815429688e-1\n\t[5]\t1.6379891633987427e+0\t1.6379892826080322e+0\n\t...and 1052 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X 4: Channel 1 expected to be equal to the array [0,0,0,0.9706697463989258,0.8062858581542969,1.8264563083648682,1.6379892826080322,1.0640915632247925,0.11066664755344391,0.0652712881565094,-0.2920137643814087,-0.7946902513504028,-0.007852882146835327,-0.029863953590393066,0.06670215725898743,-0.27740323543548584...] but differs in 1060 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t2.9802322387695313e-8\t0.0000000000000000e+0\n\t[1]\t1.6763806343078613e-8\t0.0000000000000000e+0\n\t[2]\t3.4458935260772705e-8\t0.0000000000000000e+0\n\t[3]\t9.7066986560821533e-1\t9.7066974639892578e-1\n\t...and 1056 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [4-channel input] 2 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [5.1-channel input] 5.1->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X 5.1: Channel 0 expected to be equal to the array [0,0,2.2955899238586426,2.0720272064208984,3.9322750568389893,2.6799845695495605,1.0305213928222656,0.573580801486969,1.1953470706939697,1.1813762187957764,-0.4176445007324219,-2.2066144943237305,-2.9535818099975586,-1.275363564491272,0.26151078939437866,0.6016380786895752...] but differs in 1030 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t1.1920928955078125e-7\t0.0000000000000000e+0\n\t[1]\t-1.0430812835693359e-7\t0.0000000000000000e+0\n\t[2]\t2.2955901622772217e+0\t2.2955899238586426e+0\n\t[4]\t3.9322748184204102e+0\t3.9322750568389893e+0\n\t...and 1026 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X 5.1: Channel 1 expected to be equal to the array [0,0,0,2.2955899238586426,2.0720272064208984,3.9322750568389893,2.6799845695495605,1.0305213928222656,0.573580801486969,1.1953470706939697,1.1813762187957764,-0.4176445007324219,-2.2066144943237305,-2.9535818099975586,-1.275363564491272,0.26151078939437866...] but differs in 1039 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t2.9802322387695313e-8\t0.0000000000000000e+0\n\t[2]\t1.1175870895385742e-8\t0.0000000000000000e+0\n\t[3]\t2.2955901622772217e+0\t2.2955899238586426e+0\n\t[4]\t2.0720274448394775e+0\t2.0720272064208984e+0\n\t...and 1035 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [5.1-channel input] 2 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [delayed buffer set] Delayed set of 4-channel response",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html",
      "status": "ERROR",
      "message": "TypeError: context.audioWorklet is undefined",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [setup] ",
          "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: \"Not enough arguments to DynamicsCompressorNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(1) threw TypeError: \"Argument 1 of DynamicsCompressorNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DynamicsCompressorNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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": "X node0.channelCountMode is not equal to clamped-max. Got explicit.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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] 1 out of 13 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X new DynamicsCompressorNode(c, {\"channelCount\":3}) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelCount\":99}) threw NotSupportedError: \"Operation is not supported\".",
          "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": "X new DynamicsCompressorNode(c, {\"channelCountMode\":\"max\"}) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  new DynamicsCompressorNode(c, {\"channelCountMode\":\"foobar\"}) threw TypeError: \"'channelCountMode' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"'channelInterpretation' member of AudioNodeOptions 'foobar' is not a valid value for enumeration ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] 2 out of 18 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X node1.channelCountMode is not equal to clamped-max. Got explicit.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  node1.channelInterpretation is equal to speakers.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [constructor with options] 1 out of 10 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 out of 5 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Element Source tests completed",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Channel 0 processed some data",
          "status": "PASS",
          "message": null
        },
        {
          "name": "All data processed correctly",
          "status": "FAIL",
          "message": "assert_array_approx_equals: comparing expected and rendered buffers (channel 0) lengths differ, expected 48001 got 47103"
        }
      ]
    },
    {
      "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: \"Argument 1 of AudioScheduledSourceNode.start is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(Infinity) threw TypeError: \"Argument 1 of AudioScheduledSourceNode.start is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(-Infinity) threw TypeError: \"Argument 1 of AudioScheduledSourceNode.start is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Calling stop() before start() threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(-1) threw RangeError: \"The value for the start time is outside the valid range.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Calling start() twice threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(-1) threw RangeError: \"The value for the stop time is outside the valid range.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(NaN) threw TypeError: \"Argument 1 of AudioScheduledSourceNode.stop is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(Infinity) threw TypeError: \"Argument 1 of AudioScheduledSourceNode.stop is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(-Infinity) threw TypeError: \"Argument 1 of AudioScheduledSourceNode.stop is not a finite floating-point value.\".",
          "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-audioworklet-interface/audioworkletnode-channel-count.https.html",
      "status": "ERROR",
      "message": "TypeError: context.audioWorklet is undefined",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [setup-buffer-and-worklet] ",
          "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-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: \"Argument 1 of AudioNode.connect is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  audioNode.connect(null, 0, 0) threw TypeError: \"Argument 1 of AudioNode.connect is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  audioNode.connect(context.destination, 5, 0) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  audioNode.connect(context.destination, 0, 5) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"A parameter or an operation is not supported by the underlying object\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  context3 = new AudioContext(1, 44100, 44100) threw TypeError: \"Argument 1 of AudioContext.constructor can't be converted to a dictionary.\".",
          "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/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-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-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-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-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-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-audioparam-interface/retrospective-setValueCurveAtTime.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": []
    },
    {
      "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-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.005672738421708345,0.031761426478624344,0.09152895957231522,0.18822041153907776,0.31529122591018677,0.4580240547657013,0.596237063407898,0.7076711058616638,0.7715818881988525,0.7720558643341064,0.7006218433380127,0.5578290820121765,0.3535992503166199,0.10631799697875977,-0.1592119038105011...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  All k-rate params: Output of a-rate BiquadFilterNode is identical to the array [0,0.005672738421708345,0.031761426478624344,0.09152895957231522,0.18822041153907776,0.31529122591018677,0.4580240547657013,0.596237063407898,0.7076711058616638,0.7715818881988525,0.7720558643341064,0.7006218433380127,0.5578290820121765,0.3535992503166199,0.10631799697875977,-0.1592119038105011...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X All k-rate params: Difference between a-rate and k-rate BiquadFilterNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Biquad k-rate AudioParams (all)] 1 out of 11 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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.39067503809928894,0.8280425071716309,1.237112283706665,1.5446852445602417,1.689960241317749,1.6333723068237305,1.3625420331954956,0.8945993781089783,0.2746044099330902,-0.42971938848495483,-1.136267900466919,-1.7588073015213013,-2.217907190322876,-2.451180934906006,-2.4215526580810547...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate Q: Output of a-rate BiquadFilterNode is identical to the array [0,0.39067503809928894,0.8280425071716309,1.237112283706665,1.5446852445602417,1.689960241317749,1.6333723068237305,1.3625420331954956,0.8945993781089783,0.2746044099330902,-0.42971938848495483,-1.136267900466919,-1.7588073015213013,-2.217907190322876,-2.451180934906006,-2.4215526580810547...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X k-rate Q: Difference between a-rate and k-rate BiquadFilterNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Biquad k-rate Q] 1 out of 8 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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.39067503809928894,0.8280425071716309,1.237112283706665,1.5446852445602417,1.689960241317749,1.6333723068237305,1.3625420331954956,0.8945993781089783,0.2746044099330902,-0.42971938848495483,-1.136267900466919,-1.7588073015213013,-2.217907190322876,-2.451180934906006,-2.4215526580810547...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate detune: Output of a-rate BiquadFilterNode is identical to the array [0,0.39067503809928894,0.8280425071716309,1.237112283706665,1.5446852445602417,1.689960241317749,1.6333723068237305,1.3625420331954956,0.8945993781089783,0.2746044099330902,-0.42971938848495483,-1.136267900466919,-1.7588073015213013,-2.217907190322876,-2.451180934906006,-2.4215526580810547...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X k-rate detune: Difference between a-rate and k-rate BiquadFilterNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Biquad k-rate detune] 1 out of 8 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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.39067503809928894,0.8280425071716309,1.237112283706665,1.5446852445602417,1.689960241317749,1.6333723068237305,1.3625420331954956,0.8945993781089783,0.2746044099330902,-0.42971938848495483,-1.136267900466919,-1.7588073015213013,-2.217907190322876,-2.451180934906006,-2.4215526580810547...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate frequency: Output of a-rate BiquadFilterNode is identical to the array [0,0.39067503809928894,0.8280425071716309,1.237112283706665,1.5446852445602417,1.689960241317749,1.6333723068237305,1.3625420331954956,0.8945993781089783,0.2746044099330902,-0.42971938848495483,-1.136267900466919,-1.7588073015213013,-2.217907190322876,-2.451180934906006,-2.4215526580810547...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X k-rate frequency: Difference between a-rate and k-rate BiquadFilterNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Biquad k-rate frequency] 1 out of 8 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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.39067503809928894,0.8280425071716309,1.237112283706665,1.5446852445602417,1.689960241317749,1.6333723068237305,1.3625420331954956,0.8945993781089783,0.2746044099330902,-0.42971938848495483,-1.136267900466919,-1.7588073015213013,-2.217907190322876,-2.451180934906006,-2.4215526580810547...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate gain: Output of a-rate BiquadFilterNode is identical to the array [0,0.39067503809928894,0.8280425071716309,1.237112283706665,1.5446852445602417,1.689960241317749,1.6333723068237305,1.3625420331954956,0.8945993781089783,0.2746044099330902,-0.42971938848495483,-1.136267900466919,-1.7588073015213013,-2.217907190322876,-2.451180934906006,-2.4215526580810547...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X k-rate gain: Difference between a-rate and k-rate BiquadFilterNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Biquad k-rate gain] 1 out of 8 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 5 out of 5 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html",
      "status": "ERROR",
      "message": "TypeError: context.suspend is not a function",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Test exponentialRampToValue with end time in the past",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": []
    },
    {
      "test": "/webaudio/the-audio-api/the-analysernode-interface/test-analyser-minimum.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Test AnalyserNode when the input is silent",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html",
      "status": "ERROR",
      "message": "TypeError: this._actual is undefined",
      "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": "X p1 = offlineContext.suspend() incorrectly threw TypeError: \"offlineContext.suspend is not a function\".",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X p1 instanceof Promise is not true. Got false.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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-audioworklet-interface/audioworklet-messageport.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "\n      Test MessagePort in AudioWorkletNode and AudioWorkletProcessor\n    ",
          "status": "FAIL",
          "message": "TypeError: context.audioWorklet is undefined"
        }
      ]
    },
    {
      "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-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-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/idlharness.https.window.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "idl_test setup",
          "status": "FAIL",
          "message": "promise_test: Unhandled rejection with value: object \"TypeError: context.audioWorklet is undefined\""
        },
        {
          "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": "FAIL",
          "message": "assert_true: The prototype object must have a property \"audioWorklet\" expected true got false"
        },
        {
          "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": "FAIL",
          "message": "assert_true: The prototype object must have a property \"baseLatency\" expected true got false"
        },
        {
          "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": "FAIL",
          "message": "assert_own_property: interface prototype object missing non-static operation expected property \"getOutputTimestamp\" missing"
        },
        {
          "name": "AudioContext interface: operation resume()",
          "status": "FAIL",
          "message": "assert_own_property: interface prototype object missing non-static operation expected property \"resume\" missing"
        },
        {
          "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": "FAIL",
          "message": "assert_inherits: property \"baseLatency\" not found in prototype chain"
        },
        {
          "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": "FAIL",
          "message": "assert_inherits: property \"getOutputTimestamp\" not found in prototype chain"
        },
        {
          "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": "FAIL",
          "message": "assert_inherits: property \"audioWorklet\" not found in prototype chain"
        },
        {
          "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": "FAIL",
          "message": "assert_own_property: interface prototype object missing non-static operation expected property \"resume\" missing"
        },
        {
          "name": "OfflineAudioContext interface: operation suspend(double)",
          "status": "FAIL",
          "message": "assert_own_property: interface prototype object missing non-static operation expected property \"suspend\" missing"
        },
        {
          "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": "FAIL",
          "message": "assert_inherits: property \"suspend\" not found in prototype chain"
        },
        {
          "name": "OfflineAudioContext interface: calling suspend(double) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError",
          "status": "FAIL",
          "message": "assert_inherits: property \"suspend\" not found in prototype chain"
        },
        {
          "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": "FAIL",
          "message": "assert_inherits: property \"audioWorklet\" not found in prototype chain"
        },
        {
          "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": "FAIL",
          "message": "assert_true: The prototype object must have a property \"automationRate\" expected true got false"
        },
        {
          "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": "FAIL",
          "message": "assert_own_property: interface prototype object missing non-static operation expected property \"cancelAndHoldAtTime\" missing"
        },
        {
          "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": "FAIL",
          "message": "assert_inherits: property \"automationRate\" not found in prototype chain"
        },
        {
          "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": "FAIL",
          "message": "assert_inherits: property \"cancelAndHoldAtTime\" not found in prototype chain"
        },
        {
          "name": "AudioParam interface: calling cancelAndHoldAtTime(double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError",
          "status": "FAIL",
          "message": "assert_inherits: property \"cancelAndHoldAtTime\" not found in prototype chain"
        },
        {
          "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": "FAIL",
          "message": "assert_true: The prototype object must have a property \"positionX\" expected true got false"
        },
        {
          "name": "AudioListener interface: attribute positionY",
          "status": "FAIL",
          "message": "assert_true: The prototype object must have a property \"positionY\" expected true got false"
        },
        {
          "name": "AudioListener interface: attribute positionZ",
          "status": "FAIL",
          "message": "assert_true: The prototype object must have a property \"positionZ\" expected true got false"
        },
        {
          "name": "AudioListener interface: attribute forwardX",
          "status": "FAIL",
          "message": "assert_true: The prototype object must have a property \"forwardX\" expected true got false"
        },
        {
          "name": "AudioListener interface: attribute forwardY",
          "status": "FAIL",
          "message": "assert_true: The prototype object must have a property \"forwardY\" expected true got false"
        },
        {
          "name": "AudioListener interface: attribute forwardZ",
          "status": "FAIL",
          "message": "assert_true: The prototype object must have a property \"forwardZ\" expected true got false"
        },
        {
          "name": "AudioListener interface: attribute upX",
          "status": "FAIL",
          "message": "assert_true: The prototype object must have a property \"upX\" expected true got false"
        },
        {
          "name": "AudioListener interface: attribute upY",
          "status": "FAIL",
          "message": "assert_true: The prototype object must have a property \"upY\" expected true got false"
        },
        {
          "name": "AudioListener interface: attribute upZ",
          "status": "FAIL",
          "message": "assert_true: The prototype object must have a property \"upZ\" expected true got false"
        },
        {
          "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": "FAIL",
          "message": "assert_inherits: property \"positionX\" not found in prototype chain"
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"positionY\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"positionY\" not found in prototype chain"
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"positionZ\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"positionZ\" not found in prototype chain"
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"forwardX\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"forwardX\" not found in prototype chain"
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"forwardY\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"forwardY\" not found in prototype chain"
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"forwardZ\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"forwardZ\" not found in prototype chain"
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"upX\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"upX\" not found in prototype chain"
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"upY\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"upY\" not found in prototype chain"
        },
        {
          "name": "AudioListener interface: context.listener must inherit property \"upZ\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"upZ\" not found in prototype chain"
        },
        {
          "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": "FAIL",
          "message": "assert_equals: wrong value for AudioProcessingEvent.length expected 2 but got 0"
        },
        {
          "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": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"TypeError: Illegal constructor.\""
        },
        {
          "name": "Stringification of new AudioProcessingEvent('', {\n        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n      })",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"TypeError: Illegal constructor.\""
        },
        {
          "name": "AudioProcessingEvent interface: new AudioProcessingEvent('', {\n        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n      }) must inherit property \"playbackTime\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"TypeError: Illegal constructor.\""
        },
        {
          "name": "AudioProcessingEvent interface: new AudioProcessingEvent('', {\n        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n      }) must inherit property \"inputBuffer\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"TypeError: Illegal constructor.\""
        },
        {
          "name": "AudioProcessingEvent interface: new AudioProcessingEvent('', {\n        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n      }) must inherit property \"outputBuffer\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"TypeError: Illegal constructor.\""
        },
        {
          "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": "FAIL",
          "message": "assert_true: The prototype object must have a property \"mediaElement\" expected true got false"
        },
        {
          "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": "FAIL",
          "message": "assert_inherits: property \"mediaElement\" not found in prototype chain"
        },
        {
          "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": "FAIL",
          "message": "assert_true: The prototype object must have a property \"mediaStream\" expected true got false"
        },
        {
          "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": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorklet\" expected property \"AudioWorklet\" missing"
        },
        {
          "name": "AudioWorklet interface object length",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorklet\" expected property \"AudioWorklet\" missing"
        },
        {
          "name": "AudioWorklet interface object name",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorklet\" expected property \"AudioWorklet\" missing"
        },
        {
          "name": "AudioWorklet interface: existence and properties of interface prototype object",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorklet\" expected property \"AudioWorklet\" missing"
        },
        {
          "name": "AudioWorklet interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorklet\" expected property \"AudioWorklet\" missing"
        },
        {
          "name": "AudioWorklet interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorklet\" expected property \"AudioWorklet\" missing"
        },
        {
          "name": "AudioWorklet must be primary interface of context.audioWorklet",
          "status": "FAIL",
          "message": "assert_equals: wrong typeof object expected \"object\" but got \"undefined\""
        },
        {
          "name": "Stringification of context.audioWorklet",
          "status": "FAIL",
          "message": "assert_equals: wrong typeof object expected \"object\" but got \"undefined\""
        },
        {
          "name": "AudioWorkletGlobalScope interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "AudioParamMap interface: existence and properties of interface object",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioParamMap\" expected property \"AudioParamMap\" missing"
        },
        {
          "name": "AudioParamMap interface object length",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioParamMap\" expected property \"AudioParamMap\" missing"
        },
        {
          "name": "AudioParamMap interface object name",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioParamMap\" expected property \"AudioParamMap\" missing"
        },
        {
          "name": "AudioParamMap interface: existence and properties of interface prototype object",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioParamMap\" expected property \"AudioParamMap\" missing"
        },
        {
          "name": "AudioParamMap interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioParamMap\" expected property \"AudioParamMap\" missing"
        },
        {
          "name": "AudioParamMap interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioParamMap\" expected property \"AudioParamMap\" missing"
        },
        {
          "name": "AudioParamMap must be primary interface of worklet_node.parameters",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "Stringification of worklet_node.parameters",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioWorkletNode interface: existence and properties of interface object",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorkletNode\" expected property \"AudioWorkletNode\" missing"
        },
        {
          "name": "AudioWorkletNode interface object length",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorkletNode\" expected property \"AudioWorkletNode\" missing"
        },
        {
          "name": "AudioWorkletNode interface object name",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorkletNode\" expected property \"AudioWorkletNode\" missing"
        },
        {
          "name": "AudioWorkletNode interface: existence and properties of interface prototype object",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorkletNode\" expected property \"AudioWorkletNode\" missing"
        },
        {
          "name": "AudioWorkletNode interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorkletNode\" expected property \"AudioWorkletNode\" missing"
        },
        {
          "name": "AudioWorkletNode interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorkletNode\" expected property \"AudioWorkletNode\" missing"
        },
        {
          "name": "AudioWorkletNode interface: attribute parameters",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorkletNode\" expected property \"AudioWorkletNode\" missing"
        },
        {
          "name": "AudioWorkletNode interface: attribute port",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorkletNode\" expected property \"AudioWorkletNode\" missing"
        },
        {
          "name": "AudioWorkletNode interface: attribute onprocessorerror",
          "status": "FAIL",
          "message": "assert_own_property: self does not have own property \"AudioWorkletNode\" expected property \"AudioWorkletNode\" missing"
        },
        {
          "name": "AudioWorkletNode must be primary interface of worklet_node",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "Stringification of worklet_node",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioWorkletNode interface: worklet_node must inherit property \"parameters\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioWorkletNode interface: worklet_node must inherit property \"port\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioWorkletNode interface: worklet_node must inherit property \"onprocessorerror\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"connect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"connect(AudioParam, unsigned long)\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: calling connect(AudioParam, unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect()\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(unsigned long)\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: calling disconnect(unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(AudioNode)\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode) on worklet_node with too few arguments must throw TypeError",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(AudioNode, unsigned long)\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(AudioNode, unsigned long, unsigned long)\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(AudioParam)\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam) on worklet_node with too few arguments must throw TypeError",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"disconnect(AudioParam, unsigned long)\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: calling disconnect(AudioParam, unsigned long) on worklet_node with too few arguments must throw TypeError",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"context\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"numberOfInputs\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"numberOfOutputs\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"channelCount\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"channelCountMode\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioNode interface: worklet_node must inherit property \"channelInterpretation\" with the proper type",
          "status": "FAIL",
          "message": "assert_equals: Unexpected exception when evaluating object expected null but got object \"ReferenceError: worklet_node is not defined\""
        },
        {
          "name": "AudioWorkletProcessor interface: existence and properties of interface object",
          "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.04429905489087105,0.08842407912015915,0.13220170140266418,0.17545996606349945,0.21802887320518494,0.2597412168979645,0.30043312907218933,0.3399447500705719,0.37812086939811707,0.4148114323616028,0.44987234473228455,0.4831658601760864,0.5145611763000488,0.5439349412918091,0.571171760559082...].",
          "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.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732956767082214,0.4248766303062439,0.4807544946670532,0.5347436666488647,0.5866319537162781,0.6362155675888062,0.683299720287323,0.7276993989944458,0.7692402005195618,0.8077588677406311...].",
          "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-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: \"Not enough arguments to GainNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(1) threw TypeError: \"Argument 1 of GainNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new GainNode(c, {channelCount: 99}) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"'channelCountMode' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"'channelInterpretation' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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-audioparam-interface/k-rate-panner.html",
      "status": "TIMEOUT",
      "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 [3.353939348471613e-9,0.07824614644050598,0.06072939187288284,0.0456632599234581,0.03603517264127731,0.029616545885801315,0.02508825622498989,0.021739641204476357,0.019169358536601067,0.017137136310338974,0.015491396188735962,0.014132186770439148,0.012991067953407764,0.012019690126180649,0.011182941496372223,0.010454748757183552...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionX: Output of a-rate PannerNode is identical to the array [3.353939348471613e-9,0.07824614644050598,0.06072939187288284,0.0456632599234581,0.03603517264127731,0.029616545885801315,0.02508825622498989,0.021739641204476357,0.019169358536601067,0.017137136310338974,0.015491396188735962,0.014132186770439148,0.012991067953407764,0.012019690126180649,0.011182941496372223,0.010454748757183552...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X k-rate positionX: Difference between a-rate and k-rate PannerNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate positionX k-rate output [0: 127]: Expected 3.353939348471613e-9 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.07824614644050598\n\t[2]\t0.06072939187288284\n\t[3]\t0.0456632599234581\n\t[4]\t0.03603517264127731\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate positionX k-rate output [128: 255]: Expected 0.0012474488466978073 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.0012377984821796417\n\t[2]\t0.0012282967800274491\n\t[3]\t0.0012189395492896438\n\t[4]\t0.0012097239959985018\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate positionX k-rate output [256: 383]: Expected 0.0006243684329092503 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.0006219413480721414\n\t[2]\t0.0006195332389324903\n\t[3]\t0.0006171435234136879\n\t[4]\t0.0006147722597233951\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate positionX k-rate output [384: 511]: Expected 0.0004163868143223226 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.00041530607268214226\n\t[2]\t0.00041423088987357914\n\t[3]\t0.0004131612367928028\n\t[4]\t0.0004120970843359828\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate positionX k-rate output [512: 639]: Expected 0.00031234289053827524 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.0003117343003395945\n\t[2]\t0.0003111281548626721\n\t[3]\t0.0003105243085883558\n\t[4]\t0.0003099228488281369\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Panner k-rate positionX] 6 out of 13 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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.05288306623697281,0.033593595027923584,0.0257780272513628,0.020881211385130882,0.01750437170267105,0.015046178363263607,0.01318277046084404,0.011724471114575863,0.010553551837801933,0.009593425318598747,0.008792280219495296,0.008113889954984188,0.007532190997153521,0.007027978077530861,0.006586793810129166...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate positionY: Output of a-rate PannerNode is identical to the array [0.15397992730140686,0.05288306623697281,0.033593595027923584,0.0257780272513628,0.020881211385130882,0.01750437170267105,0.015046178363263607,0.01318277046084404,0.011724471114575863,0.010553551837801933,0.009593425318598747,0.008792280219495296,0.008113889954984188,0.007532190997153521,0.007027978077530861,0.006586793810129166...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X k-rate positionY: Difference between a-rate and k-rate PannerNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate positionY k-rate output [0: 127]: Expected 0.15397992730140686 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.05288306623697281\n\t[2]\t0.033593595027923584\n\t[3]\t0.0257780272513628\n\t[4]\t0.020881211385130882\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate positionY k-rate output [128: 255]: Expected 0.0008113961666822433 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.0008051462355069816\n\t[2]\t0.0007989919977262616\n\t[3]\t0.0007929310668259859\n\t[4]\t0.0007869614637456834\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate positionY k-rate output [256: 383]: Expected 0.0004070003342349082 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.000405421742470935\n\t[2]\t0.0004038553452119231\n\t[3]\t0.0004023009678348899\n\t[4]\t0.00040075849392451346\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate positionY k-rate output [384: 511]: Expected 0.00027162270271219313 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.0002709187101572752\n\t[2]\t0.00027021835558116436\n\t[3]\t0.00026952155167236924\n\t[4]\t0.0002688283857423812\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate positionY k-rate output [512: 639]: Expected 0.0002038254460785538 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.0002034287463175133\n\t[2]\t0.00020303358905948699\n\t[3]\t0.00020263998885639012\n\t[4]\t0.00020224788750056177\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Panner k-rate positionY] 6 out of 13 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X k-rate orientationX: Output of k-rate PannerNode expected to be equal to the array [NaN,0.0007921538199298084,0.0015768823213875294,0.002354216994717717,0.003124210285022855,0.0038868971168994904,0.0046423193998634815,0.005390523001551628,0.006131546106189489,0.006865449249744415,0.007592272944748402,0.008312067948281765,0.009024884551763535,0.009730767458677292,0.010429782792925835,0.011121973395347595...] but differs in 1 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\tNaN\tNaN",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationX: Output of a-rate PannerNode expected to be equal to the array [NaN,0.0007921538199298084,0.0015768823213875294,0.002354216994717717,0.003124210285022855,0.0038868971168994904,0.0046423193998634815,0.005390523001551628,0.006131546106189489,0.006865449249744415,0.007592272944748402,0.008312067948281765,0.009024884551763535,0.009730767458677292,0.010429782792925835,0.011121973395347595...] but differs in 1 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\tNaN\tNaN",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  k-rate orientationX: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 1 different value).",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X k-rate orientationX k-rate output [0: 127]: Expected NaN for all values but found 128 unexpected values: \n\tIndex\tActual\n\t[0]\tNaN\n\t[1]\t0.0007921538199298084\n\t[2]\t0.0015768823213875294\n\t[3]\t0.002354216994717717\n\t...and 124 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationX k-rate output [128: 255]: Expected 0.05854205787181854 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.05878373980522156\n\t[2]\t0.05902349576354027\n\t[3]\t0.05926135182380676\n\t[4]\t0.05949733033776283\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationX k-rate output [256: 383]: Expected 0.07888390868902206 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.07898671180009842\n\t[2]\t0.07908895611763\n\t[3]\t0.07919061928987503\n\t[4]\t0.07929172366857529\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationX k-rate output [384: 511]: Expected 0.08858339488506317 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.08863884955644608\n\t[2]\t0.08869408071041107\n\t[3]\t0.08874908089637756\n\t[4]\t0.08880386501550674\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationX k-rate output [512: 639]: Expected 0.09418901801109314 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.09422345459461212\n\t[2]\t0.09425775706768036\n\t[3]\t0.09429195523262024\n\t[4]\t0.09432604908943176\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Panner k-rate orientationX] 7 out of 13 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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.07389718294143677,0.07390936464071274,0.07392925024032593,0.07395651191473007,0.0739908218383789,0.07403187453746796,0.07407934963703156,0.07413295656442642,0.07419241964817047,0.07425744831562042,0.07432778924703598,0.07440316677093506,0.07448334246873856,0.07456807047128677,0.07465711236000061...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationY: Output of a-rate PannerNode is identical to the array [0.07389304786920547,0.07389718294143677,0.07390936464071274,0.07392925024032593,0.07395651191473007,0.0739908218383789,0.07403187453746796,0.07407934963703156,0.07413295656442642,0.07419241964817047,0.07425744831562042,0.07432778924703598,0.07440316677093506,0.07448334246873856,0.07456807047128677,0.07465711236000061...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X k-rate orientationY: Difference between a-rate and k-rate PannerNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationY k-rate output [0: 127]: Expected 0.07389304786920547 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.07389718294143677\n\t[2]\t0.07390936464071274\n\t[3]\t0.07392925024032593\n\t[4]\t0.07395651191473007\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationY k-rate output [128: 255]: Expected 0.08894405514001846 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.08904264867305756\n\t[2]\t0.08914060890674591\n\t[3]\t0.08923792839050293\n\t[4]\t0.08933462202548981\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationY k-rate output [256: 383]: Expected 0.09769000113010406 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.0977361649274826\n\t[2]\t0.09778208285570145\n\t[3]\t0.09782776236534119\n\t[4]\t0.09787321090698242\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationY k-rate output [384: 511]: Expected 0.10211683064699173 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.10214255005121231\n\t[2]\t0.10216815769672394\n\t[3]\t0.10219366103410721\n\t[4]\t0.10221906751394272\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationY k-rate output [512: 639]: Expected 0.1047375425696373 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.1047537699341774\n\t[2]\t0.10476994514465332\n\t[3]\t0.10478606820106506\n\t[4]\t0.10480213910341263\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Panner k-rate orientationY] 6 out of 13 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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.07389718294143677,0.07390936464071274,0.07392925024032593,0.07395651191473007,0.0739908218383789,0.07403187453746796,0.07407934963703156,0.07413295656442642,0.07419241964817047,0.07425744831562042,0.07432778924703598,0.07440316677093506,0.07448334246873856,0.07456807047128677,0.07465711236000061...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  k-rate orientationZ: Output of a-rate PannerNode is identical to the array [0.07389304786920547,0.07389718294143677,0.07390936464071274,0.07392925024032593,0.07395651191473007,0.0739908218383789,0.07403187453746796,0.07407934963703156,0.07413295656442642,0.07419241964817047,0.07425744831562042,0.07432778924703598,0.07440316677093506,0.07448334246873856,0.07456807047128677,0.07465711236000061...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X k-rate orientationZ: Difference between a-rate and k-rate PannerNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationZ k-rate output [0: 127]: Expected 0.07389304786920547 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.07389718294143677\n\t[2]\t0.07390936464071274\n\t[3]\t0.07392925024032593\n\t[4]\t0.07395651191473007\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationZ k-rate output [128: 255]: Expected 0.08894405514001846 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.08904264867305756\n\t[2]\t0.08914060890674591\n\t[3]\t0.08923792839050293\n\t[4]\t0.08933462202548981\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationZ k-rate output [256: 383]: Expected 0.09769000113010406 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.0977361649274826\n\t[2]\t0.09778208285570145\n\t[3]\t0.09782776236534119\n\t[4]\t0.09787321090698242\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationZ k-rate output [384: 511]: Expected 0.10211683064699173 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.10214255005121231\n\t[2]\t0.10216815769672394\n\t[3]\t0.10219366103410721\n\t[4]\t0.10221906751394272\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate orientationZ k-rate output [512: 639]: Expected 0.1047375425696373 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.1047537699341774\n\t[2]\t0.10476994514465332\n\t[3]\t0.10478606820106506\n\t[4]\t0.10480213910341263\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Panner k-rate orientationZ] 6 out of 13 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [Listener k-rate positionX] ",
          "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 (-124.9664097542858 dB) of magnitude response at frequency 1992 Hz is less than or equal to -119.17759642805565.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error (0.0000022600132537835187 deg) in phase response at frequency 1080 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/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": "X The zero playbackRate should hold the sample value. Expected 0.5 but got 0.5001220703125 at the index 4097 Got false.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [synthesize-verify] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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.23952385783195496,0.45072680711746216,0.6086364984512329,0.6945819854736328,0.6984010934829712,0.6196423768997192,0.4676182270050049,0.2603035569190979,0.022211041301488876,-0.21850764751434326,-0.4333903193473816,-0.5970296859741211,-0.6900770664215088,-0.701530933380127,-0.6300366520881653...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  StereoPannerNode: Output of a-rate StereoPannerNode is identical to the array [0,0.23952385783195496,0.45072680711746216,0.6086364984512329,0.6945819854736328,0.6984010934829712,0.6196423768997192,0.4676182270050049,0.2603035569190979,0.022211041301488876,-0.21850764751434326,-0.4333903193473816,-0.5970296859741211,-0.6900770664215088,-0.701530933380127,-0.6300366520881653...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X StereoPannerNode: Difference between a-rate and k-rate StereoPannerNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Test k-rate StereoPannerNode] 1 out of 8 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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-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": "X Panner distanceModel: \"linear\", rolloffFactor: 2 expected to be equal to the array [0,0.009438800625503063,0.02810869924724102,0.03424321487545967,0.049286145716905594,0.06121714785695076,0.07480449229478836,0.08126655966043472,0.10326723754405975,0.10609924048185349,0.12179718166589737,0.1385885775089264,0.14151552319526672,0.16106881201267242,0.1722015142440796,0.18278823792934418...] but differs in 2047 places:\n\tIndex\tActual\t\t\tExpected\n\t[1]\t1.8877600496125524e-6\t9.4388006255030632e-3\n\t[2]\t5.6217400015157182e-6\t2.8108699247241020e-2\n\t[3]\t6.8486433519865386e-6\t3.4243214875459671e-2\n\t[4]\t9.8572290880838409e-6\t4.9286145716905594e-2\n\t...and 2043 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [linear-clamp-high] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html",
      "status": "ERROR",
      "message": "TypeError: context.suspend is not a function",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Stereo panner.positionX] ",
          "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": "X 1: Channel 0 does not equal [0,0,0.9458408951759338,0.8448333740234375,0.8210252523422241,0.8620985746383667,0.8430315852165222,0.855602502822876,0.7933436632156372,0.9865825176239014,0.3972480297088623,-0.7786127924919128,-0.9223549962043762,-0.7896472215652466,-0.8727429509162903,-0.8325281143188477...] with an element-wise tolerance of {\"absoluteThreshold\":3.5763e-7,\"relativeThreshold\":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[267]\t8.6412906646728516e-1\t8.6412948369979858e-1\t4.1723251342773438e-7\t4.8283564129919487e-7\t3.5763000000000001e-7\n\t[779]\t-8.6412906646728516e-1\t-8.6412948369979858e-1\t4.1723251342773438e-7\t4.8283564129919487e-7\t3.5763000000000001e-7\n\tMax AbsError of 4.1723251342773438e-7 at index of 267.\n\tMax RelError of 4.8283564129919487e-7 at index of 267.\n",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  1: Channel 1 equals [0,0,0,0.9458408951759338,0.8448333740234375,0.8210252523422241,0.8620985746383667,0.8430315852165222,0.855602502822876,0.7933436632156372,0.9865825176239014,0.3972480297088623,-0.7786127924919128,-0.9223549962043762,-0.7896472215652466,-0.8727429509162903...] with an element-wise tolerance of {\"absoluteThreshold\":4.7684e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [1-channel input] 1 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [2-channel input] produces 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X 2: Channel 0 does not equal [0,0,0.9458408951759338,0.8448333740234375,0.8210252523422241,0.8620985746383667,0.8430315852165222,0.855602502822876,0.7933436632156372,0.9865825176239014,0.3972480297088623,-0.7786127924919128,-0.9223549962043762,-0.7896472215652466,-0.8727429509162903,-0.8325281143188477...] with an element-wise tolerance of {\"absoluteThreshold\":3.5763e-7,\"relativeThreshold\":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[267]\t8.6412906646728516e-1\t8.6412948369979858e-1\t4.1723251342773438e-7\t4.8283564129919487e-7\t3.5763000000000001e-7\n\t[779]\t-8.6412906646728516e-1\t-8.6412948369979858e-1\t4.1723251342773438e-7\t4.8283564129919487e-7\t3.5763000000000001e-7\n\tMax AbsError of 4.1723251342773438e-7 at index of 267.\n\tMax RelError of 4.8283564129919487e-7 at index of 267.\n",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  2: Channel 1 equals [0,0,0,0.9458408951759338,0.8448333740234375,0.8210252523422241,0.8620985746383667,0.8430315852165222,0.855602502822876,0.7933436632156372,0.9865825176239014,0.3972480297088623,-0.7786127924919128,-0.9223549962043762,-0.7896472215652466,-0.8727429509162903...] with an element-wise tolerance of {\"absoluteThreshold\":4.7684e-7,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [2-channel input] 1 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [3-channel input] 3->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X 3: Channel 0 does not equal [0,0,0.9458408951759338,0.8448333740234375,0.8210252523422241,0.8620985746383667,0.8430315852165222,0.855602502822876,0.7933436632156372,0.9865825176239014,0.3972480297088623,-0.7786127924919128,-0.9223549962043762,-0.7896472215652466,-0.8727429509162903,-0.8325281143188477...] with an element-wise tolerance of {\"absoluteThreshold\":3.5763e-7,\"relativeThreshold\":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[267]\t8.6412906646728516e-1\t8.6412948369979858e-1\t4.1723251342773438e-7\t4.8283564129919487e-7\t3.5763000000000001e-7\n\t[779]\t-8.6412906646728516e-1\t-8.6412948369979858e-1\t4.1723251342773438e-7\t4.8283564129919487e-7\t3.5763000000000001e-7\n\tMax AbsError of 4.1723251342773438e-7 at index of 267.\n\tMax RelError of 4.8283564129919487e-7 at index of 267.\n",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X 3: Channel 1 does not equal [0,0,0,0.9918842315673828,0.7683960199356079,0.9083511829376221,0.7684863805770874,0.9814503192901611,0.3193226158618927,-0.9322392344474792,-0.8032255172729492,-0.8812425136566162,-0.7985008358955383,-0.9260328412055969,-0.600982666015625,0.7887306809425354...] with an element-wise tolerance of {\"absoluteThreshold\":3.5763e-7,\"relativeThreshold\":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[653]\t8.3021926879882813e-1\t8.3021968603134155e-1\t4.1723251342773438e-7\t5.0255675750380060e-7\t3.5763000000000001e-7\n\t[1001]\t2.7387520670890808e-1\t2.7387481927871704e-1\t3.8743019104003906e-7\t1.4146250906176189e-6\t3.5763000000000001e-7\n\tMax AbsError of 4.1723251342773438e-7 at index of 653.\n\tMax RelError of 1.4146250906176189e-6 at index of 1001.\n",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [3-channel input] 2 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [4-channel input] 4->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  4: Channel 0 equals [0,0,0.9706697463989258,0.8062858581542969,0.8572278618812561,0.8353679776191711,0.1815471351146698,-0.06941461563110352,0.0376264750957489,-0.007540702819824219,-0.01803457736968994,0.029624849557876587,-0.021628618240356445,-0.005501270294189453,0.05631396174430847,-0.4426816999912262...] 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.9692283868789673,0.8026213049888611,0.8825444579124451,0.18008126318454742,0.027644813060760498,-0.2844730615615845,-0.7766556739807129,-0.037477731704711914,-0.008235335350036621,0.07220342755317688,-0.3337171971797943,-0.7541778683662415,-0.020433425903320312...] 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.2955899238586426,2.0720272064208984,1.532062292098999,0.8335829973220825,-0.21171289682388306,-0.005277678370475769,0.8338430523872375,1.0169568061828613,0.3252672553062439,-0.6764181852340698,-1.054646611213684,-0.5476447343826294,0.25095105171203613,-0.10892623662948608...] 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.4002127647399902,1.8464014530181885,1.242234230041504,0.578858494758606,0.3615039587020874,0.16441935300827026,-0.7429117560386658,-1.5301964282989502,-1.898935079574585,-0.7277188301086426,0.01055973768234253,0.7105643153190613,1.7486152648925781...] 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: 3 out of 6 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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": "X Pulse 75 boundary expected to be equal to the array [49613,50053] but differs in 1 places:\n\tIndex\tActual\t\t\tExpected\n\t[1]\t5.0054000000000000e+4\t5.0053000000000000e+4",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X Number of grains out of 100 that ended at the wrong time is not equal to 0. Got 1.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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] 2 out of 206 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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-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-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/audioworkletnode-construction.https.html",
      "status": "ERROR",
      "message": "TypeError: realtimeContext.audioWorklet is undefined",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [construction-before-module-loading] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Creating a node before loading a module should throw. threw \"ReferenceError\" instead of InvalidStateError.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [construction-before-module-loading] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [construction-after-module-loading] ",
          "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-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: \"Argument 1 of AudioBufferSourceNode.start is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(Infinity) threw TypeError: \"Argument 1 of AudioBufferSourceNode.start is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(-Infinity) threw TypeError: \"Argument 1 of AudioBufferSourceNode.start is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Calling stop() before start() threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(-1) threw RangeError: \"The value for the start time is outside the valid range.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(0,-1) threw RangeError: \"The value for the offset is outside the valid range.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  start(0,0,-1) threw RangeError: \"The value for the duration is outside the valid range.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Calling start() twice threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(-1) threw RangeError: \"The value for the stop time is outside the valid range.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(NaN) threw TypeError: \"Argument 1 of AudioScheduledSourceNode.stop is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(Infinity) threw TypeError: \"Argument 1 of AudioScheduledSourceNode.stop is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  stop(-Infinity) threw TypeError: \"Argument 1 of AudioScheduledSourceNode.stop is not a finite floating-point value.\".",
          "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-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.6248595118522644,0.8481203317642212,0.9757021069526672,0.9932119250297546,0.8986744284629822,0.7027547359466553,0.42755505442619324,0.1041216030716896,-0.23105813562870026,-0.5401715040206909,-0.7883464694023132,-0.9475855827331543,-0.9999247193336487...] 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": "X 2: Channel 0 expected to be equal to the array [0,0,0.9458408951759338,0.8448333740234375,0.8210252523422241,0.8620985746383667,0.8430315852165222,0.855602502822876,0.7933436632156372,0.9865825176239014,0.3972480297088623,-0.7786127924919128,-0.9223549962043762,-0.7896472215652466,-0.8727429509162903,-0.8325281143188477...] but differs in 966 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t2.9802322387695313e-8\t0.0000000000000000e+0\n\t[1]\t-7.4505805969238281e-8\t0.0000000000000000e+0\n\t[2]\t9.4584077596664429e-1\t9.4584089517593384e-1\n\t[3]\t8.4483331441879272e-1\t8.4483337402343750e-1\n\t...and 962 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X 2: Channel 1 expected to be equal to the array [0,0,0.9918842315673828,0.7683960199356079,0.9083511829376221,0.7684863805770874,0.9814503192901611,0.3193226158618927,-0.9322392344474792,-0.8032255172729492,-0.8812425136566162,-0.7985008358955383,-0.9260328412055969,-0.600982666015625,0.7887306809425354,0.8655399680137634...] but differs in 1034 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t-5.9604644775390625e-8\t0.0000000000000000e+0\n\t[1]\t4.4703483581542969e-8\t0.0000000000000000e+0\n\t[3]\t7.6839596033096313e-1\t7.6839601993560791e-1\n\t[4]\t9.0835124254226685e-1\t9.0835118293762207e-1\n\t...and 1030 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [2-channel input] 2 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [3-channel input] 3->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X 3: Channel 0 expected to be equal to the array [0,0,0.9458408951759338,0.8448333740234375,0.8210252523422241,0.8620985746383667,0.8430315852165222,0.855602502822876,0.7933436632156372,0.9865825176239014,0.3972480297088623,-0.7786127924919128,-0.9223549962043762,-0.7896472215652466,-0.8727429509162903,-0.8325281143188477...] but differs in 966 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t2.9802322387695313e-8\t0.0000000000000000e+0\n\t[1]\t-7.4505805969238281e-8\t0.0000000000000000e+0\n\t[2]\t9.4584077596664429e-1\t9.4584089517593384e-1\n\t[3]\t8.4483331441879272e-1\t8.4483337402343750e-1\n\t...and 962 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X 3: Channel 1 expected to be equal to the array [0,0,0.9918842315673828,0.7683960199356079,0.9083511829376221,0.7684863805770874,0.9814503192901611,0.3193226158618927,-0.9322392344474792,-0.8032255172729492,-0.8812425136566162,-0.7985008358955383,-0.9260328412055969,-0.600982666015625,0.7887306809425354,0.8655399680137634...] but differs in 1034 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t-5.9604644775390625e-8\t0.0000000000000000e+0\n\t[1]\t4.4703483581542969e-8\t0.0000000000000000e+0\n\t[3]\t7.6839596033096313e-1\t7.6839601993560791e-1\n\t[4]\t9.0835124254226685e-1\t9.0835118293762207e-1\n\t...and 1030 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [3-channel input] 2 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [4-channel input] 4->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X 4: Channel 0 expected to be equal to the array [0,0,0.9706697463989258,0.8062858581542969,0.8572278618812561,0.8353679776191711,0.1815471351146698,-0.06941461563110352,0.0376264750957489,-0.007540702819824219,-0.01803457736968994,0.029624849557876587,-0.021628618240356445,-0.005501270294189453,0.05631396174430847,-0.4426816999912262...] but differs in 1062 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t5.9604644775390625e-8\t0.0000000000000000e+0\n\t[1]\t-5.2154064178466797e-8\t0.0000000000000000e+0\n\t[3]\t8.0628573894500732e-1\t8.0628585815429688e-1\n\t[4]\t8.5722780227661133e-1\t8.5722786188125610e-1\n\t...and 1058 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X 4: Channel 1 expected to be equal to the array [0,0,0.9692283868789673,0.8026213049888611,0.8825444579124451,0.18008126318454742,0.027644813060760498,-0.2844730615615845,-0.7766556739807129,-0.037477731704711914,-0.008235335350036621,0.07220342755317688,-0.3337171971797943,-0.7541778683662415,-0.020433425903320312,-0.0313774049282074...] but differs in 1029 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t8.9406967163085938e-8\t0.0000000000000000e+0\n\t[1]\t-4.4703483581542969e-8\t0.0000000000000000e+0\n\t[3]\t8.0262124538421631e-1\t8.0262130498886108e-1\n\t[4]\t8.8254427909851074e-1\t8.8254445791244507e-1\n\t...and 1025 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [4-channel input] 2 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [5.1-channel input] 5.1->2 downmix producing 2-channel output",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X 5.1: Channel 0 expected to be equal to the array [0,0,2.2955899238586426,2.0720272064208984,1.532062292098999,0.8335829973220825,-0.21171289682388306,-0.005277678370475769,0.8338430523872375,1.0169568061828613,0.3252672553062439,-0.6764181852340698,-1.054646611213684,-0.5476447343826294,0.25095105171203613,-0.10892623662948608...] but differs in 1004 places:\n\tIndex\tActual\t\t\tExpected\n\t[1]\t-2.2351741790771484e-7\t0.0000000000000000e+0\n\t[4]\t1.5320621728897095e+0\t1.5320622920989990e+0\n\t[6]\t-2.1171277761459351e-1\t-2.1171289682388306e-1\n\t[7]\t-5.2777901291847229e-3\t-5.2776783704757690e-3\n\t...and 1000 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X 5.1: Channel 1 expected to be equal to the array [0,0,2.4002127647399902,1.8464014530181885,1.242234230041504,0.578858494758606,0.3615039587020874,0.16441935300827026,-0.7429117560386658,-1.5301964282989502,-1.898935079574585,-0.7277188301086426,0.01055973768234253,0.7105643153190613,1.7486152648925781,0.26711004972457886...] but differs in 1033 places:\n\tIndex\tActual\t\t\tExpected\n\t[0]\t2.9802322387695313e-7\t0.0000000000000000e+0\n\t[1]\t-1.8626451492309570e-8\t0.0000000000000000e+0\n\t[4]\t1.2422341108322144e+0\t1.2422342300415039e+0\n\t[5]\t5.7885855436325073e-1\t5.7885849475860596e-1\n\t...and 1029 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [5.1-channel input] 2 out of 2 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 4 out of 6 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": []
    },
    {
      "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: \"Argument 1 of OfflineAudioContext.constructor can't be converted to a dictionary.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext(3, 42) threw TypeError: \"Not enough arguments to OfflineAudioContext.\".",
          "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: \"Not enough arguments to OfflineAudioContext.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext({}) threw TypeError: \"Missing required 'length' member of OfflineAudioContextOptions.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext({\"length\":42}) threw TypeError: \"Missing required 'sampleRate' member of OfflineAudioContextOptions.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext({\"sampleRate\":12345}) threw TypeError: \"Missing required 'length' member of OfflineAudioContextOptions.\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext({\"length\":0,\"sampleRate\":8000}) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OfflineAudioContext({\"length\":1,\"sampleRate\":1}) threw NotSupportedError: \"Operation is not supported\".",
          "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-audioparam-interface/retrospective-setValueAtTime.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": []
    },
    {
      "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-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-audioparam-interface/k-rate-audioworklet.https.html",
      "status": "ERROR",
      "message": "TypeError: context.audioWorklet is undefined",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Create Test Worklet] ",
          "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-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-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "\n      Test passing SharedArrayBuffer to an AudioWorklet\n    ",
          "status": "FAIL",
          "message": "TypeError: context.audioWorklet is undefined"
        }
      ]
    },
    {
      "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-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-analysernode-interface/test-analyser-output.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "AnalyserNode output",
          "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": "X WaveShaper with silent inputs and curve {\"0\":0.5,\"1\":0.5,\"2\":0.5}: Expected 0.5 for all values but found 16000 unexpected values: \n\tIndex\tActual\n\t[0]\t0\n\t[1]\t0\n\t[2]\t0\n\t[3]\t0\n\t...and 15996 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [test-0] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [test-1] 2x curve output is non-zero for silent inputs",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X WaveShaper with 2x oversample, silent inputs, and curve {\"0\":0.5,\"1\":0.5,\"2\":0.5}: Expected 0.5 for all values but found 16000 unexpected values: \n\tIndex\tActual\n\t[0]\t0\n\t[1]\t0\n\t[2]\t0\n\t[3]\t0\n\t...and 15996 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [test-1] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [test-2] curve output is non-zero for no inputs",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X WaveShaper with no inputs and curve {\"0\":0.5,\"1\":0.5,\"2\":0.5}: Expected 0.5 for all values but found 16000 unexpected values: \n\tIndex\tActual\n\t[0]\t0\n\t[1]\t0\n\t[2]\t0\n\t[3]\t0\n\t...and 15996 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [test-2] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 3 out of 3 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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-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-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: \"Not enough arguments to OscillatorNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(1) threw TypeError: \"Argument 1 of OscillatorNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new OscillatorNode(c, {channelCount: 99}) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"'channelCountMode' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"'channelInterpretation' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X new OscillatorNode(, {\"type\":\"custom\",\"periodicWave\":{}}) incorrectly threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [constructor options] 1 out of 10 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 5 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html",
      "status": "ERROR",
      "message": "TypeError: context.audioWorklet is undefined",
      "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
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-size.https.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": []
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html",
      "status": "ERROR",
      "message": "TypeError: context.listener[item.name] is undefined",
      "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: \"Not enough arguments to PannerNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(1) threw TypeError: \"Argument 1 of PannerNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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
        }
      ]
    },
    {
      "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 58 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 1 at offset 1749 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 2 at offset 2704 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 3 at offset 4395 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 4 at offset 5350 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 5 at offset 7041 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 6 at offset 7996 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 7 at offset 9687 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 8 at offset 10642 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 9 at offset 12333 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 10 at offset 13288 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 11 at offset 14979 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 12 at offset 15934 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 13 at offset 17625 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 14 at offset 18580 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 15 at offset 20271 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 16 at offset 21226 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 17 at offset 22917 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 18 at offset 23872 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 19 at offset 25563 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 20 at offset 26518 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 21 at offset 28209 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 22 at offset 29164 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 23 at offset 30855 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 24 at offset 31810 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 25 at offset 33501 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 26 at offset 34456 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 27 at offset 36147 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 28 at offset 37102 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 29 at offset 38793 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 30 at offset 39748 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 31 at offset 41439 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 32 at offset 42394 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 33 at offset 44085 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 34 at offset 45040 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 35 at offset 46731 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 36 at offset 47686 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 37 at offset 49823 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 38 at offset 50514 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 39 at offset 52469 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 40 at offset 53160 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 41 at offset 55115 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 42 at offset 55806 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 43 at offset 57761 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 44 at offset 58452 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 45 at offset 60407 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 46 at offset 61098 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 47 at offset 63053 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 48 at offset 63744 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 49 at offset 65699 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 50 at offset 66390 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 51 at offset 68345 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 52 at offset 69036 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 53 at offset 70991 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 54 at offset 71682 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 55 at offset 73637 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 56 at offset 74328 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 57 at offset 76283 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 58 at offset 76974 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 59 at offset 78929 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 60 at offset 79620 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 61 at offset 81575 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 62 at offset 82266 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 63 at offset 84221 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 64 at offset 84912 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 65 at offset 86867 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 66 at offset 87558 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 67 at offset 89513 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 68 at offset 90204 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 69 at offset 91829 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 70 at offset 92654 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 71 at offset 94475 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 72 at offset 95300 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 73 at offset 97121 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 74 at offset 97946 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 75 at offset 99767 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 76 at offset 100592 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 77 at offset 102413 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 78 at offset 103238 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 79 at offset 105059 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 80 at offset 105884 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 81 at offset 107705 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 82 at offset 108530 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 83 at offset 110351 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 84 at offset 111176 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 85 at offset 113236 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 86 at offset 113998 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 87 at offset 115882 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 88 at offset 116644 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 89 at offset 118528 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 90 at offset 119290 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 91 at offset 121174 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 92 at offset 121936 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 93 at offset 123289 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 94 at offset 124612 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 95 at offset 125935 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 96 at offset 127013 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 97 at offset 128886 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 98 at offset 129680 is less than or equal to 0.00065683.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 99 at offset 131753 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-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": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-delaynode-interface/no-dezippering.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": []
    },
    {
      "test": "/webaudio/the-audio-api/the-stereopanner-interface/no-dezippering.html",
      "status": "ERROR",
      "message": "TypeError: context.suspend is not a function",
      "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
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html",
      "status": "ERROR",
      "message": "TypeError: context.suspend is not a function",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [disconnect(AudioParam)] ",
          "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: \"Not enough arguments to ConvolverNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(1) threw TypeError: \"Argument 1 of ConvolverNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConvolverNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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: \"Operation is not supported\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X new ConvolverNode(c, {channelCountMode: \"explicit\"}) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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: \"'channelInterpretation' member of AudioNodeOptions 'foobar' is not a valid value for enumeration ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation after invalid setter is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] 1 out of 13 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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: 1 out of 6 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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.6374238729476929,1.6807208061218262,1.7217600345611572,1.7604057788848877,1.796529769897461,1.8300120830535889,1.8607418537139893,1.8886171579360962,1.9135453701019287,1.9354438781738281,1.954240322113037,1.969871997833252,1.9822871685028076,1.9914448261260986...] 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-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-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: \"Not enough arguments to ChannelSplitterNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(1) threw TypeError: \"Argument 1 of ChannelSplitterNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "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: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {channelCountMode: \"clamped-max\"}) threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {channelInterpretation: \"speakers\"}) threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {\"channelCount\":3}) threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelSplitterNode(c, {\"channelCountMode\":\"max\"}) threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "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/retrospective-setTargetAtTime.html",
      "status": "ERROR",
      "message": "TypeError: context.suspend is not a function",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test] Test setTargetAtTime with start time in the past",
          "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-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-audioworklet-interface/audioworkletprocessor-options.https.html",
      "status": "ERROR",
      "message": "TypeError: context.audioWorklet is undefined",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [valid-processor-data] ",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-copy-curve.html",
      "status": "ERROR",
      "message": "TypeError: context.suspend is not a function",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test copying] Modifying curve should not modify WaveShaper",
          "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.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: 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": "X k-rate offset: Difference between a-rate and k-rate ConstantSourceNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate offset k-rate output [0: 127]: Expected 0 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t0.01953125\n\t[2]\t0.0390625\n\t[3]\t0.05859375\n\t[4]\t0.078125\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate offset k-rate output [128: 255]: Expected 2.5 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t2.51953125\n\t[2]\t2.5390625\n\t[3]\t2.55859375\n\t[4]\t2.578125\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate offset k-rate output [256: 383]: Expected 5 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t5.01953125\n\t[2]\t5.0390625\n\t[3]\t5.05859375\n\t[4]\t5.078125\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X k-rate offset k-rate output [384: 511]: Expected 7.5 for all values but found 127 unexpected values: \n\tIndex\tActual\n\t[1]\t7.51953125\n\t[2]\t7.5390625\n\t[3]\t7.55859375\n\t[4]\t7.578125\n\t...and 123 more errors.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [ConstantSource k-rate offset] 5 out of 12 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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-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-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-gainnode-interface/no-dezippering.html",
      "status": "ERROR",
      "message": "TypeError: context.suspend is not a function",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [test0] Dezippering of GainNode removed",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html",
      "status": "ERROR",
      "message": "TypeError: context.suspend is not a function",
      "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
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html",
      "status": "ERROR",
      "message": "TypeError: context.audioWorklet is undefined",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [setup-worklet] ",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Disconnecting a connection twice did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain1.disconnect(gain2) threw InvalidAccessError: \"A parameter or an operation is not supported by the underlying object\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  gain1.disconnect(gain3) threw InvalidAccessError: \"A parameter or an operation is not supported by the underlying object\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitter.disconnect(gain2, 2) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitter.disconnect(gain1, 0) threw InvalidAccessError: \"A parameter or an operation is not supported by the underlying object\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitter.disconnect(gain3, 0, 0) threw InvalidAccessError: \"A parameter or an operation is not supported by the underlying object\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  splitter.disconnect(merger, 3, 0) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "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-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-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-audioparam-interface/automation-rate.html",
      "status": "ERROR",
      "message": "TypeError: audioParam is undefined",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [AudioBufferSourceNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Default AudioBufferSourceNode.detune.automationRate is not equal to k-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Set AudioBufferSourceNode.detune.automationRate to \"a-rate\" did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Default AudioBufferSourceNode.playbackRate.automationRate is not equal to k-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Set AudioBufferSourceNode.playbackRate.automationRate to \"a-rate\" did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [AudioBufferSourceNode] 4 out of 4 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [BiquadFilterNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Default BiquadFilterNode.frequency.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X Default BiquadFilterNode.detune.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X Default BiquadFilterNode.Q.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X Default BiquadFilterNode.gain.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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] 4 out of 12 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [ConstantSourceNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Default ConstantSourceNode.offset.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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] 1 out of 3 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [DelayNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Default DelayNode.delayTime.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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] 1 out of 3 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [DynamicsCompressorNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Default DynamicsCompressorNode.threshold.automationRate is not equal to k-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Set DynamicsCompressorNode.threshold.automationRate to \"a-rate\" did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Default DynamicsCompressorNode.knee.automationRate is not equal to k-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Set DynamicsCompressorNode.knee.automationRate to \"a-rate\" did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Default DynamicsCompressorNode.ratio.automationRate is not equal to k-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Set DynamicsCompressorNode.ratio.automationRate to \"a-rate\" did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Default DynamicsCompressorNode.attack.automationRate is not equal to k-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Set DynamicsCompressorNode.attack.automationRate to \"a-rate\" did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Default DynamicsCompressorNode.release.automationRate is not equal to k-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X Set DynamicsCompressorNode.release.automationRate to \"a-rate\" did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [DynamicsCompressorNode] 10 out of 10 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [GainNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Default GainNode.gain.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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] 1 out of 3 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [OscillatorNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Default OscillatorNode.frequency.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X Default OscillatorNode.detune.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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] 2 out of 6 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [PannerNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Default PannerNode.positionX.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X Default PannerNode.positionY.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X Default PannerNode.positionZ.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X Default PannerNode.orientationX.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X Default PannerNode.orientationY.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X Default PannerNode.orientationZ.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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] 6 out of 18 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [StereoPannerNode] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Default StereoPannerNode.pan.automationRate is not equal to a-rate. Got undefined.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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] 1 out of 3 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [AudioListener] ",
          "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-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: \"Not enough arguments to BiquadFilterNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(1) threw TypeError: \"Argument 1 of BiquadFilterNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new BiquadFilterNode(c, {channelCount: 99}) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"'channelCountMode' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"'channelInterpretation' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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-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-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-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.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...] with an element-wise tolerance of {\"absoluteThreshold\":0.000030517578125,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered audio for channel 1 equals [0,0.125030517578125,0.24810791015625,0.3673095703125,0.480743408203125,0.58660888671875,0.68328857421875,0.76922607421875,0.84307861328125,0.903717041015625,0.950164794921875,0.981689453125,0.997802734375,0.99822998046875,0.983001708984375,0.952362060546875...] with an element-wise tolerance of {\"absoluteThreshold\":0.000030517578125,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered audio for channel 2 equals [0,0.18695068359375,0.3673095703125,0.53472900390625,0.68328857421875,0.8077392578125,0.903717041015625,0.96783447265625,0.997802734375,0.992584228515625,0.952362060546875,0.8785400390625,0.77374267578125,0.641693115234375,0.486968994140625,0.315093994140625...] with an element-wise tolerance of {\"absoluteThreshold\":0.000030517578125,\"relativeThreshold\":0}.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Rendered audio for channel 3 equals [0,0.24810791015625,0.480743408203125,0.68328857421875,0.84307861328125,0.950164794921875,0.997802734375,0.983001708984375,0.90673828125,0.77374267578125,0.592376708984375,0.373931884765625,0.132110595703125,-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.308319091796875,0.58660888671875,0.8077392578125,0.950164794921875,0.999969482421875,0.952362060546875,0.811920166015625,0.592376708984375,0.315093994140625,0.007110595703125,-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.3673095703125,0.68328857421875,0.903717041015625,0.997802734375,0.952362060546875,0.77374267578125,0.486968994140625,0.132110595703125,-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-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-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: \"Not enough arguments to IIRFilterNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(1) threw TypeError: \"Not enough arguments to IIRFilterNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new IIRFilterNode(c, {channelCount: 99}) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"'channelCountMode' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"'channelInterpretation' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"Missing required 'feedforward' member of IIRFilterOptions.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node = new IIRFilterNode(c, {\"feedforward\":[1,0.5]}) threw TypeError: \"Missing required 'feedback' member of IIRFilterOptions.\".",
          "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.05756402388215065,0.1437191665172577,0.21500666439533234,0.29277661442756653,0.3659778833389282,0.43976426124572754,0.511192798614502,0.581375777721405,0.649405837059021,0.7153946161270142,0.7789546847343445,0.8399596214294434,0.8981648087501526,0.9533984065055847,1.0054666996002197...].",
          "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-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: \"Argument 1 of BiquadFilterNode.getFrequencyResponse is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(1), null, new Float32Array(1)) threw TypeError: \"Argument 2 of BiquadFilterNode.getFrequencyResponse is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(1), new Float32Array(1), null) threw TypeError: \"Argument 3 of BiquadFilterNode.getFrequencyResponse is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X getFrequencyResponse(new Float32Array(10), new Float32Array(1), new Float32Array(20)) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X getFrequencyResponse(new Float32Array(10), new Float32Array(20), new Float32Array(1)) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [exceptions-getFrequencyData] 2 out of 5 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 5 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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: \"Value being assigned to AudioBufferSourceNode.buffer is not an object.\".",
          "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": "X source.buffer = new buffer did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "  source.buffer = null again did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X source.buffer = buffer again did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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] 2 out of 16 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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": "X Output of bandpass filter with frequency automation does not equal [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}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1]\t2.7207741141319275e-1\t2.7222275733947754e-1\t1.4534592628479004e-4\t5.3392276129043557e-4\t4.6454999999999998e-6\n\t[2]\t1.7092493176460266e-1\t1.7034837603569031e-1\t5.7655572891235352e-4\t3.3845683905525301e-3\t4.6454999999999998e-6\n\t[3]\t-4.7884583473205566e-1\t-4.8062619566917419e-1\t1.7803609371185303e-3\t3.7042528126036492e-3\t4.6454999999999998e-6\n\t[4]\t-2.8035214543342590e-1\t-2.7884376049041748e-1\t1.5083849430084229e-3\t5.4094269147552214e-3\t4.6454999999999998e-6\n\t[5]\t3.9142531156539917e-1\t3.9570569992065430e-1\t4.2803883552551270e-3\t1.0817100577811786e-2\t4.6454999999999998e-6\n\t...and 2072 more errors.\n\tMax AbsError of 2.1190106123685837e-1 at index of 1149.\n\t[1149]\t-1.1468840390443802e-1\t9.7212657332420349e-2\t2.1190106123685837e-1\t2.1797682220768748e+0\t4.6454999999999998e-6\n\tMax RelError of 9.6699462879811648e+1 at index of 1000.\n\t[1000]\t-1.7538917064666748e-1\t-1.7951907357200980e-3\t1.7359397991094738e-1\t9.6699462879811648e+1\t4.6454999999999998e-6\n",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [automate-freq] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [automate-q] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Output of bandpass filter with Q automation does not equal [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}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1]\t1.4311081729829311e-2\t1.3114781118929386e-2\t1.1963006108999252e-3\t9.1217733643547391e-2\t9.8348000000000007e-7\n\t[2]\t5.3999401628971100e-2\t4.7823384404182434e-2\t6.1760172247886658e-3\t1.2914220316554043e-1\t9.8348000000000007e-7\n\t[3]\t1.1236446350812912e-1\t9.7652934491634369e-2\t1.4711529016494751e-2\t1.5065117185756505e-1\t9.8348000000000007e-7\n\t[4]\t1.8244987726211548e-1\t1.5657125413417816e-1\t2.5878623127937317e-2\t1.6528336105527966e-1\t9.8348000000000007e-7\n\t[5]\t2.5735962390899658e-1\t2.1899054944515228e-1\t3.8369074463844299e-2\t1.7520881408379727e-1\t9.8348000000000007e-7\n\t...and 3994 more errors.\n\tMax AbsError of 4.8764730989933014e-1 at index of 123.\n\t[123]\t5.8356797695159912e-1\t9.5920667052268982e-2\t4.8764730989933014e-1\t5.0838607036959189e+0\t9.8348000000000007e-7\n\tMax RelError of 1.3733935694848860e+5 at index of 106.\n\t[106]\t-4.0824136137962341e-1\t-2.9724792511842679e-6\t4.0823838890037223e-1\t1.3733935694848860e+5\t9.8348000000000007e-7\n",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [automate-q] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [automate-gain] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Output of lowshelf filter with gain automation does not equal [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}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1]\t4.7863015532493591e-1\t4.7813567519187927e-1\t4.9448013305664063e-4\t1.0341837238106155e-3\t2.7657000000000000e-5\n\t[2]\t1.5550640821456909e+0\t1.5511385202407837e+0\t3.9255619049072266e-3\t2.5307616655009381e-3\t2.7657000000000000e-5\n\t[3]\t3.0560569763183594e+0\t3.0428154468536377e+0\t1.3241529464721680e-2\t4.3517359813635154e-3\t2.7657000000000000e-5\n\t[4]\t4.6794834136962891e+0\t4.6494402885437012e+0\t3.0043125152587891e-2\t6.4616649076265492e-3\t2.7657000000000000e-5\n\t[5]\t6.2022128105163574e+0\t6.1480998992919922e+0\t5.4112911224365234e-2\t8.8015666808857178e-3\t2.7657000000000000e-5\n\t...and 2048 more errors.\n\tMax AbsError of 2.4090213775634766e+0 at index of 120.\n\t[120]\t9.9098815917968750e+0\t7.5008602142333984e+0\t2.4090213775634766e+0\t3.2116601413157825e-1\t2.7657000000000000e-5\n\tMax RelError of 1.0632292419525375e+2 at index of 1000.\n\t[1000]\t2.2968197241425514e-2\t-2.1807405573781580e-4\t2.3186271297163330e-2\t1.0632292419525375e+2\t2.7657000000000000e-5\n",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [automate-gain] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [automate-detune] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Output of bandpass filter with detune automation does not equal [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}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[4]\t1.3306002074386925e-4\t1.0000937618315220e-4\t3.3050644560717046e-5\t3.3047545962280317e-1\t3.1470999999999997e-5\n\t[7]\t6.9791625719517469e-5\t1.0075401633002912e-6\t6.8784085556217178e-5\t6.8269323707065467e+1\t3.1470999999999997e-5\n\t[8]\t4.8867485020309687e-4\t4.4361935579217970e-4\t4.5055494410917163e-5\t1.0156340976254449e-1\t3.1470999999999997e-5\n\t[10]\t7.0790149038657546e-4\t6.5815937705338001e-4\t4.9742113333195448e-5\t7.5577610936569728e-2\t3.1470999999999997e-5\n\t[11]\t-4.4212661123310681e-6\t-1.1537729005794972e-4\t1.1095602394561865e-4\t9.6167992756537768e-1\t3.1470999999999997e-5\n\t...and 1126 more errors.\n\tMax AbsError of 1.0178004354238510e+0 at index of 1015.\n\t[1015]\t-1.4570061862468719e-1\t8.7209981679916382e-1\t1.0178004354238510e+0\t1.1670687412358907e+0\t3.1470999999999997e-5\n\tMax RelError of Infinity at index of 1087.\n\t[1087]\t1.0017648339271545e-1\t0.0000000000000000e+0\t1.0017648339271545e-1\tInfinity\t3.1470999999999997e-5\n",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [automate-detune] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [automate-all] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Output of peaking filter with automation of all parameters does not equal [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}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[697]\t-8.9100652933120728e-1\t-8.9659482240676880e-1\t5.5882930755615234e-3\t6.2327965050708450e-3\t6.2907000000000002e-4\n\t[698]\t-3.0901700258255005e-1\t-3.0482962727546692e-1\t4.1873753070831299e-3\t1.3736772716318364e-2\t6.2907000000000002e-4\n\t[699]\t9.8768836259841919e-1\t1.0072603225708008e+0\t1.9571959972381592e-2\t1.9430885475989618e-2\t6.2907000000000002e-4\n\t[700]\t-5.5879793522430055e-14\t-3.7726949900388718e-2\t3.7726949900332839e-2\t9.9999999999851885e-1\t6.2907000000000002e-4\n\t[701]\t-9.8768836259841919e-1\t-9.7246229648590088e-1\t1.5226066112518311e-2\t1.5657230277759220e-2\t6.2907000000000002e-4\n\t...and 3290 more errors.\n\tMax AbsError of 1.0000780582427979e+1 at index of 2030.\n\t[2030]\t1.2776083946228027e+0\t1.1278388977050781e+1\t1.0000780582427979e+1\t8.8672066575975750e-1\t6.2907000000000002e-4\n\tMax RelError of 7.2626681742283040e+1 at index of 898.\n\t[898]\t-2.0910589396953583e-1\t-2.8400830924510956e-3\t2.0626581087708473e-1\t7.2626681742283040e+1\t6.2907000000000002e-4\n",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [automate-all] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [modulation] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X Output of bandpass filter with sinusoidal modulation of bandpass center frequency does not equal [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {\"absoluteThreshold\":0.000039787,\"relativeThreshold\":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1]\t1.7610176000744104e-3\t0.0000000000000000e+0\t1.7610176000744104e-3\tInfinity\t3.9786999999999997e-5\n\t[2]\t6.9368327967822552e-3\t0.0000000000000000e+0\t6.9368327967822552e-3\tInfinity\t3.9786999999999997e-5\n\t[3]\t1.5246707014739513e-2\t0.0000000000000000e+0\t1.5246707014739513e-2\tInfinity\t3.9786999999999997e-5\n\t[4]\t2.6283653452992439e-2\t0.0000000000000000e+0\t2.6283653452992439e-2\tInfinity\t3.9786999999999997e-5\n\t[5]\t3.9528924971818924e-2\t0.0000000000000000e+0\t3.9528924971818924e-2\tInfinity\t3.9786999999999997e-5\n\t...and 3993 more errors.\n\tMax AbsError of 9.7427284717559814e-1 at index of 3596.\n\t[3596]\t-9.7427284717559814e-1\t0.0000000000000000e+0\t9.7427284717559814e-1\tInfinity\t3.9786999999999997e-5\n\tMax RelError of Infinity at index of 1.\n",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [modulation] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 6 out of 6 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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": "X Pulse 75 boundary expected to be equal to the array [49613,50053] but differs in 1 places:\n\tIndex\tActual\t\t\tExpected\n\t[1]\t5.0054000000000000e+4\t5.0053000000000000e+4",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X Number of grains out of 100 that ended at the wrong time is not equal to 0. Got 1.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Test timing of noteGrainOn] 2 out of 105 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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.33869555592536926,0.6372646689414978,0.8604192137718201,0.9817960858345032,0.9870710372924805,0.8756494522094727,0.6607334017753601,0.367756724357605,0.03137582167983055,-0.3086302578449249,-0.6120638251304626,-0.843061089515686,-0.9743307828903198,-0.9903786182403564,-0.8893360495567322...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  GainNode: Output of a-rate GainNode is identical to the array [0,0.33869555592536926,0.6372646689414978,0.8604192137718201,0.9817960858345032,0.9870710372924805,0.8756494522094727,0.6607334017753601,0.367756724357605,0.03137582167983055,-0.3086302578449249,-0.6120638251304626,-0.843061089515686,-0.9743307828903198,-0.9903786182403564,-0.8893360495567322...].",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X GainNode: Difference between a-rate and k-rate GainNode should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Test k-rate GainNode] 1 out of 8 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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 1 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 1 at offset 2645 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 2 at offset 2648 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 3 at offset 5291 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 4 at offset 6218 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 5 at offset 7937 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 6 at offset 7939 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 7 at offset 10573 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 8 at offset 10588 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 9 at offset 13228 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 10 at offset 14350 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 11 at offset 15872 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 12 at offset 16727 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 13 at offset 18520 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 14 at offset 18523 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 15 at offset 21151 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 16 at offset 21169 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 17 at offset 23812 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 18 at offset 23815 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 19 at offset 26456 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 20 at offset 26461 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 21 at offset 29094 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 22 at offset 29107 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 31753 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 25 at offset 34394 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 26 at offset 34399 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 27 at offset 37043 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 28 at offset 37045 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 29 at offset 39689 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 30 at offset 39692 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 31 at offset 42335 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 32 at offset 42340 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 33 at offset 44975 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 34 at offset 44983 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 35 at offset 47626 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 36 at offset 47632 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 37 at offset 50124 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 38 at offset 50767 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 39 at offset 52917 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 40 at offset 53339 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 41 at offset 55565 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 42 at offset 55856 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 43 at offset 58211 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 44 at offset 58731 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 45 at offset 60856 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 46 at offset 61532 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 47 at offset 63503 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 48 at offset 63760 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 49 at offset 66148 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 50 at offset 66153 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 51 at offset 68788 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 52 at offset 69223 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 53 at offset 71434 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 54 at offset 72119 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 55 at offset 74087 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 56 at offset 74091 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 57 at offset 76733 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 58 at offset 77843 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 59 at offset 79375 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 60 at offset 79995 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 61 at offset 82022 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 62 at offset 83337 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 63 at offset 84669 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 64 at offset 85802 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 65 at offset 87313 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 66 at offset 87319 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 67 at offset 89963 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 68 at offset 89966 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 69 at offset 92602 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 70 at offset 92629 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 71 at offset 95255 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 72 at offset 96356 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 73 at offset 97862 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 74 at offset 99092 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 75 at offset 100533 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 76 at offset 101524 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 77 at offset 103168 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 78 at offset 103213 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 79 at offset 105839 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 80 at offset 105885 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 81 at offset 108463 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 82 at offset 108491 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 83 at offset 111089 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 84 at offset 112320 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 85 at offset 113761 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 86 at offset 113790 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 87 at offset 116422 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 88 at offset 116451 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 89 at offset 118856 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 90 at offset 119132 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 91 at offset 121711 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 92 at offset 121720 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 93 at offset 124336 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 94 at offset 125034 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 95 at offset 126659 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 96 at offset 127632 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 97 at offset 129220 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 98 at offset 130184 is less than or equal to 0.00001222.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Max error for test 99 at offset 132121 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-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: \"Not enough arguments to BaseAudioContext.createIIRFilter.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter(new Float32Array(1)) threw TypeError: \"Not enough arguments to BaseAudioContext.createIIRFilter.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter(null, null) threw TypeError: \"Argument 1 of BaseAudioContext.createIIRFilter can't be converted to a sequence.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([], []) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1], []) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([], [1]) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1], new Float32Array(21)) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1], new Float32Array(2)) threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter(new Float32Array(10), [1]) threw InvalidStateError: \"An attempt was made to use an object that is not, or is no longer, usable\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1], [1, NaN, Infinity]) threw TypeError: \"Element of argument 2 of BaseAudioContext.createIIRFilter is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1, NaN, Infinity], [1]) threw TypeError: \"Element of argument 1 of BaseAudioContext.createIIRFilter is not a finite floating-point value.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createIIRFilter([1, 'abc', []], [1]) threw TypeError: \"Element of argument 1 of BaseAudioContext.createIIRFilter is not a finite floating-point value.\".",
          "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: \"Argument 1 of IIRFilterNode.getFrequencyResponse is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(1), null, new Float32Array(1)) threw TypeError: \"Argument 2 of IIRFilterNode.getFrequencyResponse is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  getFrequencyResponse(new Float32Array(1), new Float32Array(1), null) threw TypeError: \"Argument 3 of IIRFilterNode.getFrequencyResponse is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X getFrequencyResponse(new Float32Array(10), new Float32Array(1), new Float32Array(20)) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X getFrequencyResponse(new Float32Array(10), new Float32Array(20), new Float32Array(1)) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [exceptions-getFrequencyData] 2 out of 5 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 1 out of 5 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": []
    },
    {
      "test": "/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "\n      Test if MediaElementAudioSourceNode works for cross-origin redirects with\n      \"no-cors\" request mode.\n    ",
          "status": "FAIL",
          "message": "TypeError: context.audioWorklet is undefined"
        }
      ]
    },
    {
      "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: \"Not enough arguments to DelayNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(1) threw TypeError: \"Argument 1 of DelayNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new DelayNode(c, {channelCount: 99}) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"'channelCountMode' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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: \"'channelInterpretation' member of AudioNodeOptions 'foobar' is not a valid value for enumeration 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/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: \"The refDistance value passed to PannerNode must not be negative.\".",
          "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: \"The refDistance value passed to PannerNode must not be negative.\".",
          "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: \"The maxDistance value passed to PannerNode must be positive.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new PannerNode(c, {maxDistance: 0}) threw RangeError: \"The maxDistance value passed to PannerNode must be positive.\".",
          "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: \"The maxDistance value passed to PannerNode must be positive.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.maxDistance = 0 threw RangeError: \"The maxDistance value passed to PannerNode must be positive.\".",
          "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.295012891292572,0.675191342830658,-0.3281824290752411,-0.5979354977607727,-0.03646343573927879,0.06110522150993347,0.6431357860565186,0.22387216985225677,-0.6992175579071045,-0.2357022911310196,0.00031174527248367667,0.3577147424221039,0.6349031329154968,-0.4236578047275543,-0.5443311929702759...].",
          "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.295012891292572,0.675191342830658,-0.3281824290752411,-0.5979354977607727,-0.03646343573927879,0.06110522150993347,0.6431357860565186,0.22387216985225677,-0.6992175579071045,-0.2357022911310196,0.00031174527248367667,0.3577147424221039,0.6349031329154968,-0.4236578047275543,-0.5443311929702759...].",
          "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.295012891292572,0.675191342830658,-0.3281824290752411,-0.5979354977607727,-0.03646343573927879,0.06110522150993347,0.6431357860565186,0.22387216985225677,-0.6992175579071045,-0.2357022911310196,0.00031174527248367667,0.3577147424221039,0.6349031329154968,-0.4236578047275543,-0.5443311929702759...].",
          "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.295012891292572,0.675191342830658,-0.3281824290752411,-0.5979354977607727,-0.03646343573927879,0.06110522150993347,0.6431357860565186,0.22387216985225677,-0.6992175579071045,-0.2357022911310196,0.00031174527248367667,0.3577147424221039,0.6349031329154968,-0.4236578047275543,-0.5443311929702759...].",
          "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.295012891292572,0.675191342830658,-0.3281824290752411,-0.5979354977607727,-0.03646343573927879,0.06110522150993347,0.6431357860565186,0.22387216985225677,-0.6992175579071045,-0.2357022911310196,0.00031174527248367667,0.3577147424221039,0.6349031329154968,-0.4236578047275543,-0.5443311929702759...].",
          "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.295012891292572,0.675191342830658,-0.3281824290752411,-0.5979354977607727,-0.03646343573927879,0.06110522150993347,0.6431357860565186,0.22387216985225677,-0.6992175579071045,-0.2357022911310196,0.00031174527248367667,0.3577147424221039,0.6349031329154968,-0.4236578047275543,-0.5443311929702759...].",
          "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.147506445646286,0.337595671415329,-0.16409121453762054,-0.29896774888038635,-0.018231717869639397,0.030552610754966736,0.3215678930282593,0.11193608492612839,-0.34960877895355225,-0.1178511455655098,0.00015587263624183834,0.17885737121105194,0.3174515664577484,-0.21182890236377716,-0.27216559648513794...].",
          "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.147506445646286,0.337595671415329,-0.16409121453762054,-0.29896774888038635,-0.018231717869639397,0.030552610754966736,0.3215678930282593,0.11193608492612839,-0.34960877895355225,-0.1178511455655098,0.00015587263624183834,0.17885737121105194,0.3174515664577484,-0.21182890236377716,-0.27216559648513794...].",
          "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.002035782439634204,0.004659262951463461,-0.0022646738216280937,-0.004126146901398897,-0.0002516216190997511,0.00042166607454419136,0.004438058473169804,0.0015448647318407893,-0.004825059324502945,-0.0016265002777799964,0.000002151246690118569,0.00246846629306674,0.004381247796118259,-0.002923516556620598,-0.0037562421057373285...].",
          "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.00002565217982919421,0.000058709738368634135,-0.000028536362151498906,-0.00005199213046580553,-0.0000031705958463135175,0.000005313266683515394,0.00005592242087004706,0.00001946629890881013,-0.00006079888407839462,-0.00002049496106337756,2.7107105893264816e-8,0.00003110427860519849,0.00005520656850421801,-0.000036838209780398756,-0.00004733109017251991...].",
          "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.01319337822496891,0.03019547648727894,-0.014676764607429504,-0.026740489527583122,-0.0016306944889947772,0.0027327085845172405,0.028761908411979675,0.010011868551373482,-0.03126996010541916,-0.01054092776030302,0.000013941673387307674,0.015997489914298058,0.028393732383847237,-0.018946554511785507,-0.024343231692910194...].",
          "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.001177696161903441,0.00269537465646863,-0.0013101095100864768,-0.0023869681172072887,-0.00014556261885445565,0.0002439330128254369,0.002567408373579383,0.000893701275344938,-0.002791287610307336,-0.0009409273043274879,0.000001244492068508407,0.0014280029572546482,0.0025345433969050646,-0.0016912487335503101,-0.002172978827729821...].",
          "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-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-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-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: \"The start time for an AudioParam method must be non-negative.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Calling exponentialRampToValueAtTime() with a zero target value threw RangeError: \"The value passed to exponentialRampToValueAtTime must be positive.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  The gain value of the first gain node is equal to 1.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X The gain value of the second gain node is not equal to 0.5. Got 1.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [invalid-operation] 1 out of 4 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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: 1 out of 3 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "\n      Test onprocessorerror handler in AudioWorkletNode\n    ",
          "status": "FAIL",
          "message": "TypeError: context.audioWorklet is undefined"
        }
      ]
    },
    {
      "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: \"Operation is not supported\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 6 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 7 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 8 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 9 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 10 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 11 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 12 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 13 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 14 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 15 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 16 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 17 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 18 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 19 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 20 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 21 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 22 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 23 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 24 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 25 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 26 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 27 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 28 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 29 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 30 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 31 channels threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  ConvolverNode with buffer of 32 channels threw NotSupportedError: \"Operation is not supported\".",
          "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-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-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: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  createChannelSplitter(33) threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "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-analysernode-interface/test-analysernode.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Test AnalyserNode API",
          "status": "FAIL",
          "message": "assert_equals: analyser node has 2 input channels by default expected 2 but got 1"
        },
        {
          "name": "Test AnalyserNode's ctor API",
          "status": "FAIL",
          "message": "assert_equals: analyser node has 2 input channels by default expected 2 but got 1"
        }
      ]
    },
    {
      "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.channelCountMode = \"explicit\" did not throw an exception.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  panner.channelCountMode = \"max\" threw NotSupportedError: \"Operation is not supported\".",
          "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-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "\n      Test sampleRate in AudioWorkletGlobalScope\n    ",
          "status": "FAIL",
          "message": "TypeError: context.audioWorklet is undefined"
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-analysernode-interface/test-analyser-scale.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Test AnalyserNode when the input is scaled",
          "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-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-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-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-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: \"Not enough arguments to AudioBufferSourceNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBufferSourceNode(1) threw TypeError: \"Argument 1 of AudioBufferSourceNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBufferSourceNode(context, 42) threw TypeError: \"Argument 2 of AudioBufferSourceNode.constructor can't be converted to a dictionary.\".",
          "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-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-biquadfilternode-interface/biquad-allpass.html",
      "status": "TIMEOUT",
      "message": null,
      "subtests": []
    },
    {
      "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": "X k-rate detune: Difference between a-rate and k-rate outputs should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Oscillator k-rate detune] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "> [Oscillator k-rate frequency] ",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X k-rate frequency: Difference between a-rate and k-rate outputs should have contain at least one value different from 0.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [Oscillator k-rate frequency] 1 out of 1 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 out of 2 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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-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-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-mediaelementaudiosourcenode-interface/cors-check.https.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "\n      Test if MediaElementAudioSourceNode works for cross-origin redirects with\n      \"cors\" request mode.\n    ",
          "status": "FAIL",
          "message": "TypeError: context.audioWorklet is undefined"
        }
      ]
    },
    {
      "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-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: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 0 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 1 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 2 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 3 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 4 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 5 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 8 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 9 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 16 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 17 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 65536 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 65537 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 131072 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  Setting fftSize to 131073 threw IndexSizeError: \"Index or size is negative or greater than the allowed amount\".",
          "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-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: \"Not enough arguments to ChannelMergerNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(1) threw TypeError: \"Argument 1 of ChannelMergerNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ChannelMergerNode(context, 42) threw TypeError: \"Value can't be converted to a dictionary.\".",
          "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": "X new ChannelMergerNode(c, {channelCount: 2}} did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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": "X new ChannelMergerNode(c, {channelCountMode: \"max\"}) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X new ChannelMergerNode(c, {channelCountMode: \"clamped-max\"}) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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: \"'channelInterpretation' member of AudioNodeOptions 'foobar' is not a valid value for enumeration ChannelInterpretation.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  node.channelInterpretation after invalid setter is equal to discrete.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "< [test AudioNodeOptions] 3 out of 13 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "X new ChannelMergerNode(c, {\"channelCount\":3}) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "X new ChannelMergerNode(c, {\"channelCountMode\":\"max\"}) did not throw an exception.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "< [constructor options] 2 out of 7 assertions were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        },
        {
          "name": "# AUDIT TASK RUNNER FINISHED: 2 out of 5 tasks were failed.",
          "status": "FAIL",
          "message": "assert_true: expected true got false"
        }
      ]
    },
    {
      "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: \"Not enough arguments to ConstantSourceNode.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConstantSourceNode(1) threw TypeError: \"Argument 1 of ConstantSourceNode.constructor is not an object.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new ConstantSourceNode(context, 42) threw TypeError: \"Argument 2 of ConstantSourceNode.constructor can't be converted to a dictionary.\".",
          "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-audioworklet-interface/baseaudiocontext-audioworklet.https.html",
      "status": "ERROR",
      "message": "ReferenceError: AudioWorklet is not defined",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [Test if AudioWorklet exists] ",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/webaudio/the-audio-api/the-pannernode-interface/pannernode-basic.html",
      "status": "ERROR",
      "message": "TypeError: context.listener.positionX is undefined",
      "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
        }
      ]
    },
    {
      "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-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-audioparam-interface/audioparam-large-endtime.html",
      "status": "ERROR",
      "message": "RangeError: The end time for an AudioParam method must be non-negative.",
      "subtests": [
        {
          "name": "# AUDIT TASK RUNNER STARTED.",
          "status": "PASS",
          "message": null
        },
        {
          "name": "> [linearRamp] ",
          "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: \"Not enough arguments to AudioBuffer.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer(1) threw TypeError: \"Argument 1 of AudioBuffer.constructor can't be converted to a dictionary.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer(Date, 42) threw TypeError: \"Missing required 'sampleRate' member of AudioBufferOptions.\".",
          "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: \"Missing required 'length' member of AudioBufferOptions.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer = new AudioBuffer({length: 1}) threw TypeError: \"Missing required 'sampleRate' member of AudioBufferOptions.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer = new AudioBuffer({sampleRate: 48000}) threw TypeError: \"Missing required 'length' member of AudioBufferOptions.\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  buffer = new AudioBuffer({numberOfChannels: 1} threw TypeError: \"Missing required 'length' member of AudioBufferOptions.\".",
          "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: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer({\"numberOfChannels\":99,\"length\":0,\"sampleRate\":16000}) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer({\"numberOfChannels\":1,\"length\":0,\"sampleRate\":16000}) threw NotSupportedError: \"Operation is not supported\".",
          "status": "PASS",
          "message": null
        },
        {
          "name": "  new AudioBuffer({\"numberOfChannels\":1,\"length\":1,\"sampleRate\":100}) threw NotSupportedError: \"Operation is not supported\".",
          "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: \"Index or size is negative or greater than the allowed amount\".",
          "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
        }
      ]
    }
  ]
}