Test files without 2 passes: 174; Subtests without 2 passes: 5746; Failure level: 5746/5746 (100.00%)
| Test | Ch73 |
|---|---|
| /webaudio/the-audio-api/the-audioparam-interface/audioparam-setTargetAtTime.html (106/106, 100.00%, 1.84% of total) | OK |
| Max error for test 0 at offset 642 is less than or equal to 0.00065683. | PASS |
| Max error for test 1 at offset 1783 is less than or equal to 0.00065683. | PASS |
| Max error for test 10 at offset 13565 is less than or equal to 0.00065683. | PASS |
| Max error for test 11 at offset 15329 is less than or equal to 0.00065683. | PASS |
| Max error for test 12 at offset 16518 is less than or equal to 0.00065683. | PASS |
| Max error for test 13 at offset 17659 is less than or equal to 0.00065683. | PASS |
| Max error for test 14 at offset 19785 is less than or equal to 0.00065683. | PASS |
| Max error for test 15 at offset 21022 is less than or equal to 0.00065683. | PASS |
| Max error for test 16 at offset 21810 is less than or equal to 0.00065683. | PASS |
| Max error for test 17 at offset 22951 is less than or equal to 0.00065683. | PASS |
| Max error for test 18 at offset 24599 is less than or equal to 0.00065683. | PASS |
| Max error for test 19 at offset 26225 is less than or equal to 0.00065683. | PASS |
| Max error for test 2 at offset 2981 is less than or equal to 0.00065683. | PASS |
| Max error for test 20 at offset 27102 is less than or equal to 0.00065683. | PASS |
| Max error for test 21 at offset 28243 is less than or equal to 0.00065683. | PASS |
| Max error for test 22 at offset 29441 is less than or equal to 0.00065683. | PASS |
| Max error for test 23 at offset 31745 is less than or equal to 0.00065683. | PASS |
| Max error for test 24 at offset 32213 is less than or equal to 0.00065683. | PASS |
| Max error for test 25 at offset 33535 is less than or equal to 0.00065683. | PASS |
| Max error for test 26 at offset 34817 is less than or equal to 0.00065683. | PASS |
| Max error for test 27 at offset 36809 is less than or equal to 0.00065683. | PASS |
| Max error for test 28 at offset 37762 is less than or equal to 0.00065683. | PASS |
| Max error for test 29 at offset 39136 is less than or equal to 0.00065683. | PASS |
| Max error for test 3 at offset 4381 is less than or equal to 0.00065683. | PASS |
| Max error for test 30 at offset 41009 is less than or equal to 0.00065683. | PASS |
| Max error for test 31 at offset 41425 is less than or equal to 0.00065683. | PASS |
| Max error for test 32 at offset 42978 is less than or equal to 0.00065683. | PASS |
| Max error for test 33 at offset 44119 is less than or equal to 0.00065683. | PASS |
| Max error for test 34 at offset 46245 is less than or equal to 0.00065683. | PASS |
| Max error for test 35 at offset 46887 is less than or equal to 0.00065683. | PASS |
| Max error for test 36 at offset 48270 is less than or equal to 0.00065683. | PASS |
| Max error for test 37 at offset 50194 is less than or equal to 0.00065683. | PASS |
| Max error for test 38 at offset 50398 is less than or equal to 0.00065683. | PASS |
| Max error for test 39 at offset 52259 is less than or equal to 0.00065683. | PASS |
| Max error for test 4 at offset 5934 is less than or equal to 0.00065683. | PASS |
| Max error for test 40 at offset 54012 is less than or equal to 0.00065683. | PASS |
| Max error for test 41 at offset 55327 is less than or equal to 0.00065683. | PASS |
| Max error for test 42 at offset 56019 is less than or equal to 0.00065683. | PASS |
| Max error for test 43 at offset 57551 is less than or equal to 0.00065683. | PASS |
| Max error for test 44 at offset 59304 is less than or equal to 0.00065683. | PASS |
| Max error for test 45 at offset 60619 is less than or equal to 0.00065683. | PASS |
| Max error for test 46 at offset 61330 is less than or equal to 0.00065683. | PASS |
| Max error for test 47 at offset 62953 is less than or equal to 0.00065683. | PASS |
| Max error for test 48 at offset 64596 is less than or equal to 0.00065683. | PASS |
| Max error for test 49 at offset 65911 is less than or equal to 0.00065683. | PASS |
| Max error for test 5 at offset 7075 is less than or equal to 0.00065683. | PASS |
| Max error for test 50 at offset 66603 is less than or equal to 0.00065683. | PASS |
| Max error for test 51 at offset 68554 is less than or equal to 0.00065683. | PASS |
| Max error for test 52 at offset 69888 is less than or equal to 0.00065683. | PASS |
| Max error for test 53 at offset 71203 is less than or equal to 0.00065683. | PASS |
| Max error for test 54 at offset 71891 is less than or equal to 0.00065683. | PASS |
| Max error for test 55 at offset 73781 is less than or equal to 0.00065683. | PASS |
| Max error for test 56 at offset 75180 is less than or equal to 0.00065683. | PASS |
| Max error for test 57 at offset 76654 is less than or equal to 0.00065683. | PASS |
| Max error for test 58 at offset 77187 is less than or equal to 0.00065683. | PASS |
| Max error for test 59 at offset 79141 is less than or equal to 0.00065683. | PASS |
| Max error for test 6 at offset 8355 is less than or equal to 0.00065683. | PASS |
| Max error for test 60 at offset 80472 is less than or equal to 0.00065683. | PASS |
| Max error for test 61 at offset 81787 is less than or equal to 0.00065683. | PASS |
| Max error for test 62 at offset 82475 is less than or equal to 0.00065683. | PASS |
| Max error for test 63 at offset 84121 is less than or equal to 0.00065683. | PASS |
| Max error for test 64 at offset 85764 is less than or equal to 0.00065683. | PASS |
| Max error for test 65 at offset 87079 is less than or equal to 0.00065683. | PASS |
| Max error for test 66 at offset 87767 is less than or equal to 0.00065683. | PASS |
| Max error for test 67 at offset 89067 is less than or equal to 0.00065683. | PASS |
| Max error for test 68 at offset 91056 is less than or equal to 0.00065683. | PASS |
| Max error for test 69 at offset 92351 is less than or equal to 0.00065683. | PASS |
| Max error for test 7 at offset 9673 is less than or equal to 0.00065683. | PASS |
| Max error for test 70 at offset 93503 is less than or equal to 0.00065683. | PASS |
| Max error for test 71 at offset 94619 is less than or equal to 0.00065683. | PASS |
| Max error for test 72 at offset 95918 is less than or equal to 0.00065683. | PASS |
| Max error for test 73 at offset 97645 is less than or equal to 0.00065683. | PASS |
| Max error for test 74 at offset 98795 is less than or equal to 0.00065683. | PASS |
| Max error for test 75 at offset 99911 is less than or equal to 0.00065683. | PASS |
| Max error for test 76 at offset 101210 is less than or equal to 0.00065683. | PASS |
| Max error for test 77 at offset 102935 is less than or equal to 0.00065683. | PASS |
| Max error for test 78 at offset 104087 is less than or equal to 0.00065683. | PASS |
| Max error for test 79 at offset 104790 is less than or equal to 0.00065683. | PASS |
| Max error for test 8 at offset 11226 is less than or equal to 0.00065683. | PASS |
| Max error for test 80 at offset 106482 is less than or equal to 0.00065683. | PASS |
| Max error for test 81 at offset 108229 is less than or equal to 0.00065683. | PASS |
| Max error for test 82 at offset 109379 is less than or equal to 0.00065683. | PASS |
| Max error for test 83 at offset 110271 is less than or equal to 0.00065683. | PASS |
| Max error for test 84 at offset 111794 is less than or equal to 0.00065683. | PASS |
| Max error for test 85 at offset 113113 is less than or equal to 0.00065683. | PASS |
| Max error for test 86 at offset 114187 is less than or equal to 0.00065683. | PASS |
| Max error for test 87 at offset 116025 is less than or equal to 0.00065683. | PASS |
| Max error for test 88 at offset 117494 is less than or equal to 0.00065683. | PASS |
| Max error for test 89 at offset 118405 is less than or equal to 0.00065683. | PASS |
| Max error for test 9 at offset 12367 is less than or equal to 0.00065683. | PASS |
| Max error for test 90 at offset 120038 is less than or equal to 0.00065683. | PASS |
| Max error for test 91 at offset 121317 is less than or equal to 0.00065683. | PASS |
| Max error for test 92 at offset 122786 is less than or equal to 0.00065683. | PASS |
| Max error for test 93 at offset 123850 is less than or equal to 0.00065683. | PASS |
| Max error for test 94 at offset 124619 is less than or equal to 0.00065683. | PASS |
| Max error for test 95 at offset 127003 is less than or equal to 0.00065683. | PASS |
| Max error for test 96 at offset 127853 is less than or equal to 0.00065683. | PASS |
| Max error for test 97 at offset 129137 is less than or equal to 0.00065683. | PASS |
| Max error for test 98 at offset 130555 is less than or equal to 0.00065683. | PASS |
| Max error for test 99 at offset 132006 is less than or equal to 0.00065683. | PASS |
| Number of failed tests with an acceptable relative tolerance of 0.00065683 is equal to 0. | PASS |
| Number of tests started and ended at the correct time is equal to 100. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 102 assertions) | PASS |
| > [test] AudioParam setTargetAtTime() functionality. | PASS |
| /webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-getFrequencyResponse.html (16/16, 100.00%, 0.28% of total) | OK |
| 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}. | PASS |
| 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}. | PASS |
| 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}. | PASS |
| 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}. | PASS |
| Magnitude response at frequency -1 is NaN. | PASS |
| Magnitude response at frequency 24001 is NaN. | PASS |
| Phase response at frequency -1 is NaN. | PASS |
| Phase response at frequency 24001 is NaN. | PASS |
| # AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [1-pole IIR] All assertions passed. (total 2 assertions) | PASS |
| < [compare IIR and biquad] All assertions passed. (total 2 assertions) | PASS |
| < [getFrequencyResponse] All assertions passed. (total 4 assertions) | PASS |
| > [1-pole IIR] | PASS |
| > [compare IIR and biquad] | PASS |
| > [getFrequencyResponse] Test out-of-bounds frequency values | PASS |
| /webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html (25/25, 100.00%, 0.44% of total) | OK |
| 1: Channel 0 equals [0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585,-0.834891676902771...] with an element-wise tolerance of {"absoluteThreshold":3.5763e-7,"relativeThreshold":0}. | PASS |
| 1: Channel 1 equals [0,0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585...] with an element-wise tolerance of {"absoluteThreshold":4.7684e-7,"relativeThreshold":0}. | PASS |
| 2: Channel 0 equals [0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585,-0.834891676902771...] with an element-wise tolerance of {"absoluteThreshold":3.5763e-7,"relativeThreshold":0}. | PASS |
| 2: Channel 1 equals [0,0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585...] with an element-wise tolerance of {"absoluteThreshold":4.7684e-7,"relativeThreshold":0}. | PASS |
| 3: Channel 0 equals [0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585,-0.834891676902771...] with an element-wise tolerance of {"absoluteThreshold":3.5763e-7,"relativeThreshold":0}. | PASS |
| 3: Channel 1 equals [0,0,0,0.9947003126144409,0.7705774307250977,0.9109300374984741,0.770668089389801,0.9842367768287659,0.32022905349731445,-0.9348858594894409,-0.8055058121681213,-0.8837442398071289,-0.8007677793502808,-0.9286617636680603,-0.6026888489723206,0.7909697890281677...] with an element-wise tolerance of {"absoluteThreshold":3.5763e-7,"relativeThreshold":0}. | PASS |
| 4: Channel 0 equals [0,0,0.9734255075454712,0.8085748553276062,0.8596614599227905,0.8377395868301392,0.18206258118152618,-0.06961169838905334,0.03773331642150879,-0.007562130689620972,-0.018085837364196777,0.029709070920944214,-0.021690011024475098,-0.0055168867111206055,0.05647382140159607,-0.4439384937286377...] with an element-wise tolerance of {"absoluteThreshold":3.5763e-7,"relativeThreshold":0}. | PASS |
| 4: Channel 1 equals [0,0,0,0.971980094909668,0.8048999309539795,0.8850500583648682,0.18059250712394714,0.02772340178489685,-0.2852807343006134,-0.7788605690002441,-0.0375840961933136,-0.008258610963821411,0.07240849733352661,-0.33466458320617676,-0.7563189268112183,-0.020491480827331543...] with an element-wise tolerance of {"absoluteThreshold":2.9803e-7,"relativeThreshold":0}. | PASS |
| 5.1: Channel 0 equals [0,0,2.3021068572998047,2.0779097080230713,1.5364117622375488,0.8359494805335999,-0.21231389045715332,-0.00529266893863678,0.836210310459137,1.0198438167572021,0.3261905908584595,-0.6783384084701538,-1.057640790939331,-0.5491994619369507,0.2516633868217468,-0.10923552513122559...] with an element-wise tolerance of {"absoluteThreshold":7.1526e-7,"relativeThreshold":0}. | PASS |
| 5.1: Channel 1 equals [0,0,0,2.407027244567871,1.8516432046890259,1.2457610368728638,0.5805021524429321,0.36253032088279724,0.16488611698150635,-0.7450209259986877,-1.5345406532287598,-1.9043262004852295,-0.7297847867012024,0.01058971881866455,0.7125816345214844,1.7535796165466309...] with an element-wise tolerance of {"absoluteThreshold":7.1526e-7,"relativeThreshold":0}. | PASS |
| new AudioBuffer({numberOfChannels: 2, length: 4, sampleRate: 8192}) did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [1-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [2-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [3-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [4-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [5.1-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| > [1-channel input] produces 2-channel output | PASS |
| > [2-channel input] produces 2-channel output | PASS |
| > [3-channel input] 3->2 downmix producing 2-channel output | PASS |
| > [4-channel input] 4->2 downmix producing 2-channel output | PASS |
| > [5.1-channel input] 5.1->2 downmix producing 2-channel output | PASS |
| > [initialize] Convolver response with one channel | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html (5/5, 100.00%, 0.09% of total) | OK |
| Biquad output has no glitch above the threshold of 0.012968. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 1 assertions) | PASS |
| > [test] Biquad Tail Output | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiosource-time-limits.html (8/8, 100.00%, 0.14% of total) | OK |
| Output from AudioBufferSource.stop(1e+300) contains only the constant 1. | PASS |
| Peak amplitude from oscillator.stop(1e+300) is greater than 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [buffersource: huge stop time] All assertions passed. (total 1 assertions) | PASS |
| < [oscillator: huge stop time] All assertions passed. (total 1 assertions) | PASS |
| > [buffersource: huge stop time] | PASS |
| > [oscillator: huge stop time] | PASS |
| /webaudio/the-audio-api/the-stereopanner-interface/stereopannernode-basic.html (13/13, 100.00%, 0.23% of total) | OK |
| panner.channelCount = 1 did not throw an exception. | PASS |
| panner.channelCount = 3 threw NotSupportedError: "Failed to set the 'channelCount' property on 'AudioNode': The channelCount provided (3) is outside the range [1, 2].". | PASS |
| panner.channelCountMode = "explicit" did not throw an exception. | PASS |
| panner.channelCountMode = "max" threw NotSupportedError: "Failed to set the 'channelCountMode' property on 'AudioNode': StereoPanner: 'max' is not allowed". | PASS |
| panner.numberOfInputs is equal to 1. | PASS |
| panner.numberOfOutputs is equal to 1. | PASS |
| panner.pan.defaultValue is equal to 0. | PASS |
| panner.pan.value = 1.0 did not throw an exception. | PASS |
| panner.pan.value is equal to 1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 9 assertions) | PASS |
| > [test] Attributes and basic functionality of StereoPannerNode | PASS |
| /webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html (25/25, 100.00%, 0.44% of total) | OK |
| balanced baseLatency is greater than or equal to 0.01. | PASS |
| context = new AudioContext('latencyHint') threw TypeError: "Failed to construct 'AudioContext': parameter 1 ('contextOptions') is not an object.". | PASS |
| context = new AudioContext() did not throw an exception. | PASS |
| context = new AudioContext({'latencyHint': 'balanced'}) did not throw an exception. | PASS |
| context = new AudioContext({'latencyHint': 'foo'}) threw TypeError: "Failed to construct 'AudioContext': The provided value 'foo' is not a valid enum value of type AudioContextLatencyCategory.". | PASS |
| context = new AudioContext({'latencyHint': 'interactive'}) did not throw an exception. | PASS |
| context = new AudioContext({'latencyHint': 'playback'}) did not throw an exception. | PASS |
| context = new AudioContext({'latencyHint': interactiveLatency/2}) did not throw an exception. | PASS |
| context = new AudioContext({'latencyHint': validLatency}) did not throw an exception. | PASS |
| context.sampleRate (48000 Hz) is greater than 0. | PASS |
| creating two high latency contexts did not throw an exception. | PASS |
| default baseLatency is greater than 0. | PASS |
| double-constructor baseLatency inrange 1 is greater than or equal to 0.01. | PASS |
| double-constructor baseLatency inrange 2 is less than or equal to 0.02. | PASS |
| double-constructor baseLatency small is less than or equal to 0.01. | PASS |
| high latency context baseLatency is equal to 0.17. | PASS |
| high latency context baseLatency is greater than 0.01. | PASS |
| interactive baseLatency is equal to 0.01. | PASS |
| playback baseLatency is greater than or equal to 0.01. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test-audiocontextoptions-latencyHint-basic] All assertions passed. (total 9 assertions) | PASS |
| < [test-audiocontextoptions-latencyHint-double] All assertions passed. (total 10 assertions) | PASS |
| > [test-audiocontextoptions-latencyHint-basic] Test creating contexts with basic latencyHint types. | PASS |
| > [test-audiocontextoptions-latencyHint-double] Test creating contexts with explicit latencyHint values. | PASS |
| /webaudio/the-audio-api/the-gainnode-interface/gain.html (10/10, 100.00%, 0.17% of total) | OK |
| Left SNR (in dB) is greater than or equal to 148.69. | PASS |
| 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}. | PASS |
| Right SNR (in dB) is greater than or equal to 148.69. | PASS |
| 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}. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [create context] All assertions passed. (total 0 assertions) | PASS |
| < [test] All assertions passed. (total 4 assertions) | PASS |
| > [create context] Create context for test | PASS |
| > [test] GainNode functionality | PASS |
| /webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html (64/64, 100.00%, 1.11% of total) | OK |
| Connecting to a node from the different context threw InvalidAccessError: "Failed to execute 'connect' on 'AudioNode': cannot connect to a destination belonging to a different audio context.". | PASS |
| Connecting with an invalid output threw IndexSizeError: "Failed to execute 'connect' on 'AudioNode': output index (1) exceeds number of outputs (1).". | PASS |
| The output of chained connection of gain nodes contains only the constant 0.125. | PASS |
| The return value of AnalyserNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of AnalyserNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of AnalyserNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of AudioBufferSourceNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of AudioBufferSourceNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of AudioBufferSourceNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of BiquadFilterNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of BiquadFilterNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of BiquadFilterNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of ChannelMergerNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of ChannelMergerNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of ChannelMergerNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of ChannelSplitterNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of ChannelSplitterNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of ChannelSplitterNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of ConvolverNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of ConvolverNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of ConvolverNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of DelayNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of DelayNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of DelayNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of DynamicsCompressorNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of DynamicsCompressorNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of DynamicsCompressorNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of GainNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of GainNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of GainNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of MediaElementAudioSourceNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of MediaElementAudioSourceNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of MediaElementAudioSourceNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of MediaStreamAudioDestinationNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of MediaStreamAudioDestinationNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of MediaStreamAudioDestinationNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of MediaStreamAudioSourceNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of MediaStreamAudioSourceNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of MediaStreamAudioSourceNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of OscillatorNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of OscillatorNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of OscillatorNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of PannerNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of PannerNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of PannerNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of ScriptProcessorNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of ScriptProcessorNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of ScriptProcessorNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of StereoPannerNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of StereoPannerNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of StereoPannerNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| The return value of WaveShaperNode.connect(BiquadFilterNode, 0) matches the destination BiquadFilterNode is equal to true. | PASS |
| The return value of WaveShaperNode.connect(ChannelMergerNode, 0, 1) matches the destination ChannelMergerNode is equal to true. | PASS |
| The return value of WaveShaperNode.connect(GainNode) matches the destination GainNode is equal to true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [from-dictionary] All assertions passed. (total 42 assertions) | PASS |
| < [invalid-operation] All assertions passed. (total 2 assertions) | PASS |
| < [media-group] All assertions passed. (total 9 assertions) | PASS |
| < [verification] All assertions passed. (total 1 assertions) | PASS |
| > [from-dictionary] | PASS |
| > [invalid-operation] | PASS |
| > [media-group] | PASS |
| > [verification] | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/panner-distance-clamping.html (46/46, 100.00%, 0.80% of total) | OK |
| Model: exponential: Distance (0.01) is outside the range [1, 10000] is equal to true. | PASS |
| Model: exponential: Distance (2) is outside the range [10, 1000] is equal to true. | PASS |
| Model: exponential: Distance (21000) is outside the range [1, 10000] is equal to true. | PASS |
| Model: exponential: Distance (5000) is outside the range [10, 1000] is equal to true. | PASS |
| Model: inverse: Distance (0.01) is outside the range [1, 10000] is equal to true. | PASS |
| Model: inverse: Distance (2) is outside the range [10, 1000] is equal to true. | PASS |
| Model: inverse: Distance (23000) is outside the range [1, 10000] is equal to true. | PASS |
| Model: inverse: Distance (5000) is outside the range [10, 1000] is equal to true. | PASS |
| Model: linear: Distance (0.01) is outside the range [1, 10000] is equal to true. | PASS |
| Model: linear: Distance (2) is outside the range [10, 1000] is equal to true. | PASS |
| Model: linear: Distance (20000) is outside the range [1, 10000] is equal to true. | PASS |
| Model: linear: Distance (5000) is outside the range [10, 1000] is equal to true. | PASS |
| Test panner output {"distance":0.01,"distanceModel":"exponential"} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...]. | PASS |
| Test panner output {"distance":0.01,"distanceModel":"inverse"} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...]. | PASS |
| Test panner output {"distance":0.01,"distanceModel":"linear"} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...]. | PASS |
| Test panner output {"distance":2,"distanceModel":"exponential","maxDistance":1000,"refDistance":10} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...]. | PASS |
| Test panner output {"distance":2,"distanceModel":"inverse","maxDistance":1000,"refDistance":10} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...]. | PASS |
| Test panner output {"distance":2,"distanceModel":"linear","maxDistance":1000,"refDistance":10} is identical to the array [0,0.20702199637889862,0.4738079607486725,-0.23029837012290955,-0.41959449648857117,-0.025587808340787888,0.04287990927696228,0.4513133466243744,0.15709976851940155,-0.4906681180000305,-0.16540144383907318,0.00021876610117033124,0.25102248787879944,0.4455360770225525,-0.29729732871055603,-0.38197818398475647...]. | PASS |
| Test panner output {"distance":20000,"distanceModel":"linear"} is identical to the array [0,0.10351099818944931,0.23690398037433624,-0.11514918506145477,-0.20979724824428558,-0.012793904170393944,0.02143995463848114,0.2256566733121872,0.07854988425970078,-0.24533405900001526,-0.08270072191953659,0.00010938305058516562,0.12551124393939972,0.22276803851127625,-0.14864866435527802,-0.19098909199237823...]. | PASS |
| Test panner output {"distance":21000,"distanceModel":"exponential"} is identical to the array [0,0.0014285874785855412,0.0032695855479687452,-0.0015892097726464272,-0.002895476995036006,-0.0001765726483426988,0.0002958994882646948,0.0031143580563366413,0.0010840913746505976,-0.003385931719094515,-0.0011413784231990576,0.0000015096295555849792,0.001732219709083438,0.0030744909308850765,-0.002051546471193433,-0.002635899931192398...]. | PASS |
| Test panner output {"distance":23000,"distanceModel":"inverse"} is identical to the array [0,0.000018001130229094997,0.000041198902181349695,-0.000020025074263685383,-0.000036484892916632816,-0.000002224930085503729,0.0000037285258258634713,0.000039242931961780414,0.00001366025571769569,-0.00004266493851901032,-0.000014382108929567039,1.9022312613969916e-8,0.00002182709431508556,0.00003874058529618196,-0.00002585081892902963,-0.000033214051654795185...]. | PASS |
| Test panner output {"distance":5000,"distanceModel":"exponential","maxDistance":1000,"refDistance":10} is identical to the array [0,0.00925830565392971,0.021189337596297264,-0.0102992570027709,-0.018764836713671684,-0.0011443216353654861,0.001917647896334529,0.020183347165584564,0.007025715429335833,-0.0219433456659317,-0.007396977860480547,0.000009783518180483952,0.011226067319512367,0.019924979656934738,-0.013295541517436504,-0.017082585021853447...]. | PASS |
| Test panner output {"distance":5000,"distanceModel":"inverse","maxDistance":1000,"refDistance":10} is identical to the array [0,0.0008264351054094732,0.0018914489774033427,-0.000919354788493365,-0.0016750278882682323,-0.00010214693611487746,0.00017117727838922292,0.0018016500398516655,0.0006271447637118399,-0.0019587548449635506,-0.0006602851790376008,8.733177878639253e-7,0.0010020857444033027,0.0017785871168598533,-0.0011868156725540757,-0.0015248629497364163...]. | PASS |
| Test panner output {"distance":5000,"distanceModel":"linear","maxDistance":1000,"refDistance":10} is identical to the array [0,0.10351099818944931,0.23690398037433624,-0.11514918506145477,-0.20979724824428558,-0.012793904170393944,0.02143995463848114,0.2256566733121872,0.07854988425970078,-0.24533405900001526,-0.08270072191953659,0.00010938305058516562,0.12551124393939972,0.22276803851127625,-0.14864866435527802,-0.19098909199237823...]. | PASS |
| new PannerNode(c, {maxDistance: -1}) threw RangeError: "Failed to construct 'PannerNode': The maxDistance provided (-1) is less than the minimum bound (0).". | PASS |
| new PannerNode(c, {maxDistance: 0}) threw RangeError: "Failed to construct 'PannerNode': The maxDistance provided (0) is less than or equal to the minimum bound (0).". | PASS |
| new PannerNode(c, {maxDistance: 5e-324}) did not throw an exception. | PASS |
| new PannerNode(c, {refDistance: -1}) threw RangeError: "Failed to construct 'PannerNode': The refDistance provided (-1) is less than the minimum bound (0).". | PASS |
| new PannerNode(c, {refDistance: 0}) did not throw an exception. | PASS |
| new PannerNode(c, {refDistance: 5e-324}) did not throw an exception. | PASS |
| panner.maxDistance = -1 threw RangeError: "Failed to set the 'maxDistance' property on 'PannerNode': The maxDistance provided (-1) is less than the minimum bound (0).". | PASS |
| panner.maxDistance = 0 threw RangeError: "Failed to set the 'maxDistance' property on 'PannerNode': The maxDistance provided (0) is less than or equal to the minimum bound (0).". | PASS |
| panner.maxDistance = 5e-324 did not throw an exception. | PASS |
| panner.refDistance = -1 threw RangeError: "Failed to set the 'refDistance' property on 'PannerNode': The refDistance provided (-1) is less than the minimum bound (0).". | PASS |
| panner.refDistance = 0 did not throw an exception. | PASS |
| panner.refDistance = 5e-324 did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [max-distance-error] All assertions passed. (total 6 assertions) | PASS |
| < [max-distance] All assertions passed. (total 12 assertions) | PASS |
| < [min-distance] All assertions passed. (total 12 assertions) | PASS |
| < [ref-distance-error] All assertions passed. (total 6 assertions) | PASS |
| > [max-distance-error] | PASS |
| > [max-distance] | PASS |
| > [min-distance] | PASS |
| > [ref-distance-error] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/audioparam-method-chaining.html (19/19, 100.00%, 0.33% of total) | OK |
| Calling exponentialRampToValueAtTime() with a zero target value threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).". | PASS |
| Calling setValueAtTime() with a negative end time threw RangeError: "Failed to execute 'setValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1". | PASS |
| The gain value of the first gain node is equal to 1. | PASS |
| The gain value of the second gain node is equal to 0.5. | PASS |
| 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}. | PASS |
| The return value of AudioParam.cancelScheduledValues() matches the source AudioParam is equal to true. | PASS |
| The return value of AudioParam.exponentialRampToValueAtTime() matches the source AudioParam is equal to true. | PASS |
| The return value of AudioParam.linearRampToValueAtTime() matches the source AudioParam is equal to true. | PASS |
| The return value of AudioParam.setTargetAtTime() matches the source AudioParam is equal to true. | PASS |
| The return value of AudioParam.setValueAtTime() matches the source AudioParam is equal to true. | PASS |
| The return value of AudioParam.setValueCurveAtTime() matches the source AudioParam is equal to true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [from-dictionary] All assertions passed. (total 6 assertions) | PASS |
| < [invalid-operation] All assertions passed. (total 4 assertions) | PASS |
| < [verification] All assertions passed. (total 1 assertions) | PASS |
| > [from-dictionary] | PASS |
| > [invalid-operation] | PASS |
| > [verification] | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-construction.https.html (9/9, 100.00%, 0.16% of total) | OK |
| "dummyWorkletNode" is an instance of AudioWorkletNode is true. | PASS |
| Creating a node before loading a module should throw. threw InvalidStateError: "Failed to construct 'AudioWorkletNode': AudioWorkletNode cannot be created: AudioWorklet does not have a valid AudioWorkletGlobalScope. Load a script via audioWorklet.addModule() first.". | PASS |
| Unregistered name "foobar" must throw an exception. threw InvalidStateError: "Failed to construct 'AudioWorkletNode': AudioWorkletNode cannot be created: The node name 'foobar' is not defined in AudioWorkletGlobalScope.". | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [construction-after-module-loading] All assertions passed. (total 2 assertions) | PASS |
| < [construction-before-module-loading] All assertions passed. (total 1 assertions) | PASS |
| > [construction-after-module-loading] | PASS |
| > [construction-before-module-loading] | PASS |
| /webaudio/the-audio-api/the-analysernode-interface/ctor-analyser.html (70/70, 100.00%, 1.22% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new AnalyserNode() threw TypeError: "Failed to construct 'AnalyserNode': 1 argument required, but only 0 present.". | PASS |
| new AnalyserNode(1) threw TypeError: "Failed to construct 'AnalyserNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new AnalyserNode(c, {channelCount: 0}) threw NotSupportedError: "Failed to construct 'AnalyserNode': The channel count provided (0) is outside the range [1, 32].". | PASS |
| new AnalyserNode(c, {channelCount: 17}} did not throw an exception. | PASS |
| new AnalyserNode(c, {channelCount: 99}) threw NotSupportedError: "Failed to construct 'AnalyserNode': The channel count provided (99) is outside the range [1, 32].". | PASS |
| new AnalyserNode(c, {channelCountMode: "clamped-max"}) did not throw an exception. | PASS |
| new AnalyserNode(c, {channelCountMode: "explicit"}) did not throw an exception. | PASS |
| new AnalyserNode(c, {channelCountMode: "foobar"} threw TypeError: "Failed to construct 'AnalyserNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS |
| new AnalyserNode(c, {channelCountMode: "max"} did not throw an exception. | PASS |
| new AnalyserNode(c, {channelCountMode: "max"}) did not throw an exception. | PASS |
| new AnalyserNode(c, {channelInterpretation: "discrete"}) did not throw an exception. | PASS |
| new AnalyserNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Failed to construct 'AnalyserNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new AnalyserNode(c, {channelInterpretation: "speakers"}) did not throw an exception. | PASS |
| new AnalyserNode(context, 42) threw TypeError: "Failed to construct 'AnalyserNode': parameter 2 ('options') is not an object.". | PASS |
| node = new AnalyserNode(c, { fftSize: 33 }) threw IndexSizeError: "Failed to construct 'AnalyserNode': The value provided (33) is not a power of two.". | PASS |
| node = new AnalyserNode(c, { frequencyBinCount: 33 }) did not throw an exception. | PASS |
| node = new AnalyserNode(c, { maxDecibels: -500 }) threw IndexSizeError: "Failed to construct 'AnalyserNode': maxDecibels (-500) must be greater than or equal to minDecibels ( -100).". | PASS |
| node = new AnalyserNode(c, { minDecibels: -10 }) threw IndexSizeError: "Failed to construct 'AnalyserNode': maxDecibels (-30) must be greater than or equal to minDecibels ( -10).". | PASS |
| node = new AnalyserNode(c, { smoothingTimeConstant: 2 }) threw IndexSizeError: "Failed to construct 'AnalyserNode': The smoothing value provided (2) is outside the range [0, 1].". | PASS |
| node = new AnalyserNode(c, {"maxDecibels":-150,"minDecibels":-10}) threw IndexSizeError: "Failed to construct 'AnalyserNode': maxDecibels (-150) must be greater than or equal to minDecibels ( -10).". | PASS |
| node = new AnalyserNode(c, {"maxDecibels":-150,"minDecibels":-200}) did not throw an exception. | PASS |
| node = new AnalyserNode(c, {"maxDecibels":20,"minDecibels":-10}) did not throw an exception. | PASS |
| node = new AnalyserNode(c, {"minDecibels":-10,"maxDecibels":-150}) threw IndexSizeError: "Failed to construct 'AnalyserNode': maxDecibels (-150) must be greater than or equal to minDecibels ( -10).". | PASS |
| node = new AnalyserNode(c, {"minDecibels":-10,"maxDecibels":20}) did not throw an exception. | PASS |
| node = new AnalyserNode(c, {"minDecibels":-200,"maxDecibels":-150}) did not throw an exception. | PASS |
| node.channelCount is equal to 17. | PASS |
| node.channelCountMode after invalid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to clamped-max. | PASS |
| node.channelCountMode after valid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to max. | PASS |
| node.channelCountMode is equal to max. | PASS |
| node.channelInterpretation after invalid setter is equal to discrete. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node.frequencyBinCount is equal to 1024. | PASS |
| node0 = new AnalyserNode(context) did not throw an exception. | PASS |
| node0 instanceof AnalyserNode is equal to true. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.fftSize is equal to 2048. | PASS |
| node0.frequencyBinCount is equal to 1024. | PASS |
| node0.maxDecibels is equal to -30. | PASS |
| node0.minDecibels is equal to -100. | PASS |
| node0.numberOfInputs is equal to 1. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node0.smoothingTimeConstant is equal to 0.8. | PASS |
| node1 = new AnalyserNode(c, {"fftSize":32,"maxDecibels":1,"minDecibels":-13,"smoothingTimeConstant":0.125}) did not throw an exception. | PASS |
| node1 instanceof AnalyserNode is equal to true. | PASS |
| node1.fftSize is equal to 32. | PASS |
| node1.maxDecibels is equal to 1. | PASS |
| node1.minDecibels is equal to -13. | PASS |
| node1.smoothingTimeConstant is equal to 0.125. | PASS |
| # AUDIT TASK RUNNER FINISHED: 7 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [construct invalid options] All assertions passed. (total 6 assertions) | PASS |
| < [constructor with options] All assertions passed. (total 6 assertions) | PASS |
| < [default constructor] All assertions passed. (total 12 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [setting min/max] All assertions passed. (total 6 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 20 assertions) | PASS |
| > [construct invalid options] | PASS |
| > [constructor with options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [setting min/max] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html (56/56, 100.00%, 0.97% of total) | OK |
| 0: buffer = context.createBuffer(3, 16, context.sampleRate) did not throw an exception. | PASS |
| 0: buffer.copyToChannel(null, 0) threw TypeError: "Failed to execute 'copyToChannel' on 'AudioBuffer': parameter 1 is not of type 'Float32Array'.". | PASS |
| 1: buffer.copyFromChannel(null, 0) threw TypeError: "Failed to execute 'copyFromChannel' on 'AudioBuffer': parameter 1 is not of type 'Float32Array'.". | PASS |
| 1: buffer.copyToChannel(context, 0) threw TypeError: "Failed to execute 'copyToChannel' on 'AudioBuffer': parameter 1 is not of type 'Float32Array'.". | PASS |
| 2: buffer.copyFromChannel(context, 0) threw TypeError: "Failed to execute 'copyFromChannel' on 'AudioBuffer': parameter 1 is not of type 'Float32Array'.". | PASS |
| 2: buffer.copyToChannel(x, -1) threw IndexSizeError: "Failed to execute 'copyToChannel' on 'AudioBuffer': The channelNumber provided (-1) is outside the range [0, 2].". | PASS |
| 3: buffer.copyFromChannel(x, -1) threw IndexSizeError: "Failed to execute 'copyFromChannel' on 'AudioBuffer': The channelNumber provided (-1) is outside the range [0, 2].". | PASS |
| 3: buffer.copyToChannel(x, 3) threw IndexSizeError: "Failed to execute 'copyToChannel' on 'AudioBuffer': The channelNumber provided (3) is outside the range [0, 2].". | PASS |
| 4: buffer.copyFromChannel(x, 3) threw IndexSizeError: "Failed to execute 'copyFromChannel' on 'AudioBuffer': The channelNumber provided (3) is outside the range [0, 2].". | PASS |
| 4: buffer.copyToChannel(x, 0, -1) threw IndexSizeError: "Failed to execute 'copyToChannel' on 'AudioBuffer': The startInChannel provided (4294967295) is outside the range [0, 16).". | PASS |
| 5: buffer.copyFromChannel(x, 0, -1) threw IndexSizeError: "Failed to execute 'copyFromChannel' on 'AudioBuffer': The startInChannel provided (4294967295) is outside the range [0, 16).". | PASS |
| 5: buffer.copyToChannel(x, 0, 16) threw IndexSizeError: "Failed to execute 'copyToChannel' on 'AudioBuffer': The startInChannel provided (16) is outside the range [0, 16).". | PASS |
| 6: buffer.copyFromChannel(x, 0, 16) threw IndexSizeError: "Failed to execute 'copyFromChannel' on 'AudioBuffer': The startInChannel provided (16) is outside the range [0, 16).". | PASS |
| 6: buffer.copyToChannel(x, 3) threw IndexSizeError: "Failed to execute 'copyToChannel' on 'AudioBuffer': The channelNumber provided (3) is outside the range [0, 2].". | PASS |
| 7: buffer.copyFromChannel(x, 3) threw IndexSizeError: "Failed to execute 'copyFromChannel' on 'AudioBuffer': The channelNumber provided (3) is outside the range [0, 2].". | PASS |
| 7: buffer.copyToChannel(SharedArrayBuffer view, 0) threw TypeError: "Failed to execute 'copyToChannel' on 'AudioBuffer': The provided ArrayBufferView value must not be shared.". | PASS |
| 8: buffer.copyFromChannel(SharedArrayBuffer view, 0) threw TypeError: "Failed to execute 'copyFromChannel' on 'AudioBuffer': The provided ArrayBufferView value must not be shared.". | PASS |
| 8: buffer.copyToChannel(SharedArrayBuffer view, 0, 0) threw TypeError: "Failed to execute 'copyToChannel' on 'AudioBuffer': The provided ArrayBufferView value must not be shared.". | PASS |
| 9: buffer.copyFromChannel(SharedArrayBuffer view, 0, 0) threw TypeError: "Failed to execute 'copyFromChannel' on 'AudioBuffer': The provided ArrayBufferView value must not be shared.". | PASS |
| AudioBuffer.prototype.copyFromChannel does exist. | PASS |
| AudioBuffer.prototype.copyToChannel does exist. | PASS |
| Initialized values contains only the constant -1. | PASS |
| buffer = createConstantBuffer(context, 16, [-1,-1,-1]) did not throw an exception. | PASS |
| buffer.copyFromChannel(dst26, 0) is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...]. | PASS |
| buffer.copyFromChannel(dst26, 1) is identical to the array [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17...]. | PASS |
| buffer.copyFromChannel(dst26, 2) is identical to the array [3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18...]. | PASS |
| buffer.copyFromChannel(dst8, 0) is identical to the array [1,2,3,4,5,6,7,8]. | PASS |
| buffer.copyFromChannel(dst8, 0, 1) is identical to the array [2,3,4,5,6,7,8,9]. | PASS |
| buffer.copyFromChannel(dst8, 0, 11) is identical to the array [12,13,14,15,16,-1,-1,-1]. | PASS |
| buffer.copyFromChannel(dst8, 1) is identical to the array [2,3,4,5,6,7,8,9]. | PASS |
| buffer.copyFromChannel(dst8, 1, 1) is identical to the array [3,4,5,6,7,8,9,10]. | PASS |
| buffer.copyFromChannel(dst8, 1, 11) is identical to the array [13,14,15,16,17,-1,-1,-1]. | PASS |
| buffer.copyFromChannel(dst8, 2) is identical to the array [3,4,5,6,7,8,9,10]. | PASS |
| buffer.copyFromChannel(dst8, 2, 1) is identical to the array [4,5,6,7,8,9,10,11]. | PASS |
| buffer.copyFromChannel(dst8, 2, 11) is identical to the array [14,15,16,17,18,-1,-1,-1]. | PASS |
| buffer.copyToChannel(src, 0) is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...]. | PASS |
| buffer.copyToChannel(src, 1) is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...]. | PASS |
| buffer.copyToChannel(src, 2) is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...]. | PASS |
| buffer.copyToChannel(src10, 0) is identical to the array [1,2,3,4,5,6,7,8,9,10,-1,-1,-1,-1,-1,-1...]. | PASS |
| buffer.copyToChannel(src10, 0, 5) is identical to the array [-1,-1,-1,-1,-1,1,2,3,4,5,6,7,8,9,10,-1...]. | PASS |
| buffer.copyToChannel(src10, 1) is identical to the array [1,2,3,4,5,6,7,8,9,10,-1,-1,-1,-1,-1,-1...]. | PASS |
| buffer.copyToChannel(src10, 1, 5) is identical to the array [-1,-1,-1,-1,-1,1,2,3,4,5,6,7,8,9,10,-1...]. | PASS |
| buffer.copyToChannel(src10, 2) is identical to the array [1,2,3,4,5,6,7,8,9,10,-1,-1,-1,-1,-1,-1...]. | PASS |
| buffer.copyToChannel(src10, 2, 5) is identical to the array [-1,-1,-1,-1,-1,1,2,3,4,5,6,7,8,9,10,-1...]. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [copyFrom-exceptions] All assertions passed. (total 11 assertions) | PASS |
| < [copyFrom-validate] All assertions passed. (total 12 assertions) | PASS |
| < [copyTo-exceptions] All assertions passed. (total 10 assertions) | PASS |
| < [copyTo-validate] All assertions passed. (total 10 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| > [copyFrom-exceptions] | PASS |
| > [copyFrom-validate] | PASS |
| > [copyTo-exceptions] | PASS |
| > [copyTo-validate] | PASS |
| > [initialize] | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html (17/17, 100.00%, 0.30% of total) | OK |
| Actual and expected results contained only finite values is true. | PASS |
| Magnitude response at frequency -1 is NaN. | PASS |
| Magnitude response at frequency 22051 is NaN. | PASS |
| Max error (-119.17761387118809 dB) of magnitude response at frequency 1128 Hz is less than or equal to -119.17759642805565. | PASS |
| Max error (0.0000037083940022340564 deg) in phase response at frequency 864 Hz is less than or equal to 0.0000037084120332047404. | PASS |
| Number of non-finite values in expected phase response is equal to 0. | PASS |
| Number of non-finite values in magnitude response is equal to 0. | PASS |
| Number of non-finite values in the expected magnitude response is equal to 0. | PASS |
| Number of non-finte values in phase response is equal to 0. | PASS |
| Phase response at frequency -1 is NaN. | PASS |
| Phase response at frequency 22051 is NaN. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [getFrequencyResponse] All assertions passed. (total 4 assertions) | PASS |
| < [test] All assertions passed. (total 7 assertions) | PASS |
| > [getFrequencyResponse] Test out-of-bounds frequency values | PASS |
| > [test] Biquad frequency response | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiosource-onended.html (14/14, 100.00%, 0.24% of total) | OK |
| AudioBufferSource.onended called when ended set directly is equal to true. | PASS |
| AudioBufferSource.onended called when using addEventListener is equal to true. | PASS |
| Oscillator.onended called when ended set directly is equal to true. | PASS |
| Oscillator.onended called when using addEventListener is equal to true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [absn-add-listener] All assertions passed. (total 1 assertions) | PASS |
| < [absn-set-onended] All assertions passed. (total 1 assertions) | PASS |
| < [osc-add-listener] All assertions passed. (total 1 assertions) | PASS |
| < [osc-set-onended] All assertions passed. (total 1 assertions) | PASS |
| > [absn-add-listener] | PASS |
| > [absn-set-onended] | PASS |
| > [osc-add-listener] | PASS |
| > [osc-set-onended] | PASS |
| /webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-reuse.html (1/1, 100.00%, 0.02% of total) | OK |
| AudioBuffer can be reused between AudioBufferSourceNodes | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/k-rate-biquad.html (55/55, 100.00%, 0.96% of total) | OK |
| All k-rate params: Difference between a-rate and k-rate BiquadFilterNode is not constantly 0 (contains 7999 different values). | PASS |
| All k-rate params: Output of a-rate BiquadFilterNode is identical to the array [0,0.005671397782862186,0.031749188899993896,0.09148305654525757,0.1881098747253418,0.3150883913040161,0.45771944522857666,0.5958530902862549,0.7072707414627075,0.7712685465812683,0.7719634175300598,0.7008947134017944,0.5585950016975403,0.3549392521381378,0.10823862254619598,-0.15679840743541718...]. | PASS |
| All k-rate params: Output of k-rate BiquadFilterNode is identical to the array [0,0.005672732833772898,0.031761396676301956,0.09152887761592865,0.18822026252746582,0.3152909576892853,0.45802366733551025,0.596236526966095,0.7076704502105713,0.7715811133384705,0.7720549702644348,0.7006209492683411,0.5578281879425049,0.3535984456539154,0.10631734877824783,-0.15921233594417572...]. | PASS |
| All k-rate params: Setting Q.automationRate to "k-rate" is equal to k-rate. | PASS |
| All k-rate params: Setting detune.automationRate to "k-rate" is equal to k-rate. | PASS |
| All k-rate params: Setting frequency.automationRate to "k-rate" is equal to k-rate. | PASS |
| All k-rate params: Setting gain.automationRate to "k-rate" is equal to k-rate. | PASS |
| All k-rate params: a-rate node:frequency.linearRampToValueAtTime(0,1) did not throw an exception. | PASS |
| All k-rate params: a-rate node:frequency.setValueAtTime(350,0) did not throw an exception. | PASS |
| All k-rate params: k-rate node: frequency.linearRampToValueAtTime(0,1) did not throw an exception. | PASS |
| All k-rate params: k-rate node: frequency.setValueAtTime(350,0) did not throw an exception. | PASS |
| k-rate Q: Difference between a-rate and k-rate BiquadFilterNode is not constantly 0 (contains 7999 different values). | PASS |
| k-rate Q: Output of a-rate BiquadFilterNode is identical to the array [0,0.3906204402446747,0.8277556896209717,1.236454725265503,1.5436350107192993,1.6886674165725708,1.6321626901626587,1.361878514289856,0.8950015306472778,0.27653712034225464,-0.42596039175987244,-1.1306581497192383,-1.7516529560089111,-2.2098560333251953,-2.443169593811035,-2.414689540863037...]. | PASS |
| k-rate Q: Output of k-rate BiquadFilterNode is identical to the array [0,0.3906746506690979,0.8280417323112488,1.2371118068695068,1.5446836948394775,1.6899588108062744,1.6333708763122559,1.3625402450561523,0.8945979475975037,0.27460309863090515,-0.429720014333725,-1.1362684965133667,-1.758806824684143,-2.2179055213928223,-2.4511797428131104,-2.4215500354766846...]. | PASS |
| k-rate Q: Setting Q.automationRate to "k-rate" is equal to k-rate. | PASS |
| k-rate Q: a-rate node:Q.linearRampToValueAtTime(10,1) did not throw an exception. | PASS |
| k-rate Q: a-rate node:Q.setValueAtTime(1,0) did not throw an exception. | PASS |
| k-rate Q: k-rate node: Q.linearRampToValueAtTime(10,1) did not throw an exception. | PASS |
| k-rate Q: k-rate node: Q.setValueAtTime(1,0) did not throw an exception. | PASS |
| k-rate detune: Difference between a-rate and k-rate BiquadFilterNode is not constantly 0 (contains 7999 different values). | PASS |
| k-rate detune: Output of a-rate BiquadFilterNode is identical to the array [0,0.390678733587265,0.8280619978904724,1.237152099609375,1.544729232788086,1.6899703741073608,1.6332865953445435,1.3622863292694092,0.8941071629524231,0.2738376557826996,-0.43074584007263184,-1.1374714374542236,-1.7600282430648804,-2.2189197540283203,-2.4517171382904053,-2.421334981918335...]. | PASS |
| k-rate detune: Output of k-rate BiquadFilterNode is identical to the array [0,0.3906746506690979,0.8280417323112488,1.2371118068695068,1.5446836948394775,1.6899588108062744,1.6333708763122559,1.3625402450561523,0.8945979475975037,0.27460309863090515,-0.429720014333725,-1.1362684965133667,-1.758806824684143,-2.2179055213928223,-2.4511797428131104,-2.4215500354766846...]. | PASS |
| k-rate detune: Setting detune.automationRate to "k-rate" is equal to k-rate. | PASS |
| k-rate detune: a-rate node:detune.linearRampToValueAtTime(1200,1) did not throw an exception. | PASS |
| k-rate detune: a-rate node:detune.setValueAtTime(0,0) did not throw an exception. | PASS |
| k-rate detune: k-rate node: detune.linearRampToValueAtTime(1200,1) did not throw an exception. | PASS |
| k-rate detune: k-rate node: detune.setValueAtTime(0,0) did not throw an exception. | PASS |
| k-rate frequency: Difference between a-rate and k-rate BiquadFilterNode is not constantly 0 (contains 7999 different values). | PASS |
| k-rate frequency: Output of a-rate BiquadFilterNode is identical to the array [0,0.3906687796115875,0.8280125260353088,1.237053632736206,1.5446178913116455,1.6899420022964478,1.633492350578308,1.3629063367843628,0.8953056931495667,0.2757072150707245,-0.4282398223876953,-1.1345319747924805,-1.7570421695709229,-2.216438055038452,-2.4503977298736572,-2.4218509197235107...]. | PASS |
| k-rate frequency: Output of k-rate BiquadFilterNode is identical to the array [0,0.3906746506690979,0.8280417323112488,1.2371118068695068,1.5446836948394775,1.6899588108062744,1.6333708763122559,1.3625402450561523,0.8945979475975037,0.27460309863090515,-0.429720014333725,-1.1362684965133667,-1.758806824684143,-2.2179055213928223,-2.4511797428131104,-2.4215500354766846...]. | PASS |
| k-rate frequency: Setting frequency.automationRate to "k-rate" is equal to k-rate. | PASS |
| k-rate frequency: a-rate node:frequency.linearRampToValueAtTime(0,1) did not throw an exception. | PASS |
| k-rate frequency: a-rate node:frequency.setValueAtTime(350,0) did not throw an exception. | PASS |
| k-rate frequency: k-rate node: frequency.linearRampToValueAtTime(0,1) did not throw an exception. | PASS |
| k-rate frequency: k-rate node: frequency.setValueAtTime(350,0) did not throw an exception. | PASS |
| k-rate gain: Difference between a-rate and k-rate BiquadFilterNode is not constantly 0 (contains 7999 different values). | PASS |
| k-rate gain: Output of a-rate BiquadFilterNode is identical to the array [0,0.390667200088501,0.8279994130134583,1.237004280090332,1.5444908142089844,1.6896843910217285,1.633053183555603,1.3622560501098633,0.8944581151008606,0.2747383117675781,-0.42918142676353455,-1.1352277994155884,-1.7572228908538818,-2.215818166732788,-2.448723077774048,-2.4189529418945312...]. | PASS |
| k-rate gain: Output of k-rate BiquadFilterNode is identical to the array [0,0.3906746506690979,0.8280417323112488,1.2371118068695068,1.5446836948394775,1.6899588108062744,1.6333708763122559,1.3625402450561523,0.8945979475975037,0.27460309863090515,-0.429720014333725,-1.1362684965133667,-1.758806824684143,-2.2179055213928223,-2.4511797428131104,-2.4215500354766846...]. | PASS |
| k-rate gain: Setting gain.automationRate to "k-rate" is equal to k-rate. | PASS |
| k-rate gain: a-rate node:gain.linearRampToValueAtTime(0,1) did not throw an exception. | PASS |
| k-rate gain: a-rate node:gain.setValueAtTime(10,0) did not throw an exception. | PASS |
| k-rate gain: k-rate node: gain.linearRampToValueAtTime(0,1) did not throw an exception. | PASS |
| k-rate gain: k-rate node: gain.setValueAtTime(10,0) did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Biquad k-rate AudioParams (all)] All assertions passed. (total 11 assertions) | PASS |
| < [Biquad k-rate Q] All assertions passed. (total 8 assertions) | PASS |
| < [Biquad k-rate detune] All assertions passed. (total 8 assertions) | PASS |
| < [Biquad k-rate frequency] All assertions passed. (total 8 assertions) | PASS |
| < [Biquad k-rate gain] All assertions passed. (total 8 assertions) | PASS |
| > [Biquad k-rate AudioParams (all)] | PASS |
| > [Biquad k-rate Q] | PASS |
| > [Biquad k-rate detune] | PASS |
| > [Biquad k-rate frequency] | PASS |
| > [Biquad k-rate gain] | PASS |
| /webaudio/the-audio-api/the-stereopanner-interface/stereopannernode-panning.html (14/14, 100.00%, 0.24% of total) | OK |
| Mono: Left channel error magnitude is less than or equal to 0.0000013. | PASS |
| Mono: Number of impulse at the wrong offset is equal to 0. | PASS |
| Mono: Number of impulses found is equal to 100. | PASS |
| Mono: Right channel error magnitude is less than or equal to 0.0000013. | PASS |
| Stereo: Left channel error magnitude is less than or equal to 0.0000013. | PASS |
| Stereo: Number of impulse at the wrong offset is equal to 0. | PASS |
| Stereo: Number of impulses found is equal to 100. | PASS |
| Stereo: Right channel error magnitude is less than or equal to 0.0000013. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [mono-test] All assertions passed. (total 4 assertions) | PASS |
| < [stereo-test] All assertions passed. (total 4 assertions) | PASS |
| > [mono-test] | PASS |
| > [stereo-test] | PASS |
| /webaudio/the-audio-api/the-analysernode-interface/test-analyser-minimum.html (1/1, 100.00%, 0.02% of total) | TIMEOUT |
| /webaudio/the-audio-api/the-analysernode-interface/test-analyser-minimum.html | TIMEOUT |
| /webaudio/the-audio-api/the-audioparam-interface/k-rate-stereo-panner.html (12/12, 100.00%, 0.21% of total) | OK |
| StereoPannerNode: Difference between a-rate and k-rate StereoPannerNode is not constantly 0 (contains 7960 different values). | PASS |
| StereoPannerNode: Output of a-rate StereoPannerNode is identical to the array [0,0.23952363431453705,0.45072638988494873,0.6086363196372986,0.6945812106132507,0.6984005570411682,0.619641900062561,0.4676174521446228,0.2603030800819397,0.02221057564020157,-0.218507781624794,-0.43339067697525024,-0.5970293879508972,-0.6900765299797058,-0.7015308141708374,-0.6300357580184937...]. | PASS |
| StereoPannerNode: Output of k-rate StereoPannerNode is identical to the array [0,0.23952363431453705,0.4507264196872711,0.6086363196372986,0.6945812106132507,0.698400616645813,0.6196419596672058,0.4676174819469452,0.2603031098842621,0.022210577502846718,-0.2185078114271164,-0.433390736579895,-0.5970295071601868,-0.6900766491889954,-0.7015309929847717,-0.630035936832428...]. | PASS |
| StereoPannerNode: Setting pan.automationRate to "k-rate" is equal to k-rate. | PASS |
| StereoPannerNode: a-rate node:pan.linearRampToValueAtTime(0.5,1) did not throw an exception. | PASS |
| StereoPannerNode: a-rate node:pan.setValueAtTime(0,0) did not throw an exception. | PASS |
| StereoPannerNode: k-rate node: pan.linearRampToValueAtTime(0.5,1) did not throw an exception. | PASS |
| StereoPannerNode: k-rate node: pan.setValueAtTime(0,0) did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Test k-rate StereoPannerNode] All assertions passed. (total 8 assertions) | PASS |
| > [Test k-rate StereoPannerNode] | PASS |
| /webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html (57/57, 100.00%, 0.99% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new DynamicsCompressorNode() threw TypeError: "Failed to construct 'DynamicsCompressorNode': 1 argument required, but only 0 present.". | PASS |
| new DynamicsCompressorNode(1) threw TypeError: "Failed to construct 'DynamicsCompressorNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new DynamicsCompressorNode(c, {"channelCount":0}) threw NotSupportedError: "Failed to construct 'DynamicsCompressorNode': The channelCount provided (0) is outside the range [1, 2].". | PASS |
| new DynamicsCompressorNode(c, {"channelCount":1}) did not throw an exception. | PASS |
| new DynamicsCompressorNode(c, {"channelCount":2}) did not throw an exception. | PASS |
| new DynamicsCompressorNode(c, {"channelCount":3}) threw NotSupportedError: "Failed to construct 'DynamicsCompressorNode': The channelCount provided (3) is outside the range [1, 2].". | PASS |
| new DynamicsCompressorNode(c, {"channelCount":99}) threw NotSupportedError: "Failed to construct 'DynamicsCompressorNode': The channelCount provided (99) is outside the range [1, 2].". | PASS |
| new DynamicsCompressorNode(c, {"channelCountMode":"clamped-max"}) did not throw an exception. | PASS |
| new DynamicsCompressorNode(c, {"channelCountMode":"explicit"}) did not throw an exception. | PASS |
| new DynamicsCompressorNode(c, {"channelCountMode":"foobar"}) threw TypeError: "Failed to construct 'DynamicsCompressorNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS |
| new DynamicsCompressorNode(c, {"channelCountMode":"max"}) threw NotSupportedError: "Failed to construct 'DynamicsCompressorNode': The provided value 'max' is not an allowed value for ChannelCountMode". | PASS |
| new DynamicsCompressorNode(c, {"channelInterpretation":"discrete"}) did not throw an exception. | PASS |
| new DynamicsCompressorNode(c, {"channelInterpretation":"foobar"}) threw TypeError: "Failed to construct 'DynamicsCompressorNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new DynamicsCompressorNode(c, {"channelInterpretation":"speakers"}) did not throw an exception. | PASS |
| new DynamicsCompressorNode(context, 42) threw TypeError: "Failed to construct 'DynamicsCompressorNode': parameter 2 ('options') is not an object.". | PASS |
| node.channelCount is equal to 1. | PASS |
| node.channelCount is equal to 2. | PASS |
| node.channelCountMode is equal to clamped-max. | PASS |
| node.channelCountMode is equal to explicit. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node0 = new DynamicsCompressorNode(context) did not throw an exception. | PASS |
| node0 instanceof DynamicsCompressorNode is equal to true. | PASS |
| node0.attack.value is equal to 0.003000000026077032. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to clamped-max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.knee.value is equal to 30. | PASS |
| node0.numberOfInputs is equal to 1. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node0.ratio.value is equal to 12. | PASS |
| node0.reduction is equal to 0. | PASS |
| node0.release.value is equal to 0.25. | PASS |
| node0.threshold.value is equal to -24. | PASS |
| node1 = new DynamicsCompressorNode(c, {"threshold":-33,"knee":15,"ratio":7,"attack":0.625,"release":0.125}) did not throw an exception. | PASS |
| node1 instanceof DynamicsCompressorNode is equal to true. | PASS |
| node1.attack.value is equal to 0.625. | PASS |
| node1.channelCount is equal to 2. | PASS |
| node1.channelCountMode is equal to clamped-max. | PASS |
| node1.channelInterpretation is equal to speakers. | PASS |
| node1.knee.value is equal to 15. | PASS |
| node1.ratio.value is equal to 7. | PASS |
| node1.release.value is equal to 0.125. | PASS |
| node1.threshold.value is equal to -33. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [constructor with options] All assertions passed. (total 10 assertions) | PASS |
| < [default constructor] All assertions passed. (total 13 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 18 assertions) | PASS |
| > [constructor with options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-disconnect.html (7/7, 100.00%, 0.12% of total) | OK |
| Channel #0 contains only the constant 1. | PASS |
| Channel #1 contains all the expected values in the correct order: [1,0]. | PASS |
| The index of first zero in the channel #1 is equal to 11008. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [silent-disconnect] All assertions passed. (total 3 assertions) | PASS |
| > [silent-disconnect] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https.html (11/11, 100.00%, 0.19% of total) | OK |
| k-rate output [0: 127] contains only the constant 0. | PASS |
| k-rate output [128: 255] contains only the constant 2.5. | PASS |
| k-rate output [256: 383] contains only the constant 5. | PASS |
| k-rate output [384: 511] contains only the constant 7.5. | PASS |
| Construction of AudioWorklet resolved correctly. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [AudioWorklet k-rate AudioParam] All assertions passed. (total 4 assertions) | PASS |
| < [Create Test Worklet] All assertions passed. (total 1 assertions) | PASS |
| > [AudioWorklet k-rate AudioParam] | PASS |
| > [Create Test Worklet] | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html (41/41, 100.00%, 0.71% of total) | OK |
| At time 0, Q is equal to 5. | PASS |
| At time 0, detune is equal to 33. | PASS |
| At time 0, frequency is equal to 350. | PASS |
| At time 0, gain is equal to 1. | PASS |
| At time 0.015625, Q is equal to 10. | PASS |
| At time 0.015625, detune is equal to 1000. | PASS |
| At time 0.015625, frequency is equal to 800. | PASS |
| At time 0.015625, gain is equal to 5. | PASS |
| At time 0.0390625, detune is equal to -400. | PASS |
| At time 0.046875, gain is equal to -0.3. | PASS |
| At time 0.0546875, frequency is equal to 200. | PASS |
| At time 0.0625, Q is equal to -10. | PASS |
| Modulation: At time 0, frequency is equal to 350. | PASS |
| Modulation: At time 0.015625, frequency is equal to 10. | PASS |
| Modulation: At time 0.0625, frequency is equal to -10. | PASS |
| Modulation: Output from frequency setter equals [0,0.16927161812782288,0.3364819586277008,0.4967540204524994,0.6454269886016846,0.7780186533927917,0.8904149532318115,0.9789472222328186,1.0408990383148193,1.0747627019882202,1.0793930292129517,1.0543287992477417,1.0000861883163452,0.9177318811416626,0.8092702627182007,0.6773739457130432...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. | PASS |
| Modulation: Output from frequency setter matches setValueAtTime output is true. | PASS |
| Output from Q setter equals [0,0.1679382622241974,0.3311063051223755,0.4848693013191223,0.6248595714569092,0.7471005916595459,0.8481203317642212,0.9250491857528687,0.9757021069526672,0.9986401796340942,0.9932119250297546,0.9595714807510376,0.898674488067627,0.812250554561615,0.7027547359466553,0.5732971429824829...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. | PASS |
| Output from Q setter matches setValueAtTime output is true. | PASS |
| Output from detune setter equals [0,0.1731615662574768,0.3515752851963043,0.5295105576515198,0.7010408043861389,0.8602387309074402,1.0013757944107056,1.1191174983978271,1.2087109088897705,1.266155481338501,1.2883533239364624,1.2732324600219727,1.2198400497436523,1.128400444984436,1.0003379583358765,0.8382604718208313...] with an element-wise tolerance of {"absoluteThreshold":0.0000040532,"relativeThreshold":0}. | PASS |
| Output from detune setter matches setValueAtTime output is true. | PASS |
| Output from frequency setter equals [0,0.17418302595615387,0.3552042841911316,0.5364867448806763,0.7114058136940002,0.873506486415863,1.0167137384414673,1.1355278491973877,1.2252023220062256,1.2818958759307861,1.3027966022491455,1.2862135171890259,1.2316334247589111,1.13974130153656,1.0124047994613647,0.8526217341423035...] with an element-wise tolerance of {"absoluteThreshold":0.0000030399,"relativeThreshold":0}. | PASS |
| Output from frequency setter matches setValueAtTime output is true. | PASS |
| Output from gain setter equals [0,0.1691557615995407,0.3357764184474945,0.4948003888130188,0.6413880586624146,0.7710639238357544,0.8798481225967407,0.9643720388412476,1.0219770669937134,1.050791621208191,1.04978609085083,1.0188024044036865,0.9585589170455933,0.8706295490264893,0.7573990821838379,0.6219937205314636...] with an element-wise tolerance of {"absoluteThreshold":0.0000019074,"relativeThreshold":0}. | PASS |
| Output from gain setter matches setValueAtTime output is true. | PASS |
| Output from lowpass filter equals [0,0.0007127507124096155,0.004163934849202633,0.012737087905406952,0.02830198034644127,0.05216708034276962,0.08505349606275558,0.12709031999111176,0.17783068120479584,0.23628735542297363,0.30098608136177063,0.37003442645072937,0.44120359420776367,0.5120201706886292,0.5798648595809937,0.6420747637748718...] with an element-wise tolerance of {"absoluteThreshold":4.7684e-7,"relativeThreshold":0}. | PASS |
| Output matches JS filter results is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Test 0] All assertions passed. (total 5 assertions) | PASS |
| < [Test 1] All assertions passed. (total 5 assertions) | PASS |
| < [Test 2] All assertions passed. (total 5 assertions) | PASS |
| < [Test 3] All assertions passed. (total 5 assertions) | PASS |
| < [Test 4] All assertions passed. (total 2 assertions) | PASS |
| < [Test 5] All assertions passed. (total 5 assertions) | PASS |
| > [Test 0] No dezippering for frequency | PASS |
| > [Test 1] No dezippering for detune | PASS |
| > [Test 2] No dezippering for Q | PASS |
| > [Test 3] No dezippering for gain | PASS |
| > [Test 4] No dezippering of frequency vs JS filter | PASS |
| > [Test 5] Test with modulation | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/distance-linear.html (106/106, 100.00%, 1.84% of total) | OK |
| 0.007071083877235651 is 0.007071067811865482 within an error of 0.0000033. | PASS |
| 0.014142167754471302 is 0.014142135623731043 within an error of 0.0000033. | PASS |
| 0.021213185042142868 is 0.021213203435596524 within an error of 0.0000033. | PASS |
| 0.028284266591072083 is 0.028284271247462005 within an error of 0.0000033. | PASS |
| 0.035355351865291595 is 0.03535533905932741 within an error of 0.0000033. | PASS |
| 0.04242643713951111 is 0.042426406871192895 within an error of 0.0000033. | PASS |
| 0.04949745163321495 is 0.04949747468305837 within an error of 0.0000033. | PASS |
| 0.056568533182144165 is 0.056568542494923775 within an error of 0.0000033. | PASS |
| 0.06363962590694427 is 0.06363961030678926 within an error of 0.0000033. | PASS |
| 0.07071070373058319 is 0.07071067811865474 within an error of 0.0000033. | PASS |
| 0.07778171449899673 is 0.0777817459305203 within an error of 0.0000033. | PASS |
| 0.08485280722379684 is 0.08485281374238579 within an error of 0.0000033. | PASS |
| 0.09192388504743576 is 0.09192388155425127 within an error of 0.0000033. | PASS |
| 0.09899497032165527 is 0.09899494936611666 within an error of 0.0000033. | PASS |
| 0.10606598854064941 is 0.10606601717798216 within an error of 0.0000033. | PASS |
| 0.11313706636428833 is 0.11313708498984763 within an error of 0.0000033. | PASS |
| 0.12020815163850784 is 0.12020815280171311 within an error of 0.0000033. | PASS |
| 0.12727925181388855 is 0.12727922061357852 within an error of 0.0000033. | PASS |
| 0.13435029983520508 is 0.13435028842544408 within an error of 0.0000033. | PASS |
| 0.1414213329553604 is 0.14142135623730956 within an error of 0.0000033. | PASS |
| 0.14849242568016052 is 0.14849242404917495 within an error of 0.0000033. | PASS |
| 0.15556347370147705 is 0.15556349186104051 within an error of 0.0000033. | PASS |
| 0.16263456642627716 is 0.16263455967290602 within an error of 0.0000033. | PASS |
| 0.1697056144475937 is 0.16970562748477142 within an error of 0.0000033. | PASS |
| 0.1767766922712326 is 0.1767766952966369 within an error of 0.0000033. | PASS |
| 0.18384777009487152 is 0.18384776310850245 within an error of 0.0000033. | PASS |
| 0.19091883301734924 is 0.19091883092036785 within an error of 0.0000033. | PASS |
| 0.19798991084098816 is 0.19798989873223333 within an error of 0.0000033. | PASS |
| 0.2050609588623047 is 0.20506096654409883 within an error of 0.0000033. | PASS |
| 0.2121320366859436 is 0.2121320343559643 within an error of 0.0000033. | PASS |
| 0.21920309960842133 is 0.2192031021678298 within an error of 0.0000033. | PASS |
| 0.22627417743206024 is 0.22627416997969527 within an error of 0.0000033. | PASS |
| 0.23334522545337677 is 0.23334523779156066 within an error of 0.0000033. | PASS |
| 0.24041630327701569 is 0.24041630560342622 within an error of 0.0000033. | PASS |
| 0.2474873661994934 is 0.2474873734152917 within an error of 0.0000033. | PASS |
| 0.2545584440231323 is 0.2545584412271571 within an error of 0.0000033. | PASS |
| 0.26162949204444885 is 0.2616295090390226 within an error of 0.0000033. | PASS |
| 0.26870059967041016 is 0.2687005768508881 within an error of 0.0000033. | PASS |
| 0.2757716178894043 is 0.27577164466275356 within an error of 0.0000033. | PASS |
| 0.2828427255153656 is 0.28284271247461906 within an error of 0.0000033. | PASS |
| 0.28991377353668213 is 0.2899137802864845 within an error of 0.0000033. | PASS |
| 0.29698485136032104 is 0.29698484809835 within an error of 0.0000033. | PASS |
| 0.3040558993816376 is 0.30405591591021547 within an error of 0.0000033. | PASS |
| 0.3111269772052765 is 0.311126983722081 within an error of 0.0000033. | PASS |
| 0.318198025226593 is 0.3181980515339465 within an error of 0.0000033. | PASS |
| 0.3252691328525543 is 0.3252691193458119 within an error of 0.0000033. | PASS |
| 0.33234015107154846 is 0.33234018715767744 within an error of 0.0000033. | PASS |
| 0.3394112288951874 is 0.3394112549695429 within an error of 0.0000033. | PASS |
| 0.3464823067188263 is 0.3464823227814083 within an error of 0.0000033. | PASS |
| 0.3535533845424652 is 0.3535533905932738 within an error of 0.0000033. | PASS |
| 0.3606244921684265 is 0.3606244584051393 within an error of 0.0000033. | PASS |
| 0.36769551038742065 is 0.36769552621700474 within an error of 0.0000033. | PASS |
| 0.37476661801338196 is 0.37476659402887025 within an error of 0.0000033. | PASS |
| 0.3818376660346985 is 0.3818376618407357 within an error of 0.0000033. | PASS |
| 0.3889087438583374 is 0.3889087296526012 within an error of 0.0000033. | PASS |
| 0.39597979187965393 is 0.39597979746446665 within an error of 0.0000033. | PASS |
| 0.40305083990097046 is 0.40305086527633216 within an error of 0.0000033. | PASS |
| 0.4101219177246094 is 0.41012193308819767 within an error of 0.0000033. | PASS |
| 0.4171930253505707 is 0.41719300090006306 within an error of 0.0000033. | PASS |
| 0.4242640435695648 is 0.4242640687119286 within an error of 0.0000033. | PASS |
| 0.4313351511955261 is 0.43133513652379407 within an error of 0.0000033. | PASS |
| 0.43840619921684265 is 0.43840620433565947 within an error of 0.0000033. | PASS |
| 0.4454772472381592 is 0.445477272147525 within an error of 0.0000033. | PASS |
| 0.4525483250617981 is 0.4525483399593905 within an error of 0.0000033. | PASS |
| 0.4596194326877594 is 0.45961940777125593 within an error of 0.0000033. | PASS |
| 0.4666904807090759 is 0.46669047558312143 within an error of 0.0000033. | PASS |
| 0.47376155853271484 is 0.4737615433949869 within an error of 0.0000033. | PASS |
| 0.48083260655403137 is 0.4808326112068523 within an error of 0.0000033. | PASS |
| 0.4879036545753479 is 0.4879036790187178 within an error of 0.0000033. | PASS |
| 0.4949747323989868 is 0.4949747468305833 within an error of 0.0000033. | PASS |
| 0.5020458102226257 is 0.5020458146424488 within an error of 0.0000033. | PASS |
| 0.5091168880462646 is 0.5091168824543142 within an error of 0.0000033. | PASS |
| 0.5161879658699036 is 0.5161879502661797 within an error of 0.0000033. | PASS |
| 0.5232590436935425 is 0.5232590180780452 within an error of 0.0000033. | PASS |
| 0.5303300619125366 is 0.5303300858899107 within an error of 0.0000033. | PASS |
| 0.5374011397361755 is 0.5374011537017762 within an error of 0.0000033. | PASS |
| 0.5444722175598145 is 0.5444722215136416 within an error of 0.0000033. | PASS |
| 0.5515432357788086 is 0.5515432893255071 within an error of 0.0000033. | PASS |
| 0.5586143732070923 is 0.5586143571373726 within an error of 0.0000033. | PASS |
| 0.5656854510307312 is 0.5656854249492381 within an error of 0.0000033. | PASS |
| 0.5727564692497253 is 0.5727564927611035 within an error of 0.0000033. | PASS |
| 0.5798275470733643 is 0.579827560572969 within an error of 0.0000033. | PASS |
| 0.5868986248970032 is 0.5868986283848345 within an error of 0.0000033. | PASS |
| 0.5939696431159973 is 0.5939696961966999 within an error of 0.0000033. | PASS |
| 0.601040780544281 is 0.6010407640085654 within an error of 0.0000033. | PASS |
| 0.6081118583679199 is 0.6081118318204309 within an error of 0.0000033. | PASS |
| 0.6151828765869141 is 0.6151828996322963 within an error of 0.0000033. | PASS |
| 0.622253954410553 is 0.6222539674441618 within an error of 0.0000033. | PASS |
| 0.6293250322341919 is 0.6293250352560273 within an error of 0.0000033. | PASS |
| 0.636396050453186 is 0.6363961030678928 within an error of 0.0000033. | PASS |
| 0.6434671878814697 is 0.6434671708797584 within an error of 0.0000033. | PASS |
| 0.6505382657051086 is 0.6505382386916237 within an error of 0.0000033. | PASS |
| 0.6576092839241028 is 0.6576093065034893 within an error of 0.0000033. | PASS |
| 0.6646803617477417 is 0.6646803743153548 within an error of 0.0000033. | PASS |
| 0.6717514395713806 is 0.6717514421272202 within an error of 0.0000033. | PASS |
| 0.6788224577903748 is 0.6788225099390857 within an error of 0.0000033. | PASS |
| 0.6858935952186584 is 0.6858935777509512 within an error of 0.0000033. | PASS |
| 0.6929646730422974 is 0.6929646455628166 within an error of 0.0000033. | PASS |
| 0.7000356912612915 is 0.7000357133746821 within an error of 0.0000033. | PASS |
| 0.7071067690849304 is 0.7071067811865476 within an error of 0.0000033. | PASS |
| Max error in distance gains is less than or equal to 0.0000033. | PASS |
| Number of impulses is equal to 100. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 102 assertions) | PASS |
| > [test] Linear distance model PannerNode | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html (7/7, 100.00%, 0.12% of total) | OK |
| Max error in Highpass filter response is less than or equal to 1.5487e-8. | PASS |
| Number of filters tested is equal to 3. | PASS |
| Number of non-finite values in the rendered output is equal to 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Biquad highpass filter | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowshelf.html (7/7, 100.00%, 0.12% of total) | OK |
| Max error in Lowshelf filter response is less than or equal to 3.8349e-8. | PASS |
| Number of filters tested is equal to 3. | PASS |
| Number of non-finite values in the rendered output is equal to 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Biquad lowshelf filter | PASS |
| /webaudio/the-audio-api/the-constantsourcenode-interface/constant-source-basic.html (40/40, 100.00%, 0.70% of total) | OK |
| Calling start() twice threw InvalidStateError: "Failed to execute 'start' on 'AudioScheduledSourceNode': cannot call start more than once.". | PASS |
| Calling stop() before start() threw InvalidStateError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': cannot call stop without calling start first.". | PASS |
| Constructor: node = new ConstantSourceNode() did not throw an exception. | PASS |
| Constructor: node instance of ConstantSourceNode is equal to true. | PASS |
| Constructor: node.channelCount is equal to 2. | PASS |
| Constructor: node.channelCountMode is equal to max. | PASS |
| Constructor: node.channelInterpretation is equal to speakers. | PASS |
| Constructor: node.numberOfInputs is equal to 0. | PASS |
| Constructor: node.numberOfOutputs is equal to 1. | PASS |
| Constructor: node.offset.defaultValue is equal to 1. | PASS |
| Constructor: node.offset.maxValue is equal to 3.4028234663852886e+38. | PASS |
| Constructor: node.offset.minValue is equal to -3.4028234663852886e+38. | PASS |
| Constructor: node.offset.value is equal to 1. | PASS |
| Factory method: node = context.createConstantSource() did not throw an exception. | PASS |
| Factory method: node instance of ConstantSourceNode is equal to true. | PASS |
| Factory method: node.channelCount is equal to 2. | PASS |
| Factory method: node.channelCountMode is equal to max. | PASS |
| Factory method: node.channelInterpretation is equal to speakers. | PASS |
| Factory method: node.numberOfInputs is equal to 0. | PASS |
| Factory method: node.numberOfOutputs is equal to 1. | PASS |
| Factory method: node.offset.defaultValue is equal to 1. | PASS |
| Factory method: node.offset.maxValue is equal to 3.4028234663852886e+38. | PASS |
| Factory method: node.offset.minValue is equal to -3.4028234663852886e+38. | PASS |
| Factory method: node.offset.value is equal to 1. | PASS |
| start(-1) threw RangeError: "Failed to execute 'start' on 'AudioScheduledSourceNode': The start time provided (-1) is less than the minimum bound (0).". | PASS |
| start(-Infinity) threw TypeError: "Failed to execute 'start' on 'AudioScheduledSourceNode': The provided double value is non-finite.". | PASS |
| start(Infinity) threw TypeError: "Failed to execute 'start' on 'AudioScheduledSourceNode': The provided double value is non-finite.". | PASS |
| start(NaN) threw TypeError: "Failed to execute 'start' on 'AudioScheduledSourceNode': The provided double value is non-finite.". | PASS |
| stop(-1) threw RangeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The stop time provided (-1) is less than the minimum bound (0).". | PASS |
| stop(-Infinity) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.". | PASS |
| stop(Infinity) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.". | PASS |
| stop(NaN) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.". | PASS |
| # AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [createConstantSource()] All assertions passed. (total 11 assertions) | PASS |
| < [new ConstantSourceNode()] All assertions passed. (total 11 assertions) | PASS |
| < [start/stop exceptions] All assertions passed. (total 10 assertions) | PASS |
| > [createConstantSource()] | PASS |
| > [new ConstantSourceNode()] | PASS |
| > [start/stop exceptions] | PASS |
| /webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html (26/26, 100.00%, 0.45% of total) | OK |
| 1024-point FFT peak position is equal to 32. | PASS |
| 1024-point FFT peak value in dBFS is greater than or equal to -13.56. | PASS |
| 128-point FFT peak position is equal to 4. | PASS |
| 128-point FFT peak value in dBFS is greater than or equal to -13.56. | PASS |
| 16384-point FFT peak position is equal to 512. | PASS |
| 16384-point FFT peak value in dBFS is greater than or equal to -13.56. | PASS |
| 2048-point FFT peak position is equal to 64. | PASS |
| 2048-point FFT peak value in dBFS is greater than or equal to -13.56. | PASS |
| 256-point FFT peak position is equal to 8. | PASS |
| 256-point FFT peak value in dBFS is greater than or equal to -13.56. | PASS |
| 32-point FFT peak position is equal to 1. | PASS |
| 32-point FFT peak value in dBFS is greater than or equal to -14.43. | PASS |
| 32768-point FFT peak position is equal to 1024. | PASS |
| 32768-point FFT peak value in dBFS is greater than or equal to -13.56. | PASS |
| 4096-point FFT peak position is equal to 128. | PASS |
| 4096-point FFT peak value in dBFS is greater than or equal to -13.56. | PASS |
| 512-point FFT peak position is equal to 16. | PASS |
| 512-point FFT peak value in dBFS is greater than or equal to -13.56. | PASS |
| 64-point FFT peak position is equal to 2. | PASS |
| 64-point FFT peak value in dBFS is greater than or equal to -13.56. | PASS |
| 8192-point FFT peak position is equal to 256. | PASS |
| 8192-point FFT peak value in dBFS is greater than or equal to -13.56. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [FFT scaling tests] All assertions passed. (total 22 assertions) | PASS |
| > [FFT scaling tests] Test Scaling of FFT in AnalyserNode | PASS |
| /webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelay.html (5/5, 100.00%, 0.09% of total) | OK |
| Delaying test signal by 1.5 sec was done correctly | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 1 assertions) | PASS |
| > [test] Basic functionality of DelayNode with a non-default max delay time | PASS |
| /webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html (6/6, 100.00%, 0.10% of total) | OK |
| Connecting nodes did not throw an exception. | PASS |
| OfflineContext startRendering() resolved correctly. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Test connections] All assertions passed. (total 2 assertions) | PASS |
| > [Test connections] AudioNode connection order doesn't trigger assertion errors | PASS |
| /webaudio/the-audio-api/the-audionode-interface/audionode.html (16/16, 100.00%, 0.28% of total) | OK |
| AudioBufferSource.numberOfInputs is equal to 0. | PASS |
| AudioBufferSource.numberOfOutputs is equal to 1. | PASS |
| AudioContext.destination.numberOfInputs is equal to 1. | PASS |
| AudioContext.destination.numberOfOutputs is equal to 0. | PASS |
| AudioNode is an EventTarget is true. | PASS |
| Connecting a node to a different context threw InvalidAccessError: "Failed to execute 'connect' on 'AudioNode': cannot connect to a destination belonging to a different audio context.". | PASS |
| audioNode.connect(0, 0, 0) threw TypeError: "Failed to execute 'connect' on 'AudioNode': parameter 1 is not of type 'AudioNode'.". | PASS |
| audioNode.connect(context.destination, 0, 0) did not throw an exception. | PASS |
| audioNode.connect(context.destination, 0, 5) threw IndexSizeError: "Failed to execute 'connect' on 'AudioNode': input index (5) exceeds number of inputs (1).". | PASS |
| audioNode.connect(context.destination, 5, 0) threw IndexSizeError: "Failed to execute 'connect' on 'AudioNode': output index (5) exceeds number of outputs (1).". | PASS |
| audioNode.connect(null, 0, 0) threw TypeError: "Failed to execute 'connect' on 'AudioNode': parameter 1 is not of type 'AudioNode'.". | PASS |
| context3 = new AudioContext(1, 44100, 44100) threw TypeError: "Failed to construct 'AudioContext': parameter 1 ('contextOptions') is not an object.". | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 12 assertions) | PASS |
| > [test] Basic tests for AudioNode API. | PASS |
| /webaudio/idlharness.https.window.html (1115/1115, 100.00%, 19.40% of total) | OK |
| AnalyserNode interface object length | PASS |
| AnalyserNode interface object name | PASS |
| AnalyserNode interface: attribute fftSize | PASS |
| AnalyserNode interface: attribute frequencyBinCount | PASS |
| AnalyserNode interface: attribute maxDecibels | PASS |
| AnalyserNode interface: attribute minDecibels | PASS |
| AnalyserNode interface: attribute smoothingTimeConstant | PASS |
| AnalyserNode interface: calling getByteFrequencyData(Uint8Array) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AnalyserNode interface: calling getByteTimeDomainData(Uint8Array) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AnalyserNode interface: calling getFloatFrequencyData(Float32Array) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AnalyserNode interface: calling getFloatTimeDomainData(Float32Array) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AnalyserNode interface: existence and properties of interface object | PASS |
| AnalyserNode interface: existence and properties of interface prototype object | PASS |
| AnalyserNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AnalyserNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AnalyserNode interface: new AnalyserNode(context) must inherit property "fftSize" with the proper type | PASS |
| AnalyserNode interface: new AnalyserNode(context) must inherit property "frequencyBinCount" with the proper type | PASS |
| AnalyserNode interface: new AnalyserNode(context) must inherit property "getByteFrequencyData(Uint8Array)" with the proper type | PASS |
| AnalyserNode interface: new AnalyserNode(context) must inherit property "getByteTimeDomainData(Uint8Array)" with the proper type | PASS |
| AnalyserNode interface: new AnalyserNode(context) must inherit property "getFloatFrequencyData(Float32Array)" with the proper type | PASS |
| AnalyserNode interface: new AnalyserNode(context) must inherit property "getFloatTimeDomainData(Float32Array)" with the proper type | PASS |
| AnalyserNode interface: new AnalyserNode(context) must inherit property "maxDecibels" with the proper type | PASS |
| AnalyserNode interface: new AnalyserNode(context) must inherit property "minDecibels" with the proper type | PASS |
| AnalyserNode interface: new AnalyserNode(context) must inherit property "smoothingTimeConstant" with the proper type | PASS |
| AnalyserNode interface: operation getByteFrequencyData(Uint8Array) | PASS |
| AnalyserNode interface: operation getByteTimeDomainData(Uint8Array) | PASS |
| AnalyserNode interface: operation getFloatFrequencyData(Float32Array) | PASS |
| AnalyserNode interface: operation getFloatTimeDomainData(Float32Array) | PASS |
| AnalyserNode must be primary interface of new AnalyserNode(context) | PASS |
| AudioBuffer interface object length | PASS |
| AudioBuffer interface object name | PASS |
| AudioBuffer interface: attribute duration | PASS |
| AudioBuffer interface: attribute length | PASS |
| AudioBuffer interface: attribute numberOfChannels | PASS |
| AudioBuffer interface: attribute sampleRate | PASS |
| AudioBuffer interface: buffer must inherit property "copyFromChannel(Float32Array, unsigned long, unsigned long)" with the proper type | PASS |
| AudioBuffer interface: buffer must inherit property "copyToChannel(Float32Array, unsigned long, unsigned long)" with the proper type | PASS |
| AudioBuffer interface: buffer must inherit property "duration" with the proper type | PASS |
| AudioBuffer interface: buffer must inherit property "getChannelData(unsigned long)" with the proper type | PASS |
| AudioBuffer interface: buffer must inherit property "length" with the proper type | PASS |
| AudioBuffer interface: buffer must inherit property "numberOfChannels" with the proper type | PASS |
| AudioBuffer interface: buffer must inherit property "sampleRate" with the proper type | PASS |
| AudioBuffer interface: calling copyFromChannel(Float32Array, unsigned long, unsigned long) on buffer with too few arguments must throw TypeError | PASS |
| AudioBuffer interface: calling copyToChannel(Float32Array, unsigned long, unsigned long) on buffer with too few arguments must throw TypeError | PASS |
| AudioBuffer interface: calling getChannelData(unsigned long) on buffer with too few arguments must throw TypeError | PASS |
| AudioBuffer interface: existence and properties of interface object | PASS |
| AudioBuffer interface: existence and properties of interface prototype object | PASS |
| AudioBuffer interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioBuffer interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioBuffer interface: operation copyFromChannel(Float32Array, unsigned long, unsigned long) | PASS |
| AudioBuffer interface: operation copyToChannel(Float32Array, unsigned long, unsigned long) | PASS |
| AudioBuffer interface: operation getChannelData(unsigned long) | PASS |
| AudioBuffer must be primary interface of buffer | PASS |
| AudioBufferSourceNode interface object length | PASS |
| AudioBufferSourceNode interface object name | PASS |
| AudioBufferSourceNode interface: attribute buffer | PASS |
| AudioBufferSourceNode interface: attribute detune | PASS |
| AudioBufferSourceNode interface: attribute loop | PASS |
| AudioBufferSourceNode interface: attribute loopEnd | PASS |
| AudioBufferSourceNode interface: attribute loopStart | PASS |
| AudioBufferSourceNode interface: attribute playbackRate | PASS |
| AudioBufferSourceNode interface: calling start(double, double, double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioBufferSourceNode interface: existence and properties of interface object | PASS |
| AudioBufferSourceNode interface: existence and properties of interface prototype object | PASS |
| AudioBufferSourceNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioBufferSourceNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "buffer" with the proper type | PASS |
| AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "detune" with the proper type | PASS |
| AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "loop" with the proper type | PASS |
| AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "loopEnd" with the proper type | PASS |
| AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "loopStart" with the proper type | PASS |
| AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "playbackRate" with the proper type | PASS |
| AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "start(double, double, double)" with the proper type | PASS |
| AudioBufferSourceNode interface: operation start(double, double, double) | PASS |
| AudioBufferSourceNode must be primary interface of new AudioBufferSourceNode(context) | PASS |
| AudioContext interface object length | PASS |
| AudioContext interface object name | PASS |
| AudioContext interface: attribute baseLatency | PASS |
| AudioContext interface: attribute outputLatency | FAIL |
| AudioContext interface: calling createMediaElementSource(HTMLMediaElement) on context with too few arguments must throw TypeError | PASS |
| AudioContext interface: calling createMediaStreamSource(MediaStream) on context with too few arguments must throw TypeError | PASS |
| AudioContext interface: calling createMediaStreamTrackSource(MediaStreamTrack) on context with too few arguments must throw TypeError | FAIL |
| AudioContext interface: context must inherit property "baseLatency" with the proper type | PASS |
| AudioContext interface: context must inherit property "close()" with the proper type | PASS |
| AudioContext interface: context must inherit property "createMediaElementSource(HTMLMediaElement)" with the proper type | PASS |
| AudioContext interface: context must inherit property "createMediaStreamDestination()" with the proper type | PASS |
| AudioContext interface: context must inherit property "createMediaStreamSource(MediaStream)" with the proper type | PASS |
| AudioContext interface: context must inherit property "createMediaStreamTrackSource(MediaStreamTrack)" with the proper type | FAIL |
| AudioContext interface: context must inherit property "getOutputTimestamp()" with the proper type | PASS |
| AudioContext interface: context must inherit property "outputLatency" with the proper type | FAIL |
| AudioContext interface: context must inherit property "resume()" with the proper type | PASS |
| AudioContext interface: context must inherit property "suspend()" with the proper type | PASS |
| AudioContext interface: existence and properties of interface object | PASS |
| AudioContext interface: existence and properties of interface prototype object | PASS |
| AudioContext interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioContext interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioContext interface: operation close() | PASS |
| AudioContext interface: operation createMediaElementSource(HTMLMediaElement) | PASS |
| AudioContext interface: operation createMediaStreamDestination() | PASS |
| AudioContext interface: operation createMediaStreamSource(MediaStream) | PASS |
| AudioContext interface: operation createMediaStreamTrackSource(MediaStreamTrack) | FAIL |
| AudioContext interface: operation getOutputTimestamp() | PASS |
| AudioContext interface: operation resume() | PASS |
| AudioContext interface: operation suspend() | PASS |
| AudioContext must be primary interface of context | PASS |
| AudioDestinationNode interface object length | PASS |
| AudioDestinationNode interface object name | PASS |
| AudioDestinationNode interface: attribute maxChannelCount | PASS |
| AudioDestinationNode interface: context.destination must inherit property "maxChannelCount" with the proper type | PASS |
| AudioDestinationNode interface: existence and properties of interface object | PASS |
| AudioDestinationNode interface: existence and properties of interface prototype object | PASS |
| AudioDestinationNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioDestinationNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioDestinationNode must be primary interface of context.destination | PASS |
| AudioListener interface object length | PASS |
| AudioListener interface object name | PASS |
| AudioListener interface: attribute forwardX | PASS |
| AudioListener interface: attribute forwardY | PASS |
| AudioListener interface: attribute forwardZ | PASS |
| AudioListener interface: attribute positionX | PASS |
| AudioListener interface: attribute positionY | PASS |
| AudioListener interface: attribute positionZ | PASS |
| AudioListener interface: attribute upX | PASS |
| AudioListener interface: attribute upY | PASS |
| AudioListener interface: attribute upZ | PASS |
| AudioListener interface: calling setOrientation(float, float, float, float, float, float) on context.listener with too few arguments must throw TypeError | PASS |
| AudioListener interface: calling setPosition(float, float, float) on context.listener with too few arguments must throw TypeError | PASS |
| AudioListener interface: context.listener must inherit property "forwardX" with the proper type | PASS |
| AudioListener interface: context.listener must inherit property "forwardY" with the proper type | PASS |
| AudioListener interface: context.listener must inherit property "forwardZ" with the proper type | PASS |
| AudioListener interface: context.listener must inherit property "positionX" with the proper type | PASS |
| AudioListener interface: context.listener must inherit property "positionY" with the proper type | PASS |
| AudioListener interface: context.listener must inherit property "positionZ" with the proper type | PASS |
| AudioListener interface: context.listener must inherit property "setOrientation(float, float, float, float, float, float)" with the proper type | PASS |
| AudioListener interface: context.listener must inherit property "setPosition(float, float, float)" with the proper type | PASS |
| AudioListener interface: context.listener must inherit property "upX" with the proper type | PASS |
| AudioListener interface: context.listener must inherit property "upY" with the proper type | PASS |
| AudioListener interface: context.listener must inherit property "upZ" with the proper type | PASS |
| AudioListener interface: existence and properties of interface object | PASS |
| AudioListener interface: existence and properties of interface prototype object | PASS |
| AudioListener interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioListener interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioListener interface: operation setOrientation(float, float, float, float, float, float) | PASS |
| AudioListener interface: operation setPosition(float, float, float) | PASS |
| AudioListener must be primary interface of context.listener | PASS |
| AudioNode interface object length | PASS |
| AudioNode interface object name | PASS |
| AudioNode interface: attribute channelCount | PASS |
| AudioNode interface: attribute channelCountMode | PASS |
| AudioNode interface: attribute channelInterpretation | PASS |
| AudioNode interface: attribute context | PASS |
| AudioNode interface: attribute numberOfInputs | PASS |
| AudioNode interface: attribute numberOfOutputs | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on context.destination with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new GainNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on worklet_node with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on context.destination with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new GainNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling connect(AudioParam, unsigned long) on worklet_node with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on context.createScriptProcessor() with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on context.destination with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new BiquadFilterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new ChannelMergerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new ChannelSplitterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new ConstantSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new ConvolverNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new DelayNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new GainNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new OscillatorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new PannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new StereoPannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on new WaveShaperNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode) on worklet_node with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on context.destination with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new GainNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long) on worklet_node with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on context.destination with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new GainNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on worklet_node with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on context.createScriptProcessor() with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on context.destination with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new BiquadFilterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new ChannelMergerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new ChannelSplitterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new ConstantSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new ConvolverNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new DelayNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new GainNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new OscillatorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new PannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new StereoPannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on new WaveShaperNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam) on worklet_node with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on context.destination with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new GainNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(AudioParam, unsigned long) on worklet_node with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on context.destination with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new DelayNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new GainNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new PannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError | PASS |
| AudioNode interface: calling disconnect(unsigned long) on worklet_node with too few arguments must throw TypeError | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "context" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: context.createScriptProcessor() must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "context" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: context.destination must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: existence and properties of interface object | PASS |
| AudioNode interface: existence and properties of interface prototype object | PASS |
| AudioNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new AnalyserNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new AudioBufferSourceNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new BiquadFilterNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new ChannelMergerNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new ChannelSplitterNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new ConstantSourceNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new ConvolverNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new DelayNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new DynamicsCompressorNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new GainNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new OscillatorNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new PannerNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new StereoPannerNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "context" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: new WaveShaperNode(context) must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioNode interface: operation connect(AudioNode, unsigned long, unsigned long) | PASS |
| AudioNode interface: operation connect(AudioParam, unsigned long) | PASS |
| AudioNode interface: operation disconnect() | PASS |
| AudioNode interface: operation disconnect(AudioNode) | PASS |
| AudioNode interface: operation disconnect(AudioNode, unsigned long) | PASS |
| AudioNode interface: operation disconnect(AudioNode, unsigned long, unsigned long) | PASS |
| AudioNode interface: operation disconnect(AudioParam) | PASS |
| AudioNode interface: operation disconnect(AudioParam, unsigned long) | PASS |
| AudioNode interface: operation disconnect(unsigned long) | PASS |
| AudioNode interface: worklet_node must inherit property "channelCount" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "channelCountMode" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "channelInterpretation" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "connect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "context" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "disconnect()" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "disconnect(AudioNode)" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "disconnect(AudioNode, unsigned long)" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "disconnect(AudioParam)" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "disconnect(AudioParam, unsigned long)" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "disconnect(unsigned long)" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "numberOfInputs" with the proper type | PASS |
| AudioNode interface: worklet_node must inherit property "numberOfOutputs" with the proper type | PASS |
| AudioParam interface object length | PASS |
| AudioParam interface object name | PASS |
| AudioParam interface: attribute automationRate | PASS |
| AudioParam interface: attribute defaultValue | PASS |
| AudioParam interface: attribute maxValue | PASS |
| AudioParam interface: attribute minValue | PASS |
| AudioParam interface: attribute value | PASS |
| AudioParam interface: calling cancelAndHoldAtTime(double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError | PASS |
| AudioParam interface: calling cancelScheduledValues(double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError | PASS |
| AudioParam interface: calling exponentialRampToValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError | PASS |
| AudioParam interface: calling linearRampToValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError | PASS |
| AudioParam interface: calling setTargetAtTime(float, double, float) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError | PASS |
| AudioParam interface: calling setValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError | PASS |
| AudioParam interface: calling setValueCurveAtTime([object Object], double, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError | PASS |
| AudioParam interface: existence and properties of interface object | PASS |
| AudioParam interface: existence and properties of interface prototype object | PASS |
| AudioParam interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioParam interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "automationRate" with the proper type | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "cancelAndHoldAtTime(double)" with the proper type | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "cancelScheduledValues(double)" with the proper type | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "defaultValue" with the proper type | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "exponentialRampToValueAtTime(float, double)" with the proper type | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "linearRampToValueAtTime(float, double)" with the proper type | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "maxValue" with the proper type | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "minValue" with the proper type | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "setTargetAtTime(float, double, float)" with the proper type | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "setValueAtTime(float, double)" with the proper type | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "setValueCurveAtTime([object Object], double, double)" with the proper type | PASS |
| AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "value" with the proper type | PASS |
| AudioParam interface: operation cancelAndHoldAtTime(double) | PASS |
| AudioParam interface: operation cancelScheduledValues(double) | PASS |
| AudioParam interface: operation exponentialRampToValueAtTime(float, double) | PASS |
| AudioParam interface: operation linearRampToValueAtTime(float, double) | PASS |
| AudioParam interface: operation setTargetAtTime(float, double, float) | PASS |
| AudioParam interface: operation setValueAtTime(float, double) | PASS |
| AudioParam interface: operation setValueCurveAtTime([object Object], double, double) | PASS |
| AudioParam must be primary interface of new AudioBufferSourceNode(context).playbackRate | PASS |
| AudioParamMap interface object length | PASS |
| AudioParamMap interface object name | PASS |
| AudioParamMap interface: existence and properties of interface object | PASS |
| AudioParamMap interface: existence and properties of interface prototype object | PASS |
| AudioParamMap interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioParamMap interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioParamMap must be primary interface of worklet_node.parameters | PASS |
| AudioProcessingEvent interface object length | PASS |
| AudioProcessingEvent interface object name | PASS |
| AudioProcessingEvent interface: attribute inputBuffer | PASS |
| AudioProcessingEvent interface: attribute outputBuffer | PASS |
| AudioProcessingEvent interface: attribute playbackTime | PASS |
| AudioProcessingEvent interface: existence and properties of interface object | PASS |
| AudioProcessingEvent interface: existence and properties of interface prototype object | PASS |
| AudioProcessingEvent interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioProcessingEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioProcessingEvent interface: new AudioProcessingEvent('', { playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer }) must inherit property "inputBuffer" with the proper type | PASS |
| AudioProcessingEvent interface: new AudioProcessingEvent('', { playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer }) must inherit property "outputBuffer" with the proper type | PASS |
| AudioProcessingEvent interface: new AudioProcessingEvent('', { playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer }) must inherit property "playbackTime" with the proper type | PASS |
| AudioProcessingEvent must be primary interface of new AudioProcessingEvent('', { playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer }) | PASS |
| AudioScheduledSourceNode interface object length | PASS |
| AudioScheduledSourceNode interface object name | PASS |
| AudioScheduledSourceNode interface: attribute onended | PASS |
| AudioScheduledSourceNode interface: calling start(double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioScheduledSourceNode interface: calling start(double) on new ConstantSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioScheduledSourceNode interface: calling start(double) on new OscillatorNode(context) with too few arguments must throw TypeError | PASS |
| AudioScheduledSourceNode interface: calling stop(double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioScheduledSourceNode interface: calling stop(double) on new ConstantSourceNode(context) with too few arguments must throw TypeError | PASS |
| AudioScheduledSourceNode interface: calling stop(double) on new OscillatorNode(context) with too few arguments must throw TypeError | PASS |
| AudioScheduledSourceNode interface: existence and properties of interface object | PASS |
| AudioScheduledSourceNode interface: existence and properties of interface prototype object | PASS |
| AudioScheduledSourceNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioScheduledSourceNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property "onended" with the proper type | PASS |
| AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property "start(double)" with the proper type | PASS |
| AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property "stop(double)" with the proper type | PASS |
| AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property "onended" with the proper type | PASS |
| AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property "start(double)" with the proper type | PASS |
| AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property "stop(double)" with the proper type | PASS |
| AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property "onended" with the proper type | PASS |
| AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property "start(double)" with the proper type | PASS |
| AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property "stop(double)" with the proper type | PASS |
| AudioScheduledSourceNode interface: operation start(double) | PASS |
| AudioScheduledSourceNode interface: operation stop(double) | PASS |
| AudioWorklet interface object length | PASS |
| AudioWorklet interface object name | PASS |
| AudioWorklet interface: existence and properties of interface object | PASS |
| AudioWorklet interface: existence and properties of interface prototype object | PASS |
| AudioWorklet interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioWorklet interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioWorklet must be primary interface of context.audioWorklet | PASS |
| AudioWorkletGlobalScope interface: existence and properties of interface object | PASS |
| AudioWorkletNode interface object length | PASS |
| AudioWorkletNode interface object name | PASS |
| AudioWorkletNode interface: attribute onprocessorerror | PASS |
| AudioWorkletNode interface: attribute parameters | PASS |
| AudioWorkletNode interface: attribute port | PASS |
| AudioWorkletNode interface: existence and properties of interface object | PASS |
| AudioWorkletNode interface: existence and properties of interface prototype object | PASS |
| AudioWorkletNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| AudioWorkletNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| AudioWorkletNode interface: worklet_node must inherit property "onprocessorerror" with the proper type | PASS |
| AudioWorkletNode interface: worklet_node must inherit property "parameters" with the proper type | PASS |
| AudioWorkletNode interface: worklet_node must inherit property "port" with the proper type | PASS |
| AudioWorkletNode must be primary interface of worklet_node | PASS |
| AudioWorkletProcessor interface: existence and properties of interface object | PASS |
| BaseAudioContext interface object length | PASS |
| BaseAudioContext interface object name | PASS |
| BaseAudioContext interface: attribute audioWorklet | PASS |
| BaseAudioContext interface: attribute currentTime | PASS |
| BaseAudioContext interface: attribute destination | PASS |
| BaseAudioContext interface: attribute listener | PASS |
| BaseAudioContext interface: attribute onstatechange | PASS |
| BaseAudioContext interface: attribute sampleRate | PASS |
| BaseAudioContext interface: attribute state | PASS |
| BaseAudioContext interface: calling createBuffer(unsigned long, unsigned long, float) on context with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createBuffer(unsigned long, unsigned long, float) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createChannelMerger(unsigned long) on context with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createChannelMerger(unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createChannelSplitter(unsigned long) on context with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createChannelSplitter(unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createDelay(double) on context with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createDelay(double) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createIIRFilter([object Object], [object Object]) on context with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createIIRFilter([object Object], [object Object]) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints) on context with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createScriptProcessor(unsigned long, unsigned long, unsigned long) on context with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling createScriptProcessor(unsigned long, unsigned long, unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback) on context with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: calling decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError | PASS |
| BaseAudioContext interface: context must inherit property "audioWorklet" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createAnalyser()" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createBiquadFilter()" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createBuffer(unsigned long, unsigned long, float)" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createBufferSource()" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createChannelMerger(unsigned long)" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createChannelSplitter(unsigned long)" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createConstantSource()" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createConvolver()" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createDelay(double)" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createDynamicsCompressor()" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createGain()" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createIIRFilter([object Object], [object Object])" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createOscillator()" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createPanner()" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints)" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createScriptProcessor(unsigned long, unsigned long, unsigned long)" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createStereoPanner()" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "createWaveShaper()" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "currentTime" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback)" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "destination" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "listener" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "onstatechange" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "sampleRate" with the proper type | PASS |
| BaseAudioContext interface: context must inherit property "state" with the proper type | PASS |
| BaseAudioContext interface: existence and properties of interface object | PASS |
| BaseAudioContext interface: existence and properties of interface prototype object | PASS |
| BaseAudioContext interface: existence and properties of interface prototype object's "constructor" property | PASS |
| BaseAudioContext interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "audioWorklet" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createAnalyser()" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createBiquadFilter()" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createBuffer(unsigned long, unsigned long, float)" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createBufferSource()" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createChannelMerger(unsigned long)" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createChannelSplitter(unsigned long)" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createConstantSource()" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createConvolver()" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createDelay(double)" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createDynamicsCompressor()" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createGain()" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createIIRFilter([object Object], [object Object])" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createOscillator()" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createPanner()" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints)" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createScriptProcessor(unsigned long, unsigned long, unsigned long)" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createStereoPanner()" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createWaveShaper()" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "currentTime" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback)" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "destination" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "listener" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "onstatechange" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "sampleRate" with the proper type | PASS |
| BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "state" with the proper type | PASS |
| BaseAudioContext interface: operation createAnalyser() | PASS |
| BaseAudioContext interface: operation createBiquadFilter() | PASS |
| BaseAudioContext interface: operation createBuffer(unsigned long, unsigned long, float) | PASS |
| BaseAudioContext interface: operation createBufferSource() | PASS |
| BaseAudioContext interface: operation createChannelMerger(unsigned long) | PASS |
| BaseAudioContext interface: operation createChannelSplitter(unsigned long) | PASS |
| BaseAudioContext interface: operation createConstantSource() | PASS |
| BaseAudioContext interface: operation createConvolver() | PASS |
| BaseAudioContext interface: operation createDelay(double) | PASS |
| BaseAudioContext interface: operation createDynamicsCompressor() | PASS |
| BaseAudioContext interface: operation createGain() | PASS |
| BaseAudioContext interface: operation createIIRFilter([object Object], [object Object]) | PASS |
| BaseAudioContext interface: operation createOscillator() | PASS |
| BaseAudioContext interface: operation createPanner() | PASS |
| BaseAudioContext interface: operation createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints) | PASS |
| BaseAudioContext interface: operation createScriptProcessor(unsigned long, unsigned long, unsigned long) | PASS |
| BaseAudioContext interface: operation createStereoPanner() | PASS |
| BaseAudioContext interface: operation createWaveShaper() | PASS |
| BaseAudioContext interface: operation decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback) | PASS |
| BiquadFilterNode interface object length | PASS |
| BiquadFilterNode interface object name | PASS |
| BiquadFilterNode interface: attribute Q | PASS |
| BiquadFilterNode interface: attribute detune | PASS |
| BiquadFilterNode interface: attribute frequency | PASS |
| BiquadFilterNode interface: attribute gain | PASS |
| BiquadFilterNode interface: attribute type | PASS |
| BiquadFilterNode interface: calling getFrequencyResponse(Float32Array, Float32Array, Float32Array) on new BiquadFilterNode(context) with too few arguments must throw TypeError | PASS |
| BiquadFilterNode interface: existence and properties of interface object | PASS |
| BiquadFilterNode interface: existence and properties of interface prototype object | PASS |
| BiquadFilterNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| BiquadFilterNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "Q" with the proper type | PASS |
| BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "detune" with the proper type | PASS |
| BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "frequency" with the proper type | PASS |
| BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "gain" with the proper type | PASS |
| BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "getFrequencyResponse(Float32Array, Float32Array, Float32Array)" with the proper type | PASS |
| BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "type" with the proper type | PASS |
| BiquadFilterNode interface: operation getFrequencyResponse(Float32Array, Float32Array, Float32Array) | PASS |
| BiquadFilterNode must be primary interface of new BiquadFilterNode(context) | PASS |
| ChannelMergerNode interface object length | PASS |
| ChannelMergerNode interface object name | PASS |
| ChannelMergerNode interface: existence and properties of interface object | PASS |
| ChannelMergerNode interface: existence and properties of interface prototype object | PASS |
| ChannelMergerNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| ChannelMergerNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| ChannelMergerNode must be primary interface of new ChannelMergerNode(context) | PASS |
| ChannelSplitterNode interface object length | PASS |
| ChannelSplitterNode interface object name | PASS |
| ChannelSplitterNode interface: existence and properties of interface object | PASS |
| ChannelSplitterNode interface: existence and properties of interface prototype object | PASS |
| ChannelSplitterNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| ChannelSplitterNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| ChannelSplitterNode must be primary interface of new ChannelSplitterNode(context) | PASS |
| ConstantSourceNode interface object length | PASS |
| ConstantSourceNode interface object name | PASS |
| ConstantSourceNode interface: attribute offset | PASS |
| ConstantSourceNode interface: existence and properties of interface object | PASS |
| ConstantSourceNode interface: existence and properties of interface prototype object | PASS |
| ConstantSourceNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| ConstantSourceNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| ConstantSourceNode interface: new ConstantSourceNode(context) must inherit property "offset" with the proper type | PASS |
| ConstantSourceNode must be primary interface of new ConstantSourceNode(context) | PASS |
| ConvolverNode interface object length | PASS |
| ConvolverNode interface object name | PASS |
| ConvolverNode interface: attribute buffer | PASS |
| ConvolverNode interface: attribute normalize | PASS |
| ConvolverNode interface: existence and properties of interface object | PASS |
| ConvolverNode interface: existence and properties of interface prototype object | PASS |
| ConvolverNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| ConvolverNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| ConvolverNode interface: new ConvolverNode(context) must inherit property "buffer" with the proper type | PASS |
| ConvolverNode interface: new ConvolverNode(context) must inherit property "normalize" with the proper type | PASS |
| ConvolverNode must be primary interface of new ConvolverNode(context) | PASS |
| DelayNode interface object length | PASS |
| DelayNode interface object name | PASS |
| DelayNode interface: attribute delayTime | PASS |
| DelayNode interface: existence and properties of interface object | PASS |
| DelayNode interface: existence and properties of interface prototype object | PASS |
| DelayNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| DelayNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| DelayNode interface: new DelayNode(context) must inherit property "delayTime" with the proper type | PASS |
| DelayNode must be primary interface of new DelayNode(context) | PASS |
| DynamicsCompressorNode interface object length | PASS |
| DynamicsCompressorNode interface object name | PASS |
| DynamicsCompressorNode interface: attribute attack | PASS |
| DynamicsCompressorNode interface: attribute knee | PASS |
| DynamicsCompressorNode interface: attribute ratio | PASS |
| DynamicsCompressorNode interface: attribute reduction | PASS |
| DynamicsCompressorNode interface: attribute release | PASS |
| DynamicsCompressorNode interface: attribute threshold | PASS |
| DynamicsCompressorNode interface: existence and properties of interface object | PASS |
| DynamicsCompressorNode interface: existence and properties of interface prototype object | PASS |
| DynamicsCompressorNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| DynamicsCompressorNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "attack" with the proper type | PASS |
| DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "knee" with the proper type | PASS |
| DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "ratio" with the proper type | PASS |
| DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "reduction" with the proper type | PASS |
| DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "release" with the proper type | PASS |
| DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "threshold" with the proper type | PASS |
| DynamicsCompressorNode must be primary interface of new DynamicsCompressorNode(context) | PASS |
| GainNode interface object length | PASS |
| GainNode interface object name | PASS |
| GainNode interface: attribute gain | PASS |
| GainNode interface: existence and properties of interface object | PASS |
| GainNode interface: existence and properties of interface prototype object | PASS |
| GainNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| GainNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| GainNode interface: new GainNode(context) must inherit property "gain" with the proper type | PASS |
| GainNode must be primary interface of new GainNode(context) | PASS |
| IIRFilterNode interface object length | PASS |
| IIRFilterNode interface object name | PASS |
| IIRFilterNode interface: calling getFrequencyResponse(Float32Array, Float32Array, Float32Array) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError | PASS |
| IIRFilterNode interface: existence and properties of interface object | PASS |
| IIRFilterNode interface: existence and properties of interface prototype object | PASS |
| IIRFilterNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| IIRFilterNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| IIRFilterNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "getFrequencyResponse(Float32Array, Float32Array, Float32Array)" with the proper type | PASS |
| IIRFilterNode interface: operation getFrequencyResponse(Float32Array, Float32Array, Float32Array) | PASS |
| IIRFilterNode must be primary interface of new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) | PASS |
| MediaElementAudioSourceNode interface object length | PASS |
| MediaElementAudioSourceNode interface object name | PASS |
| MediaElementAudioSourceNode interface: attribute mediaElement | PASS |
| MediaElementAudioSourceNode interface: existence and properties of interface object | PASS |
| MediaElementAudioSourceNode interface: existence and properties of interface prototype object | PASS |
| MediaElementAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| MediaElementAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| MediaElementAudioSourceNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "mediaElement" with the proper type | PASS |
| MediaElementAudioSourceNode must be primary interface of new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) | PASS |
| MediaStreamAudioDestinationNode interface object length | PASS |
| MediaStreamAudioDestinationNode interface object name | PASS |
| MediaStreamAudioDestinationNode interface: attribute stream | PASS |
| MediaStreamAudioDestinationNode interface: existence and properties of interface object | PASS |
| MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object | PASS |
| MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| MediaStreamAudioDestinationNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "stream" with the proper type | PASS |
| MediaStreamAudioDestinationNode must be primary interface of new MediaStreamAudioDestinationNode(context) | PASS |
| MediaStreamAudioSourceNode interface object length | PASS |
| MediaStreamAudioSourceNode interface object name | PASS |
| MediaStreamAudioSourceNode interface: attribute mediaStream | PASS |
| MediaStreamAudioSourceNode interface: existence and properties of interface object | PASS |
| MediaStreamAudioSourceNode interface: existence and properties of interface prototype object | PASS |
| MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| MediaStreamTrackAudioSourceNode interface object length | FAIL |
| MediaStreamTrackAudioSourceNode interface object name | FAIL |
| MediaStreamTrackAudioSourceNode interface: existence and properties of interface object | FAIL |
| MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object | FAIL |
| MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property | FAIL |
| MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property | FAIL |
| OfflineAudioCompletionEvent interface object length | PASS |
| OfflineAudioCompletionEvent interface object name | PASS |
| OfflineAudioCompletionEvent interface: attribute renderedBuffer | PASS |
| OfflineAudioCompletionEvent interface: existence and properties of interface object | PASS |
| OfflineAudioCompletionEvent interface: existence and properties of interface prototype object | PASS |
| OfflineAudioCompletionEvent interface: existence and properties of interface prototype object's "constructor" property | PASS |
| OfflineAudioCompletionEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| OfflineAudioCompletionEvent interface: new OfflineAudioCompletionEvent("", {renderedBuffer: buffer}) must inherit property "renderedBuffer" with the proper type | PASS |
| OfflineAudioCompletionEvent must be primary interface of new OfflineAudioCompletionEvent("", {renderedBuffer: buffer}) | PASS |
| OfflineAudioContext interface object length | PASS |
| OfflineAudioContext interface object name | PASS |
| OfflineAudioContext interface: attribute length | PASS |
| OfflineAudioContext interface: attribute oncomplete | PASS |
| OfflineAudioContext interface: calling suspend(double) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError | PASS |
| OfflineAudioContext interface: existence and properties of interface object | PASS |
| OfflineAudioContext interface: existence and properties of interface prototype object | PASS |
| OfflineAudioContext interface: existence and properties of interface prototype object's "constructor" property | PASS |
| OfflineAudioContext interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "length" with the proper type | PASS |
| OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "oncomplete" with the proper type | PASS |
| OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "resume()" with the proper type | PASS |
| OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "startRendering()" with the proper type | PASS |
| OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "suspend(double)" with the proper type | PASS |
| OfflineAudioContext interface: operation resume() | PASS |
| OfflineAudioContext interface: operation startRendering() | PASS |
| OfflineAudioContext interface: operation suspend(double) | PASS |
| OfflineAudioContext must be primary interface of new OfflineAudioContext(1, 1, sample_rate) | PASS |
| OscillatorNode interface object length | PASS |
| OscillatorNode interface object name | PASS |
| OscillatorNode interface: attribute detune | PASS |
| OscillatorNode interface: attribute frequency | PASS |
| OscillatorNode interface: attribute type | PASS |
| OscillatorNode interface: calling setPeriodicWave(PeriodicWave) on new OscillatorNode(context) with too few arguments must throw TypeError | PASS |
| OscillatorNode interface: existence and properties of interface object | PASS |
| OscillatorNode interface: existence and properties of interface prototype object | PASS |
| OscillatorNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| OscillatorNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| OscillatorNode interface: new OscillatorNode(context) must inherit property "detune" with the proper type | PASS |
| OscillatorNode interface: new OscillatorNode(context) must inherit property "frequency" with the proper type | PASS |
| OscillatorNode interface: new OscillatorNode(context) must inherit property "setPeriodicWave(PeriodicWave)" with the proper type | PASS |
| OscillatorNode interface: new OscillatorNode(context) must inherit property "type" with the proper type | PASS |
| OscillatorNode interface: operation setPeriodicWave(PeriodicWave) | PASS |
| OscillatorNode must be primary interface of new OscillatorNode(context) | PASS |
| PannerNode interface object length | PASS |
| PannerNode interface object name | PASS |
| PannerNode interface: attribute coneInnerAngle | PASS |
| PannerNode interface: attribute coneOuterAngle | PASS |
| PannerNode interface: attribute coneOuterGain | PASS |
| PannerNode interface: attribute distanceModel | PASS |
| PannerNode interface: attribute maxDistance | PASS |
| PannerNode interface: attribute orientationX | PASS |
| PannerNode interface: attribute orientationY | PASS |
| PannerNode interface: attribute orientationZ | PASS |
| PannerNode interface: attribute panningModel | PASS |
| PannerNode interface: attribute positionX | PASS |
| PannerNode interface: attribute positionY | PASS |
| PannerNode interface: attribute positionZ | PASS |
| PannerNode interface: attribute refDistance | PASS |
| PannerNode interface: attribute rolloffFactor | PASS |
| PannerNode interface: calling setOrientation(float, float, float) on new PannerNode(context) with too few arguments must throw TypeError | PASS |
| PannerNode interface: calling setPosition(float, float, float) on new PannerNode(context) with too few arguments must throw TypeError | PASS |
| PannerNode interface: existence and properties of interface object | PASS |
| PannerNode interface: existence and properties of interface prototype object | PASS |
| PannerNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| PannerNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "coneInnerAngle" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "coneOuterAngle" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "coneOuterGain" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "distanceModel" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "maxDistance" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "orientationX" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "orientationY" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "orientationZ" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "panningModel" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "positionX" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "positionY" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "positionZ" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "refDistance" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "rolloffFactor" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "setOrientation(float, float, float)" with the proper type | PASS |
| PannerNode interface: new PannerNode(context) must inherit property "setPosition(float, float, float)" with the proper type | PASS |
| PannerNode interface: operation setOrientation(float, float, float) | PASS |
| PannerNode interface: operation setPosition(float, float, float) | PASS |
| PannerNode must be primary interface of new PannerNode(context) | PASS |
| PeriodicWave interface object length | PASS |
| PeriodicWave interface object name | PASS |
| PeriodicWave interface: existence and properties of interface object | PASS |
| PeriodicWave interface: existence and properties of interface prototype object | PASS |
| PeriodicWave interface: existence and properties of interface prototype object's "constructor" property | PASS |
| PeriodicWave interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| PeriodicWave must be primary interface of new PeriodicWave(context) | PASS |
| ScriptProcessorNode interface object length | PASS |
| ScriptProcessorNode interface object name | PASS |
| ScriptProcessorNode interface: attribute bufferSize | PASS |
| ScriptProcessorNode interface: attribute onaudioprocess | PASS |
| ScriptProcessorNode interface: context.createScriptProcessor() must inherit property "bufferSize" with the proper type | PASS |
| ScriptProcessorNode interface: context.createScriptProcessor() must inherit property "onaudioprocess" with the proper type | PASS |
| ScriptProcessorNode interface: existence and properties of interface object | PASS |
| ScriptProcessorNode interface: existence and properties of interface prototype object | PASS |
| ScriptProcessorNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| ScriptProcessorNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| ScriptProcessorNode must be primary interface of context.createScriptProcessor() | PASS |
| StereoPannerNode interface object length | PASS |
| StereoPannerNode interface object name | PASS |
| StereoPannerNode interface: attribute pan | PASS |
| StereoPannerNode interface: existence and properties of interface object | PASS |
| StereoPannerNode interface: existence and properties of interface prototype object | PASS |
| StereoPannerNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| StereoPannerNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| StereoPannerNode interface: new StereoPannerNode(context) must inherit property "pan" with the proper type | PASS |
| StereoPannerNode must be primary interface of new StereoPannerNode(context) | PASS |
| Stringification of buffer | PASS |
| Stringification of context | PASS |
| Stringification of context.audioWorklet | PASS |
| Stringification of context.createScriptProcessor() | PASS |
| Stringification of context.destination | PASS |
| Stringification of context.listener | PASS |
| Stringification of new AnalyserNode(context) | PASS |
| Stringification of new AudioBufferSourceNode(context) | PASS |
| Stringification of new AudioBufferSourceNode(context).playbackRate | PASS |
| Stringification of new AudioProcessingEvent('', { playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer }) | PASS |
| Stringification of new BiquadFilterNode(context) | PASS |
| Stringification of new ChannelMergerNode(context) | PASS |
| Stringification of new ChannelSplitterNode(context) | PASS |
| Stringification of new ConstantSourceNode(context) | PASS |
| Stringification of new ConvolverNode(context) | PASS |
| Stringification of new DelayNode(context) | PASS |
| Stringification of new DynamicsCompressorNode(context) | PASS |
| Stringification of new GainNode(context) | PASS |
| Stringification of new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) | PASS |
| Stringification of new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) | PASS |
| Stringification of new MediaStreamAudioDestinationNode(context) | PASS |
| Stringification of new OfflineAudioCompletionEvent("", {renderedBuffer: buffer}) | PASS |
| Stringification of new OfflineAudioContext(1, 1, sample_rate) | PASS |
| Stringification of new OscillatorNode(context) | PASS |
| Stringification of new PannerNode(context) | PASS |
| Stringification of new PeriodicWave(context) | PASS |
| Stringification of new StereoPannerNode(context) | PASS |
| Stringification of new WaveShaperNode(context) | PASS |
| Stringification of worklet_node | PASS |
| Stringification of worklet_node.parameters | PASS |
| WaveShaperNode interface object length | PASS |
| WaveShaperNode interface object name | PASS |
| WaveShaperNode interface: attribute curve | PASS |
| WaveShaperNode interface: attribute oversample | PASS |
| WaveShaperNode interface: existence and properties of interface object | PASS |
| WaveShaperNode interface: existence and properties of interface prototype object | PASS |
| WaveShaperNode interface: existence and properties of interface prototype object's "constructor" property | PASS |
| WaveShaperNode interface: existence and properties of interface prototype object's @@unscopables property | PASS |
| WaveShaperNode interface: new WaveShaperNode(context) must inherit property "curve" with the proper type | PASS |
| WaveShaperNode interface: new WaveShaperNode(context) must inherit property "oversample" with the proper type | PASS |
| WaveShaperNode must be primary interface of new WaveShaperNode(context) | PASS |
| idl_test setup | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/panner-automation-position.html (34/34, 100.00%, 0.59% of total) | OK |
| 1-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, left channel equals [0.7071067690849304,0.013321999460458755,0.0067243436351418495,0.00449715182185173,0.0033782348036766052,0.002705172635614872,0.0022557489573955536,0.0019343806197866797,0.0016931620193645358,0.0015054333489388227,0.0013551785377785563,0.0012321951799094677,0.0011296762386336923,0.00104290631134063,0.0009685150580480695,0.0009040298755280674...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. | PASS |
| 1-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, right channel equals [0.7071067690849304,0.013321999460458755,0.0067243436351418495,0.00449715182185173,0.0033782348036766052,0.002705172635614872,0.0022557489573955536,0.0019343806197866797,0.0016931620193645358,0.0015054333489388227,0.0013551785377785563,0.0012321951799094677,0.0011296762386336923,0.00104290631134063,0.0009685150580480695,0.0009040298755280674...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. | PASS |
| 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, left channel equals [0.7071067690849304,0.00008563726441934705,0.000030067832994973287,0.000016328625861206092,0.000010593314073048532,0.000007574611117888708,0.000005759487976320088,0.0000045689607759413775,0.0000037386932945082663,0.0000031326046610047342,0.0000026742441150418017,0.0000023176937702373834,0.0000020338857211754657,0.0000018036150777334115,0.0000016137381635417114,0.0000014549860907209222...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":5.0783e-7},"relativeThreshold":0}. | PASS |
| 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, right channel equals [0.7071067690849304,0.00035668950295075774,0.00012629777484107763,0.00006878197018522769,0.000044686275941785425,0.000031979649065760896,0.00002433015288261231,0.00001930880534928292,0.000015804853319423273,0.000013245842637843452,0.000011309872206766158,0.00000980348249868257,0.00000860413729242282,0.00000763084153732052,0.0000068281406129244715,0.000006156923518574331...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":5.0783e-7},"relativeThreshold":0}. | PASS |
| 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, left channel equals [0.7071067690849304,0.001196307479403913,0.0005938085960224271,0.0003949022793676704,0.0002958123222924769,0.00023647479247301817,0.00019696500385180116,0.00016876752488315105,0.00014763248327653855,0.0001312017993768677,0.00011806215479737148,0.00010731472139013931,0.00009836074605118483,0.00009078587027033791,0.00008429430454270914,0.00007866910891607404...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":4.8124e-7},"relativeThreshold":0}. | PASS |
| 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, right channel equals [0.7071067690849304,0.00498276436701417,0.002494250191375613,0.0016634686617180705,0.0012478390708565712,0.0009983853669837117,0.0008320511551573873,0.0007132254540920258,0.0006240977090783417,0.000554771046154201,0.0004993066540919244,0.00045392452739179134,0.00041610468178987503,0.00038410225533880293,0.000356670847395435,0.000332896423060447...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":4.8124e-7},"relativeThreshold":0}. | PASS |
| 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, left channel equals [0.7071067690849304,0.22892199456691742,0.22258761525154114,0.21748939156532288,0.21270129084587097,0.2080373466014862,0.2034355252981186,0.19886919856071472,0.19432516396045685,0.1897958517074585,0.18527695536613464,0.18076558411121368,0.1762598603963852,0.17175845801830292,0.1672605574131012,0.16276535391807556...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":0.0000065324},"relativeThreshold":0}. | PASS |
| 1-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, right channel equals [0.7071067690849304,0.9534875750541687,0.9349632859230042,0.9161425232887268,0.8972479104995728,0.8783238530158997,0.8593849539756775,0.840437650680542,0.8214850425720215,0.8025290369987488,0.7835704684257507,0.7646101713180542,0.7456485629081726,0.7266858816146851,0.7077224254608154,0.6887583136558533...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":0.0000065324},"relativeThreshold":0}. | PASS |
| 2-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, left channel equals [1,0.018840152770280838,0.009509658440947533,0.006359932944178581,0.0047775455750525,0.003825691994279623,0.003190110670402646,0.0027356273494660854,0.0023944927379488945,0.0021290043368935585,0.0019165119156241417,0.0017425871919840574,0.0015976035501807928,0.0014748922549188137,0.0013696871465072036,0.001278491341508925...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. | PASS |
| 2-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, right channel equals [2,0.037680305540561676,0.019019316881895065,0.012719865888357162,0.009555091150105,0.007651383988559246,0.006380221340805292,0.005471254698932171,0.004788985475897789,0.004258008673787117,0.0038330238312482834,0.003485174383968115,0.0031952071003615856,0.0029497845098376274,0.002739374293014407,0.00255698268301785...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. | PASS |
| 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, left channel equals [1,0.00016654180944897234,0.00005850067100254819,0.00003177416874677874,0.00002061528357444331,0.000014741360246262047,0.000011209189324290492,0.000008892362529877573,0.000007276568794623017,0.000006097022378526162,0.000005204963144933572,0.000004511035513132811,0.000003958673914894462,0.000003510504939185921,0.0000031409495022671763,0.0000028319695957179647...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":5.218e-7},"relativeThreshold":0}. | PASS |
| 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: exponential, rolloff: 1.5, right channel equals [2,0.0010604923591017723,0.0003755554498638958,0.0002045376895694062,0.00013288715854287148,0.00009510177915217355,0.00007235421799123287,0.00005742186840507202,0.00004700180943473242,0.00003939175803679973,0.00003363448922755197,0.00002915470213338267,0.000025588007702026516,0.000022693546270602383,0.0000203064064407954,0.000018310278392164037...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":5.218e-7},"relativeThreshold":0}. | PASS |
| 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, left channel equals [1,0.002326501300558448,0.0011553276563063264,0.0007684475276619196,0.000575670157559216,0.0004602163680829108,0.0003833358350675553,0.0003284646081738174,0.00028733513318002224,0.00025535948225297034,0.0002297879836987704,0.00020887165737804025,0.00019144543330185115,0.00017670303350314498,0.00016406884242314845,0.00015312072355300188...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":4.3267e-7},"relativeThreshold":0}. | PASS |
| 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: inverse, rolloff: 1, right channel equals [2,0.014814520254731178,0.007416830863803625,0.004946674220263958,0.003710799152031541,0.002969020279124379,0.002474395092576742,0.0021210394334048033,0.001855994458310306,0.0016498314216732979,0.0014848907012492418,0.00134993193205446,0.0012374616926535964,0.001142291002906859,0.0010607137810438871,0.0009900116128847003...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":4.3267e-7},"relativeThreshold":0}. | PASS |
| 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, left channel equals [1,0.4451926648616791,0.4330716133117676,0.4232165515422821,0.41393065452575684,0.40487271547317505,0.39592882990837097,0.38705015182495117,0.37821245193481445,0.369401752948761,0.3606102168560028,0.35183247923851013,0.34306514263153076,0.3343057632446289,0.3255528211593628,0.31680476665496826...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":0.0000065756},"relativeThreshold":0}. | PASS |
| 2-channel [0, 0, 1] -> [20000, 30000, 10000]: distanceModel: linear, rolloff: 1, right channel equals [2,2.834864377975464,2.780179977416992,2.7243428230285645,2.6682181358337402,2.611978530883789,2.5556817054748535,2.499351978302002,2.4430017471313477,2.3866379261016846,2.3302643299102783,2.2738840579986572,2.217498540878296,2.16110897064209,2.1047163009643555,2.048321008682251...] with an element-wise tolerance of {"absoluteThreshold":{"relativeThreshold":0.0000065756},"relativeThreshold":0}. | PASS |
| # AUDIT TASK RUNNER FINISHED: 8 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [0: 1-channel inverse rolloff: 1] All assertions passed. (total 2 assertions) | PASS |
| < [0: 2-channel inverse rolloff: 1] All assertions passed. (total 2 assertions) | PASS |
| < [1: 1-channel inverse rolloff: 1] All assertions passed. (total 2 assertions) | PASS |
| < [1: 2-channel inverse rolloff: 1] All assertions passed. (total 2 assertions) | PASS |
| < [2: 1-channel exponential rolloff: 1.5] All assertions passed. (total 2 assertions) | PASS |
| < [2: 2-channel exponential rolloff: 1.5] All assertions passed. (total 2 assertions) | PASS |
| < [3: 1-channel linear rolloff: 1] All assertions passed. (total 2 assertions) | PASS |
| < [3: 2-channel linear rolloff: 1] All assertions passed. (total 2 assertions) | PASS |
| > [0: 1-channel inverse rolloff: 1] | PASS |
| > [0: 2-channel inverse rolloff: 1] | PASS |
| > [1: 1-channel inverse rolloff: 1] | PASS |
| > [1: 2-channel inverse rolloff: 1] | PASS |
| > [2: 1-channel exponential rolloff: 1.5] | PASS |
| > [2: 2-channel exponential rolloff: 1.5] | PASS |
| > [3: 1-channel linear rolloff: 1] | PASS |
| > [3: 2-channel linear rolloff: 1] | PASS |
| /webaudio/the-audio-api/the-oscillatornode-interface/detune-limiting.html (13/13, 100.00%, 0.23% of total) | OK |
| Context sample rate is equal to 44100. | PASS |
| Frame where detuned oscillator reaches Nyquist is equal to 5. | PASS |
| Osc(freq: 1, detune: 18514.189453125) output equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. | PASS |
| Osc(freq: 22050) output contains only the constant 0. | PASS |
| Reference oscillator frequency is greater than or equal to 22050. | PASS |
| osc[0:4] is not constantly 0 (contains 4 different values). | PASS |
| osc[5:] contains only the constant 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [detune automation] All assertions passed. (total 3 assertions) | PASS |
| < [detune limits] All assertions passed. (total 4 assertions) | PASS |
| > [detune automation] Oscillator output with detune automation should be zero above Nyquist | PASS |
| > [detune limits] Oscillator with detune and frequency at Nyquist or above | PASS |
| /webaudio/the-audio-api/the-channelsplitternode-interface/audiochannelsplitter.html (16/16, 100.00%, 0.28% of total) | OK |
| Left and right channels were exchanged correctly | PASS |
| Left channel contains only the constant -1. | PASS |
| Right channel contains only the constant 1. | PASS |
| createChannelSplitter(0) threw IndexSizeError: "Failed to execute 'createChannelSplitter' on 'BaseAudioContext': The number of outputs provided (0) is outside the range [1, 32].". | PASS |
| createChannelSplitter(33) threw IndexSizeError: "Failed to execute 'createChannelSplitter' on 'BaseAudioContext': The number of outputs provided (33) is outside the range [1, 32].". | PASS |
| splitternode = context.createChannelSplitter() did not throw an exception. | PASS |
| splitternode = context.createChannelSplitter(32) did not throw an exception. | PASS |
| splitternode.numberOfInputs is equal to 1. | PASS |
| splitternode.numberOfOutputs is equal to 32. | PASS |
| splitternode.numberOfOutputs is equal to 6. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [construction] All assertions passed. (total 7 assertions) | PASS |
| < [functionality] All assertions passed. (total 3 assertions) | PASS |
| > [construction] Construction of ChannelSplitterNode | PASS |
| > [functionality] Functionality of ChannelSplitterNode | PASS |
| /webaudio/the-audio-api/the-delaynode-interface/no-dezippering.html (15/15, 100.00%, 0.26% of total) | OK |
| .value setter output is identical to the array [0,0,0,0,0.15114444494247437,0.3147895038127899,0.46949300169944763,0.6108605861663818,0.7348765134811401,0.8380183577537537,0.9173563122749329,0.9706368446350098,0.9963463544845581,0.9937547445297241,0.9629355072975159,0.9047641754150391...]. | PASS |
| .value setter output matches setValueAtTime output is true. | PASS |
| With modulation: .value setter output is identical to the array [0,0,0,0,0,0,0,0,0,0.9986401796340942,0.9932119250297546,0.9595714807510376,0.898674488067627,0.812250554561615,0.7027547359466553,0.5732971429824829...]. | PASS |
| With modulation: .value setter output matches setValueAtTime output is true. | PASS |
| output[0:63] contains only the constant 0. | PASS |
| output[128:] is identical to the array [113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128...]. | PASS |
| output[64:127] is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...]. | PASS |
| # AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test0] All assertions passed. (total 3 assertions) | PASS |
| < [test1] All assertions passed. (total 2 assertions) | PASS |
| < [test2] All assertions passed. (total 2 assertions) | PASS |
| > [test0] Test DelayNode has no dezippering | PASS |
| > [test1] Test value setter and setValueAtTime | PASS |
| > [test2] Test value setter and modulation | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/ctor-biquadfilter.html (54/54, 100.00%, 0.94% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new BiquadFilterNode() threw TypeError: "Failed to construct 'BiquadFilterNode': 1 argument required, but only 0 present.". | PASS |
| new BiquadFilterNode(1) threw TypeError: "Failed to construct 'BiquadFilterNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new BiquadFilterNode(c, {channelCount: 0}) threw NotSupportedError: "Failed to construct 'BiquadFilterNode': The channel count provided (0) is outside the range [1, 32].". | PASS |
| new BiquadFilterNode(c, {channelCount: 17}} did not throw an exception. | PASS |
| new BiquadFilterNode(c, {channelCount: 99}) threw NotSupportedError: "Failed to construct 'BiquadFilterNode': The channel count provided (99) is outside the range [1, 32].". | PASS |
| new BiquadFilterNode(c, {channelCountMode: "clamped-max"}) did not throw an exception. | PASS |
| new BiquadFilterNode(c, {channelCountMode: "explicit"}) did not throw an exception. | PASS |
| new BiquadFilterNode(c, {channelCountMode: "foobar"} threw TypeError: "Failed to construct 'BiquadFilterNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS |
| new BiquadFilterNode(c, {channelCountMode: "max"} did not throw an exception. | PASS |
| new BiquadFilterNode(c, {channelCountMode: "max"}) did not throw an exception. | PASS |
| new BiquadFilterNode(c, {channelInterpretation: "discrete"}) did not throw an exception. | PASS |
| new BiquadFilterNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Failed to construct 'BiquadFilterNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new BiquadFilterNode(c, {channelInterpretation: "speakers"}) did not throw an exception. | PASS |
| new BiquadFilterNode(context, 42) threw TypeError: "Failed to construct 'BiquadFilterNode': parameter 2 ('options') is not an object.". | PASS |
| node = new BiquadFilterNode(..., {"type":"highpass","frequency":512,"detune":1,"Q":5,"gain":3}) did not throw an exception. | PASS |
| node.Q.value is equal to 5. | PASS |
| node.channelCount is equal to 17. | PASS |
| node.channelCountMode after invalid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to clamped-max. | PASS |
| node.channelCountMode after valid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to max. | PASS |
| node.channelCountMode is equal to max. | PASS |
| node.channelInterpretation after invalid setter is equal to discrete. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node.detuen.value is equal to 1. | PASS |
| node.frequency.value is equal to 512. | PASS |
| node.gain.value is equal to 3. | PASS |
| node.type is equal to highpass. | PASS |
| node0 = new BiquadFilterNode(context) did not throw an exception. | PASS |
| node0 instanceof BiquadFilterNode is equal to true. | PASS |
| node0.Q.value is equal to 1. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.detune.value is equal to 0. | PASS |
| node0.frequency.value is equal to 350. | PASS |
| node0.gain.value is equal to 0. | PASS |
| node0.numberOfInputs is equal to 1. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node0.type is equal to lowpass. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [construct with options] All assertions passed. (total 6 assertions) | PASS |
| < [default constructor] All assertions passed. (total 12 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 20 assertions) | PASS |
| > [construct with options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/the-audio-api/the-analysernode-interface/test-analysernode.html (2/2, 100.00%, 0.03% of total) | OK |
| Test AnalyserNode API | PASS |
| Test AnalyserNode's ctor API | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html (7/7, 100.00%, 0.12% of total) | OK |
| Max error in Allpass filter response is less than or equal to 3.9337e-8. | PASS |
| Number of filters tested is equal to 4. | PASS |
| Number of non-finite values in the rendered output is equal to 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Biquad allpass filter | PASS |
| /webaudio/the-audio-api/the-channelmergernode-interface/ctor-channelmerger.html (43/43, 100.00%, 0.75% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new ChannelMergerNode() threw TypeError: "Failed to construct 'ChannelMergerNode': 1 argument required, but only 0 present.". | PASS |
| new ChannelMergerNode(1) threw TypeError: "Failed to construct 'ChannelMergerNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new ChannelMergerNode(c, {"channelCount":3}) threw InvalidStateError: "Failed to construct 'ChannelMergerNode': ChannelMerger: channelCount cannot be changed from 1". | PASS |
| new ChannelMergerNode(c, {"channelCountMode":"max"}) threw InvalidStateError: "Failed to construct 'ChannelMergerNode': ChannelMerger: channelCountMode cannot be changed from 'explicit'". | PASS |
| new ChannelMergerNode(c, {"numberOfInputs":99}) threw IndexSizeError: "Failed to construct 'ChannelMergerNode': The number of inputs provided (99) is outside the range [1, 32].". | PASS |
| new ChannelMergerNode(c, {channelCount: 1}} did not throw an exception. | PASS |
| new ChannelMergerNode(c, {channelCount: 2}} threw InvalidStateError: "Failed to construct 'ChannelMergerNode': ChannelMerger: channelCount cannot be changed from 1". | PASS |
| new ChannelMergerNode(c, {channelCountMode: "clamped-max"}) threw InvalidStateError: "Failed to construct 'ChannelMergerNode': ChannelMerger: channelCountMode cannot be changed from 'explicit'". | PASS |
| new ChannelMergerNode(c, {channelCountMode: "explicit"} did not throw an exception. | PASS |
| new ChannelMergerNode(c, {channelCountMode: "max"}) threw InvalidStateError: "Failed to construct 'ChannelMergerNode': ChannelMerger: channelCountMode cannot be changed from 'explicit'". | PASS |
| new ChannelMergerNode(c, {channelInterpretation: "discrete"}) did not throw an exception. | PASS |
| new ChannelMergerNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Failed to construct 'ChannelMergerNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new ChannelMergerNode(c, {channelInterpretation: "speakers"}) did not throw an exception. | PASS |
| new ChannelMergerNode(context, 42) threw TypeError: "Failed to construct 'ChannelMergerNode': parameter 2 ('options') is not an object.". | PASS |
| node.channelCount is equal to 1. | PASS |
| node.channelCountMode is equal to explicit. | PASS |
| node.channelInterpretation after invalid setter is equal to discrete. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node0 = new ChannelMergerNode(context) did not throw an exception. | PASS |
| node0 instanceof ChannelMergerNode is equal to true. | PASS |
| node0.channelCount is equal to 1. | PASS |
| node0.channelCountMode is equal to explicit. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.numberOfInputs is equal to 6. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node1 = new ChannelMergerNode(context, {"numberOfInputs":3,"numberOfOutputs":9,"channelInterpretation":"discrete"}) did not throw an exception. | PASS |
| node1.channelInterpretation is equal to discrete. | PASS |
| node1.numberOfInputs is equal to 3. | PASS |
| node1.numberOfOutputs is equal to 1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [constructor options] All assertions passed. (total 7 assertions) | PASS |
| < [default constructor] All assertions passed. (total 7 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 13 assertions) | PASS |
| > [constructor options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/automation-rate.html (111/111, 100.00%, 1.93% of total) | OK |
| AudioListener.forwardX.automationRate is equal to k-rate. | PASS |
| AudioListener.forwardY.automationRate is equal to k-rate. | PASS |
| AudioListener.forwardZ.automationRate is equal to k-rate. | PASS |
| AudioListener.positionX.automationRate is equal to k-rate. | PASS |
| AudioListener.positionY.automationRate is equal to k-rate. | PASS |
| AudioListener.positionZ.automationRate is equal to k-rate. | PASS |
| AudioListener.upX.automationRate is equal to k-rate. | PASS |
| AudioListener.upY.automationRate is equal to k-rate. | PASS |
| AudioListener.upZ.automationRate is equal to k-rate. | PASS |
| BiquadFilterNode.Q.automationRate is equal to k-rate. | PASS |
| BiquadFilterNode.detune.automationRate is equal to k-rate. | PASS |
| BiquadFilterNode.frequency.automationRate is equal to k-rate. | PASS |
| BiquadFilterNode.gain.automationRate is equal to k-rate. | PASS |
| ConstantSourceNode.offset.automationRate is equal to k-rate. | PASS |
| Default AudioBufferSourceNode.detune.automationRate is equal to k-rate. | PASS |
| Default AudioBufferSourceNode.playbackRate.automationRate is equal to k-rate. | PASS |
| Default AudioListener.forwardX.automationRate is equal to a-rate. | PASS |
| Default AudioListener.forwardY.automationRate is equal to a-rate. | PASS |
| Default AudioListener.forwardZ.automationRate is equal to a-rate. | PASS |
| Default AudioListener.positionX.automationRate is equal to a-rate. | PASS |
| Default AudioListener.positionY.automationRate is equal to a-rate. | PASS |
| Default AudioListener.positionZ.automationRate is equal to a-rate. | PASS |
| Default AudioListener.upX.automationRate is equal to a-rate. | PASS |
| Default AudioListener.upY.automationRate is equal to a-rate. | PASS |
| Default AudioListener.upZ.automationRate is equal to a-rate. | PASS |
| Default BiquadFilterNode.Q.automationRate is equal to a-rate. | PASS |
| Default BiquadFilterNode.detune.automationRate is equal to a-rate. | PASS |
| Default BiquadFilterNode.frequency.automationRate is equal to a-rate. | PASS |
| Default BiquadFilterNode.gain.automationRate is equal to a-rate. | PASS |
| Default ConstantSourceNode.offset.automationRate is equal to a-rate. | PASS |
| Default DelayNode.delayTime.automationRate is equal to a-rate. | PASS |
| Default DynamicsCompressorNode.attack.automationRate is equal to k-rate. | PASS |
| Default DynamicsCompressorNode.knee.automationRate is equal to k-rate. | PASS |
| Default DynamicsCompressorNode.ratio.automationRate is equal to k-rate. | PASS |
| Default DynamicsCompressorNode.release.automationRate is equal to k-rate. | PASS |
| Default DynamicsCompressorNode.threshold.automationRate is equal to k-rate. | PASS |
| Default GainNode.gain.automationRate is equal to a-rate. | PASS |
| Default OscillatorNode.detune.automationRate is equal to a-rate. | PASS |
| Default OscillatorNode.frequency.automationRate is equal to a-rate. | PASS |
| Default PannerNode.orientationX.automationRate is equal to a-rate. | PASS |
| Default PannerNode.orientationY.automationRate is equal to a-rate. | PASS |
| Default PannerNode.orientationZ.automationRate is equal to a-rate. | PASS |
| Default PannerNode.positionX.automationRate is equal to a-rate. | PASS |
| Default PannerNode.positionY.automationRate is equal to a-rate. | PASS |
| Default PannerNode.positionZ.automationRate is equal to a-rate. | PASS |
| Default StereoPannerNode.pan.automationRate is equal to a-rate. | PASS |
| DelayNode.delayTime.automationRate is equal to k-rate. | PASS |
| GainNode.gain.automationRate is equal to k-rate. | PASS |
| OscillatorNode.detune.automationRate is equal to k-rate. | PASS |
| OscillatorNode.frequency.automationRate is equal to k-rate. | PASS |
| PannerNode.orientationX.automationRate is equal to k-rate. | PASS |
| PannerNode.orientationY.automationRate is equal to k-rate. | PASS |
| PannerNode.orientationZ.automationRate is equal to k-rate. | PASS |
| PannerNode.positionX.automationRate is equal to k-rate. | PASS |
| PannerNode.positionY.automationRate is equal to k-rate. | PASS |
| PannerNode.positionZ.automationRate is equal to k-rate. | PASS |
| Set AudioBufferSourceNode.detune.automationRate to "a-rate" threw InvalidStateError: "Failed to set the 'automationRate' property on 'AudioParam': AudioBufferSource.detune.automationRate is fixed and cannot be changed to "a-rate"". | PASS |
| Set AudioBufferSourceNode.playbackRate.automationRate to "a-rate" threw InvalidStateError: "Failed to set the 'automationRate' property on 'AudioParam': AudioBufferSource.playbackRate.automationRate is fixed and cannot be changed to "a-rate"". | PASS |
| Set AudioListener.forwardX.automationRate to "k-rate" did not throw an exception. | PASS |
| Set AudioListener.forwardY.automationRate to "k-rate" did not throw an exception. | PASS |
| Set AudioListener.forwardZ.automationRate to "k-rate" did not throw an exception. | PASS |
| Set AudioListener.positionX.automationRate to "k-rate" did not throw an exception. | PASS |
| Set AudioListener.positionY.automationRate to "k-rate" did not throw an exception. | PASS |
| Set AudioListener.positionZ.automationRate to "k-rate" did not throw an exception. | PASS |
| Set AudioListener.upX.automationRate to "k-rate" did not throw an exception. | PASS |
| Set AudioListener.upY.automationRate to "k-rate" did not throw an exception. | PASS |
| Set AudioListener.upZ.automationRate to "k-rate" did not throw an exception. | PASS |
| Set BiquadFilterNode.Q.automationRate to "k-rate" did not throw an exception. | PASS |
| Set BiquadFilterNode.detune.automationRate to "k-rate" did not throw an exception. | PASS |
| Set BiquadFilterNode.frequency.automationRate to "k-rate" did not throw an exception. | PASS |
| Set BiquadFilterNode.gain.automationRate to "k-rate" did not throw an exception. | PASS |
| Set ConstantSourceNode.offset.automationRate to "k-rate" did not throw an exception. | PASS |
| Set DelayNode.delayTime.automationRate to "k-rate" did not throw an exception. | PASS |
| Set DynamicsCompressorNode.attack.automationRate to "a-rate" threw InvalidStateError: "Failed to set the 'automationRate' property on 'AudioParam': DynamicsCompressor.attack.automationRate is fixed and cannot be changed to "a-rate"". | PASS |
| Set DynamicsCompressorNode.knee.automationRate to "a-rate" threw InvalidStateError: "Failed to set the 'automationRate' property on 'AudioParam': DynamicsCompressor.knee.automationRate is fixed and cannot be changed to "a-rate"". | PASS |
| Set DynamicsCompressorNode.ratio.automationRate to "a-rate" threw InvalidStateError: "Failed to set the 'automationRate' property on 'AudioParam': DynamicsCompressor.ratio.automationRate is fixed and cannot be changed to "a-rate"". | PASS |
| Set DynamicsCompressorNode.release.automationRate to "a-rate" threw InvalidStateError: "Failed to set the 'automationRate' property on 'AudioParam': DynamicsCompressor.release.automationRate is fixed and cannot be changed to "a-rate"". | PASS |
| Set DynamicsCompressorNode.threshold.automationRate to "a-rate" threw InvalidStateError: "Failed to set the 'automationRate' property on 'AudioParam': DynamicsCompressor.threshold.automationRate is fixed and cannot be changed to "a-rate"". | PASS |
| Set GainNode.gain.automationRate to "k-rate" did not throw an exception. | PASS |
| Set OscillatorNode.detune.automationRate to "k-rate" did not throw an exception. | PASS |
| Set OscillatorNode.frequency.automationRate to "k-rate" did not throw an exception. | PASS |
| Set PannerNode.orientationX.automationRate to "k-rate" did not throw an exception. | PASS |
| Set PannerNode.orientationY.automationRate to "k-rate" did not throw an exception. | PASS |
| Set PannerNode.orientationZ.automationRate to "k-rate" did not throw an exception. | PASS |
| Set PannerNode.positionX.automationRate to "k-rate" did not throw an exception. | PASS |
| Set PannerNode.positionY.automationRate to "k-rate" did not throw an exception. | PASS |
| Set PannerNode.positionZ.automationRate to "k-rate" did not throw an exception. | PASS |
| Set StereoPannerNode.pan.automationRate to "k-rate" did not throw an exception. | PASS |
| StereoPannerNode.pan.automationRate is equal to k-rate. | PASS |
| # AUDIT TASK RUNNER FINISHED: 10 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [AudioBufferSourceNode] All assertions passed. (total 4 assertions) | PASS |
| < [AudioListener] All assertions passed. (total 27 assertions) | PASS |
| < [BiquadFilterNode] All assertions passed. (total 12 assertions) | PASS |
| < [ConstantSourceNode] All assertions passed. (total 3 assertions) | PASS |
| < [DelayNode] All assertions passed. (total 3 assertions) | PASS |
| < [DynamicsCompressorNode] All assertions passed. (total 10 assertions) | PASS |
| < [GainNode] All assertions passed. (total 3 assertions) | PASS |
| < [OscillatorNode] All assertions passed. (total 6 assertions) | PASS |
| < [PannerNode] All assertions passed. (total 18 assertions) | PASS |
| < [StereoPannerNode] All assertions passed. (total 3 assertions) | PASS |
| > [AudioBufferSourceNode] | PASS |
| > [AudioListener] | PASS |
| > [BiquadFilterNode] | PASS |
| > [ConstantSourceNode] | PASS |
| > [DelayNode] | PASS |
| > [DynamicsCompressorNode] | PASS |
| > [GainNode] | PASS |
| > [OscillatorNode] | PASS |
| > [PannerNode] | PASS |
| > [StereoPannerNode] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/k-rate-delay.html (12/12, 100.00%, 0.21% of total) | OK |
| DelayNode: Difference between a-rate and k-rate DelayNode is not constantly 0 (contains 7937 different values). | PASS |
| DelayNode: Output of a-rate DelayNode is identical to the array [0,0.16936877369880676,0.3387375473976135,0.4880804717540741,0.6374233961105347,0.7490825057029724,0.8607417345046997,0.9215139150619507,0.9822861552238464,0.9849868416786194,0.9876875877380371,0.9319968223571777,0.8763060569763184,0.7688085436820984,0.6613110303878784,0.5147176384925842...]. | PASS |
| DelayNode: Output of k-rate DelayNode is identical to the array [0,0.3387375771999359,0.6374233961105347,0.8607417345046997,0.9822861552238464,0.9876875877380371,0.8763060569763184,0.6613109707832336,0.36812418699264526,0.03141050040721893,-0.30901670455932617,-0.6129070520401001,-0.8443272113800049,-0.975915789604187,-0.9921146035194397,-0.8910053968429565...]. | PASS |
| DelayNode: Setting delayTime.automationRate to "k-rate" is equal to k-rate. | PASS |
| DelayNode: a-rate node:delayTime.linearRampToValueAtTime(0.5,1) did not throw an exception. | PASS |
| DelayNode: a-rate node:delayTime.setValueAtTime(0,0) did not throw an exception. | PASS |
| DelayNode: k-rate node: delayTime.linearRampToValueAtTime(0.5,1) did not throw an exception. | PASS |
| DelayNode: k-rate node: delayTime.setValueAtTime(0,0) did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Test k-rate DelayNode] All assertions passed. (total 8 assertions) | PASS |
| > [Test k-rate DelayNode] | PASS |
| /webaudio/the-audio-api/the-constantsourcenode-interface/test-constantsourcenode.html (6/6, 100.00%, 0.10% of total) | OK |
| ConstantSourceNode can be constructed | PASS |
| ConstantSourceNode onended event | PASS |
| ConstantSourceNode start and stop when work | PASS |
| ConstantSourceNode stop and start | PASS |
| ConstantSourceNode with automation | PASS |
| ConstantSourceNode with no automation | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html (54/54, 100.00%, 0.94% of total) | OK |
| Handled setValueCurve exception so output contains only the constant 1. | PASS |
| delayTime.setValueCurveAtTime([1, 5, Infinity], 0.043750000000000004, 0.01) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| delayTime.setValueCurveAtTime([1, 5], 0.043750000000000004, 0.01) did not throw an exception. | PASS |
| exponentialRampToValueAtTime(1, 0.0075) did not throw an exception. | PASS |
| exponentialRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': exponentialRampToValue(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)". | PASS |
| exponentialRampToValueAtTime(1, 0.025) did not throw an exception. | PASS |
| g.gain.setValueAtTime(1.0, 15) did not throw an exception. | PASS |
| g.gain.setValueCurveAtTime([1,2,3], 10, 10) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 10, 10) overlaps setValueCurveAtTime(..., 5, 10)". | PASS |
| g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 2.5, 10) overlaps setValueCurveAtTime(..., 5, 10)". | PASS |
| g.gain.setValueCurveAtTime([1,2,3], 4, 11) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 4, 11) overlaps setValueCurveAtTime(..., 5, 10)". | PASS |
| g.gain.setValueCurveAtTime([1,2,3], 5, 10) did not throw an exception. | PASS |
| g.gain.setValueCurveAtTime([1,2,3], 5, 5) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 5, 5) overlaps setValueCurveAtTime(..., 5, 10)". | PASS |
| g.gain.setValueCurveAtTime([1,2,3], 6, 9) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 6, 9) overlaps setValueCurveAtTime(..., 5, 10)". | PASS |
| linearRampToValueAtTime(0, 0.0025) did not throw an exception. | PASS |
| linearRampToValueAtTime(1, 0.0125) did not throw an exception. | PASS |
| linearRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': linearRampToValueAtTime(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)". | PASS |
| second g.gain.setValueCurveAtTime([1,2,3], 5, 10) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 5, 10) overlaps setValueCurveAtTime(..., 5, 10)". | PASS |
| setTargetAtTime(1, 0.015000000000000001, 1) did not throw an exception. | PASS |
| setTargetAtTime(1, 0.018750000000000003, 1) threw NotSupportedError: "Failed to execute 'setTargetAtTime' on 'AudioParam': setTargetAtTime(1, 0.01875, 1) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)". | PASS |
| setTargetAtTime(1, 0.037500000000000006, 0.1) did not throw an exception. | PASS |
| setValueAtTime(0, 0.0125) did not throw an exception. | PASS |
| setValueAtTime(1, 0) did not throw an exception. | PASS |
| setValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Failed to execute 'setValueAtTime' on 'AudioParam': setValueAtTime(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)". | PASS |
| setValueAtTime(1, 0.026250000000000002) did not throw an exception. | PASS |
| setValueCurveAtTime(..., 0.0025, 0.0025) did not throw an exception. | PASS |
| setValueCurveAtTime(..., 0.0075, 0.0025) did not throw an exception. | PASS |
| setValueCurveAtTime(..., 0.01, 0.0025) did not throw an exception. | PASS |
| setValueCurveAtTime(..., 0.0125, 0.0025) did not throw an exception. | PASS |
| setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| setValueCurveAtTime([1,2], 0, 0.01) did not throw an exception. | PASS |
| setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The curve length provided (1) is less than the minimum bound (2).". | PASS |
| setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| setValueCurveAtTime([], 0, 0.01) threw InvalidStateError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The curve length provided (0) is less than the minimum bound (2).". | PASS |
| setValueCurveAtTime(curve, 0.00625, 0.01) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.00625, 0.01) overlaps linearRampToValueAtTime(1, 0.0125)". | PASS |
| setValueCurveAtTime(curve, 0.0125, 0.0125) did not throw an exception. | PASS |
| setValueCurveAtTime(curve, 0.018750000000000003, 0.01) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.01875, 0.01) overlaps exponentialRampToValue(1, 0.025)". | PASS |
| setValueCurveAtTime(curve, 0.03125, 0.01) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.03125, 0.01) overlaps setTargetAtTime(1, 0.03750000000000001, 0.1)". | PASS |
| setValueCurveAtTime(curve, 0.031415926535897934, 0.01) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.03141592653589793, 0.01) overlaps setTargetAtTime(1, 0.03750000000000001, 0.1)". | PASS |
| setValueCurveAtTime(curve, 0.043750000000000004, 0.01) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.04375, 0.01) overlaps setValueCurveAtTime(..., 0.05, 0.1)". | PASS |
| setValueCurveAtTime(curve, 0.05, 0.1) did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [automations] All assertions passed. (total 13 assertions) | PASS |
| < [catch-exception] All assertions passed. (total 1 assertions) | PASS |
| < [curve lengths] All assertions passed. (total 3 assertions) | PASS |
| < [curve overlap] All assertions passed. (total 8 assertions) | PASS |
| < [setValueCurve] All assertions passed. (total 6 assertions) | PASS |
| < [start-end] All assertions passed. (total 9 assertions) | PASS |
| > [automations] | PASS |
| > [catch-exception] | PASS |
| > [curve lengths] | PASS |
| > [curve overlap] | PASS |
| > [setValueCurve] | PASS |
| > [start-end] | PASS |
| /webaudio/the-audio-api/the-gainnode-interface/ctor-gain.html (50/50, 100.00%, 0.87% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new GainNode() threw TypeError: "Failed to construct 'GainNode': 1 argument required, but only 0 present.". | PASS |
| new GainNode(1) threw TypeError: "Failed to construct 'GainNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new GainNode(c, {channelCount: 0}) threw NotSupportedError: "Failed to construct 'GainNode': The channel count provided (0) is outside the range [1, 32].". | PASS |
| new GainNode(c, {channelCount: 17}} did not throw an exception. | PASS |
| new GainNode(c, {channelCount: 99}) threw NotSupportedError: "Failed to construct 'GainNode': The channel count provided (99) is outside the range [1, 32].". | PASS |
| new GainNode(c, {channelCountMode: "clamped-max"}) did not throw an exception. | PASS |
| new GainNode(c, {channelCountMode: "explicit"}) did not throw an exception. | PASS |
| new GainNode(c, {channelCountMode: "foobar"} threw TypeError: "Failed to construct 'GainNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS |
| new GainNode(c, {channelCountMode: "max"} did not throw an exception. | PASS |
| new GainNode(c, {channelCountMode: "max"}) did not throw an exception. | PASS |
| new GainNode(c, {channelInterpretation: "discrete"}) did not throw an exception. | PASS |
| new GainNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Failed to construct 'GainNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new GainNode(c, {channelInterpretation: "speakers"}) did not throw an exception. | PASS |
| new GainNode(context, 42) threw TypeError: "Failed to construct 'GainNode': parameter 2 ('options') is not an object.". | PASS |
| node.channelCount is equal to 17. | PASS |
| node.channelCountMode after invalid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to clamped-max. | PASS |
| node.channelCountMode after valid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to max. | PASS |
| node.channelCountMode is equal to max. | PASS |
| node.channelInterpretation after invalid setter is equal to discrete. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node0 = new GainNode(context) did not throw an exception. | PASS |
| node0 instanceof GainNode is equal to true. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.gain.value is equal to 1. | PASS |
| node0.numberOfInputs is equal to 1. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node1 = new GainNode(c, {"gain":-2}) did not throw an exception. | PASS |
| node1 instanceof GainNode is equal to true. | PASS |
| node1.channelCount is equal to 2. | PASS |
| node1.channelCountMode is equal to max. | PASS |
| node1.channelInterpretation is equal to speakers. | PASS |
| node1.gain.value is equal to -2. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [constructor with options] All assertions passed. (total 6 assertions) | PASS |
| < [default constructor] All assertions passed. (total 8 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 20 assertions) | PASS |
| > [constructor with options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html (25/25, 100.00%, 0.44% of total) | OK |
| 1: Channel 1 contains only the constant 0. | PASS |
| 2: Channel 0 is identical to the array [0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585,-0.834891676902771...]. | PASS |
| 2: Channel 1 is identical to the array [0,0,0.9947003126144409,0.7705774307250977,0.9109300374984741,0.770668089389801,0.9842367768287659,0.32022905349731445,-0.9348858594894409,-0.8055058121681213,-0.8837442398071289,-0.8007677793502808,-0.9286617636680603,-0.6026888489723206,0.7909697890281677,0.8679972290992737...]. | PASS |
| 3: Channel 0 is identical to the array [0,0,0.9485260844230652,0.8472318053245544,0.8233559727668762,0.864546000957489,0.845425009727478,0.8580314517021179,0.7955959439277649,0.9893833994865417,0.3983757495880127,-0.7808231711387634,-0.9249735474586487,-0.7918890118598938,-0.8752206563949585,-0.834891676902771...]. | PASS |
| 3: Channel 1 is identical to the array [0,0,0.9947003126144409,0.7705774307250977,0.9109300374984741,0.770668089389801,0.9842367768287659,0.32022905349731445,-0.9348858594894409,-0.8055058121681213,-0.8837442398071289,-0.8007677793502808,-0.9286617636680603,-0.6026888489723206,0.7909697890281677,0.8679972290992737...]. | PASS |
| 4: Channel 0 is identical to the array [0,0,0.9734255075454712,0.8085748553276062,0.8596614599227905,0.8377395868301392,0.18206258118152618,-0.06961169838905334,0.03773331642150879,-0.007562130689620972,-0.018085837364196777,0.029709070920944214,-0.021690011024475098,-0.0055168867111206055,0.05647382140159607,-0.4439384937286377...]. | PASS |
| 4: Channel 1 is identical to the array [0,0,0.971980094909668,0.8048999309539795,0.8850500583648682,0.18059250712394714,0.02772340178489685,-0.2852807343006134,-0.7788605690002441,-0.0375840961933136,-0.008258610963821411,0.07240849733352661,-0.33466458320617676,-0.7563189268112183,-0.020491480827331543,-0.03146648406982422...]. | PASS |
| 5.1: Channel 0 is identical to the array [0,0,2.3021068572998047,2.0779097080230713,1.5364117622375488,0.8359494805335999,-0.21231389045715332,-0.00529266893863678,0.836210310459137,1.0198438167572021,0.3261905908584595,-0.6783384084701538,-1.057640790939331,-0.5491994619369507,0.2516633868217468,-0.10923552513122559...]. | PASS |
| 5.1: Channel 1 is identical to the array [0,0,2.407027244567871,1.8516432046890259,1.2457610368728638,0.5805021524429321,0.36253032088279724,0.16488611698150635,-0.7450209259986877,-1.5345406532287598,-1.9043262004852295,-0.7297847867012024,0.01058971881866455,0.7125816345214844,1.7535796165466309,0.26786839962005615...]. | PASS |
| Convolver output equals [0,0,0.3311063051223755,0.6248595714569092,0.8481203317642212,0.9757021069526672,0.9932119250297546,0.898674488067627,0.7027547359466553,0.4275550842285156,0.1041216254234314,-0.23105812072753906,-0.5401713848114014,-0.7883464097976685,-0.9475855827331543,-0.9999247789382935...] with an element-wise tolerance of {"absoluteThreshold":4.1724e-7,"relativeThreshold":0}. | PASS |
| new AudioBuffer({numberOfChannels: 1, length: 2, sampleRate: 8192}) did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [1-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [2-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [3-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [4-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [5.1-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| > [1-channel input] produces 1-channel output | PASS |
| > [2-channel input] produces 2-channel output | PASS |
| > [3-channel input] 3->2 downmix producing 2-channel output | PASS |
| > [4-channel input] 4->2 downmix producing 2-channel output | PASS |
| > [5.1-channel input] 5.1->2 downmix producing 2-channel output | PASS |
| > [initialize] Convolver response with one channel | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/sample-accurate-scheduling.html (16/16, 100.00%, 0.28% of total) | OK |
| 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...]. | PASS |
| Non-zero sample found at sample offset 0 is true. | PASS |
| Non-zero sample found at sample offset 1000 is true. | PASS |
| Non-zero sample found at sample offset 1005 is true. | PASS |
| Non-zero sample found at sample offset 20000 is true. | PASS |
| Non-zero sample found at sample offset 21234 is true. | PASS |
| Non-zero sample found at sample offset 3 is true. | PASS |
| Non-zero sample found at sample offset 37590 is true. | PASS |
| Non-zero sample found at sample offset 512 is true. | PASS |
| Non-zero sample found at sample offset 517 is true. | PASS |
| Number of impulses found is equal to 9. | PASS |
| bad offset is equal to 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 12 assertions) | PASS |
| > [test] Test sample-accurate scheduling | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-timing-info.https.html (12/12, 100.00%, 0.21% of total) | OK |
| currentFrame from the processor at 0 is equal to 0. | PASS |
| currentFrame from the processor at 128 is equal to 128. | PASS |
| currentFrame from the processor at 256 is equal to 256. | PASS |
| currentFrame from the processor at 384 is equal to 384. | PASS |
| currentTime from the processor at 0 is equal to 0. | PASS |
| currentTime from the processor at 0.0026666666666666666 is equal to 0.0026666666666666666. | PASS |
| currentTime from the processor at 0.005333333333333333 is equal to 0.005333333333333333. | PASS |
| currentTime from the processor at 0.008 is equal to 0.008. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Check the timing information from AudioWorkletProcessor] All assertions passed. (total 8 assertions) | PASS |
| > [Check the timing information from AudioWorkletProcessor] | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/panner-equalpower-stereo.html (8/8, 100.00%, 0.14% of total) | OK |
| Error in left channel gain values is less than or equal to 0.0000013. | PASS |
| Error in right channel gain values is less than or equal to 0.0000013. | PASS |
| Number of impulses found is equal to 100. | PASS |
| Offsets of impulses at the wrong position is identical to the array []. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 4 assertions) | PASS |
| > [test] Equal-power panner model of AudioPannerNode with stereo source | PASS |
| /webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html (45/45, 100.00%, 0.78% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new StereoPannerNode() threw TypeError: "Failed to construct 'StereoPannerNode': 1 argument required, but only 0 present.". | PASS |
| new StereoPannerNode(1) threw TypeError: "Failed to construct 'StereoPannerNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new StereoPannerNode(c, {"channelCount":0}) threw NotSupportedError: "Failed to construct 'StereoPannerNode': The channelCount provided (0) is outside the range [1, 2].". | PASS |
| new StereoPannerNode(c, {"channelCount":1}) did not throw an exception. | PASS |
| new StereoPannerNode(c, {"channelCount":2}) did not throw an exception. | PASS |
| new StereoPannerNode(c, {"channelCount":3}) threw NotSupportedError: "Failed to construct 'StereoPannerNode': The channelCount provided (3) is outside the range [1, 2].". | PASS |
| new StereoPannerNode(c, {"channelCount":99}) threw NotSupportedError: "Failed to construct 'StereoPannerNode': The channelCount provided (99) is outside the range [1, 2].". | PASS |
| new StereoPannerNode(c, {"channelCountMode":"clamped-max"}) did not throw an exception. | PASS |
| new StereoPannerNode(c, {"channelCountMode":"explicit"}) did not throw an exception. | PASS |
| new StereoPannerNode(c, {"channelCountMode":"foobar"}) threw TypeError: "Failed to construct 'StereoPannerNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS |
| new StereoPannerNode(c, {"channelCountMode":"max"}) threw NotSupportedError: "Failed to construct 'StereoPannerNode': StereoPanner: 'max' is not allowed". | PASS |
| new StereoPannerNode(c, {"channelInterpretation":"discrete"}) did not throw an exception. | PASS |
| new StereoPannerNode(c, {"channelInterpretation":"foobar"}) threw TypeError: "Failed to construct 'StereoPannerNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new StereoPannerNode(c, {"channelInterpretation":"speakers"}) did not throw an exception. | PASS |
| new StereoPannerNode(context, 42) threw TypeError: "Failed to construct 'StereoPannerNode': parameter 2 ('options') is not an object.". | PASS |
| node.channelCount is equal to 1. | PASS |
| node.channelCount is equal to 2. | PASS |
| node.channelCountMode is equal to clamped-max. | PASS |
| node.channelCountMode is equal to explicit. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node0 = new StereoPannerNode(context) did not throw an exception. | PASS |
| node0 instanceof StereoPannerNode is equal to true. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to clamped-max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.numberOfInputs is equal to 1. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node0.pan.value is equal to 0. | PASS |
| node1 = new StereoPannerNode(, {"pan":0.75}) did not throw an exception. | PASS |
| node1 instanceof StereoPannerNode is equal to true. | PASS |
| node1.pan.value is equal to 0.75. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [constructor with options] All assertions passed. (total 3 assertions) | PASS |
| < [default constructor] All assertions passed. (total 8 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 18 assertions) | PASS |
| > [constructor with options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/audioparam-exceptional-values.html (59/59, 100.00%, 1.03% of total) | OK |
| Creating context for testing did not throw an exception. | PASS |
| gain.gain.exponentialRampToValueAtTime(-1e-100,1) threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).". | PASS |
| gain.gain.exponentialRampToValueAtTime(-Infinity,1) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.exponentialRampToValueAtTime(0,1) threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).". | PASS |
| gain.gain.exponentialRampToValueAtTime(1,-1) threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1". | PASS |
| gain.gain.exponentialRampToValueAtTime(1,-Infinity) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.exponentialRampToValueAtTime(1,Infinity) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.exponentialRampToValueAtTime(1,NaN) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.exponentialRampToValueAtTime(1e-100,1) threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).". | PASS |
| gain.gain.exponentialRampToValueAtTime(Infinity,1) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.exponentialRampToValueAtTime(NaN,1) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.linearRampToValueAtTime(-Infinity,1) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.linearRampToValueAtTime(1,-1) threw RangeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1". | PASS |
| gain.gain.linearRampToValueAtTime(1,-Infinity) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.linearRampToValueAtTime(1,Infinity) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.linearRampToValueAtTime(1,NaN) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.linearRampToValueAtTime(Infinity,1) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.linearRampToValueAtTime(NaN,1) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.setTargetAtTime(-Infinity,1,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.setTargetAtTime(1,-1,1) threw RangeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': Time must be a finite non-negative number: -1". | PASS |
| gain.gain.setTargetAtTime(1,-Infinity,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setTargetAtTime(1,1,-1) threw RangeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': Time constant must be a finite non-negative number: -1". | PASS |
| gain.gain.setTargetAtTime(1,1,-Infinity) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setTargetAtTime(1,1,Infinity) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setTargetAtTime(1,1,NaN) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setTargetAtTime(1,Infinity,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setTargetAtTime(1,NaN,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setTargetAtTime(Infinity,1,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.setTargetAtTime(NaN,1,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.setValueAtTime(-Infinity,1) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.setValueAtTime(1,-1) threw RangeError: "Failed to execute 'setValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1". | PASS |
| gain.gain.setValueAtTime(1,-Infinity) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setValueAtTime(1,Infinity) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setValueAtTime(1,NaN) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setValueAtTime(Infinity,1) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.setValueAtTime(NaN,1) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.setValueCurveAtTime([0,0,0],-1,1) threw RangeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': Time must be a finite non-negative number: -1". | PASS |
| gain.gain.setValueCurveAtTime([0,0,0],-Infinity,1) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setValueCurveAtTime([0,0,0],1,-1) threw RangeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': Duration must be a finite positive number: -1". | PASS |
| gain.gain.setValueCurveAtTime([0,0,0],Infinity,1) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setValueCurveAtTime([0,0,0],NaN,1) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS |
| gain.gain.setValueCurveAtTime([1,2,Infinity,3],1,1) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.setValueCurveAtTime([1,NaN,2,3],1,1) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS |
| gain.gain.setValueCurveAtTime(curve, 1, -1) threw RangeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': Duration must be a finite positive number: -1". | PASS |
| gain.gain.setValueCurveAtTime(curve, 1, 0) threw RangeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': Duration must be a finite positive number: 0". | PASS |
| # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [special cases 1] All assertions passed. (total 9 assertions) | PASS |
| < [special cases 2] All assertions passed. (total 3 assertions) | PASS |
| < [test setValueCurve] All assertions passed. (total 5 assertions) | PASS |
| < [test time] All assertions passed. (total 15 assertions) | PASS |
| < [test value] All assertions passed. (total 12 assertions) | PASS |
| > [initialize] | PASS |
| > [special cases 1] Test exceptions for finite values | PASS |
| > [special cases 2] Test special cases for expeonentialRamp | PASS |
| > [test setValueCurve] Test non-finite arguments for setValueCurveAtTime | PASS |
| > [test time] Test non-finite arguments for AudioParam time | PASS |
| > [test value] Test non-finite arguments for AudioParam value | PASS |
| /webaudio/the-audio-api/the-offlineaudiocontext-interface/current-time-block-size.html (1/1, 100.00%, 0.02% of total) | OK |
| Test currentTime at completion of OfflineAudioContext rendering | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-one-sample-loop.html (5/5, 100.00%, 0.09% of total) | OK |
| Rendered data contains only the constant 1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [one-sample-loop] All assertions passed. (total 1 assertions) | PASS |
| > [one-sample-loop] | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/panner-automation-equalpower-stereo.html (8/8, 100.00%, 0.14% of total) | OK |
| Error in left channel gain values is less than or equal to 0.0000013. | PASS |
| Error in right channel gain values is less than or equal to 0.0000013. | PASS |
| Number of impulses found is equal to 100. | PASS |
| Offsets of impulses at the wrong position is identical to the array []. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 4 assertions) | PASS |
| > [test] Equal-power panner model of AudioPannerNode with stereo source | PASS |
| /webaudio/the-audio-api/the-analysernode-interface/test-analyser-output.html (1/1, 100.00%, 0.02% of total) | TIMEOUT |
| AnalyserNode output | NOTRUN |
| /webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html (37/37, 100.00%, 0.64% of total) | OK |
| Initialize context for testing did not throw an exception. | PASS |
| channelCountMode is equal to max. | PASS |
| channelInterpretation is equal to speakers. | PASS |
| context.createIIRFilter does exist. | PASS |
| createIIRFilter() threw TypeError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': 2 arguments required, but only 0 present.". | PASS |
| createIIRFilter([1, 'abc', []], [1]) threw TypeError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': The provided double value is non-finite.". | PASS |
| createIIRFilter([1, NaN, Infinity], [1]) threw TypeError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': The provided double value is non-finite.". | PASS |
| createIIRFilter([1], [1, NaN, Infinity]) threw TypeError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': The provided double value is non-finite.". | PASS |
| createIIRFilter([1], []) threw NotSupportedError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': The number of feedback coefficients provided (0) is outside the range [1, 20].". | PASS |
| createIIRFilter([1], new Float32Array(2)) threw InvalidStateError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': First feedback coefficient cannot be zero.". | PASS |
| createIIRFilter([1], new Float32Array(21)) threw NotSupportedError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': The number of feedback coefficients provided (21) is outside the range [1, 20].". | PASS |
| createIIRFilter([], [1]) threw NotSupportedError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': The number of feedforward coefficients provided (0) is outside the range [1, 20].". | PASS |
| createIIRFilter([], []) threw NotSupportedError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': The number of feedback coefficients provided (0) is outside the range [1, 20].". | PASS |
| createIIRFilter(new Float32Array(1)) threw TypeError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': 2 arguments required, but only 1 present.". | PASS |
| createIIRFilter(new Float32Array(10), [1]) threw InvalidStateError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': At least one feedforward coefficient must be non-zero.". | PASS |
| createIIRFilter(new Float32Array(20), new Float32Array(20)) did not throw an exception. | PASS |
| createIIRFilter(new Float32Array(21), [1]) threw NotSupportedError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': The number of feedforward coefficients provided (21) is outside the range [1, 20].". | PASS |
| createIIRFilter(null, null) threw TypeError: "Failed to execute 'createIIRFilter' on 'BaseAudioContext': The provided value cannot be converted to a sequence.". | PASS |
| getFrequencyResponse(new Float32Array(1), new Float32Array(1), null) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'IIRFilterNode': parameter 3 is not of type 'Float32Array'.". | PASS |
| getFrequencyResponse(new Float32Array(1), null, new Float32Array(1)) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'IIRFilterNode': parameter 2 is not of type 'Float32Array'.". | PASS |
| getFrequencyResponse(new Float32Array(10), new Float32Array(1), new Float32Array(20)) threw InvalidAccessError: "Failed to execute 'getFrequencyResponse' on 'IIRFilterNode': The magResponse length provided (1) is outside the range [10, 10].". | PASS |
| getFrequencyResponse(new Float32Array(10), new Float32Array(20), new Float32Array(1)) threw InvalidAccessError: "Failed to execute 'getFrequencyResponse' on 'IIRFilterNode': The magResponse length provided (20) is outside the range [10, 10].". | PASS |
| getFrequencyResponse(null, new Float32Array(1), new Float32Array(1)) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'IIRFilterNode': parameter 1 is not of type 'Float32Array'.". | PASS |
| numberOfInputs is equal to 1. | PASS |
| numberOfOutputs is equal to 1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [exceptions-createIIRFilter] All assertions passed. (total 14 assertions) | PASS |
| < [exceptions-getFrequencyData] All assertions passed. (total 5 assertions) | PASS |
| < [existence] All assertions passed. (total 1 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [parameters] All assertions passed. (total 4 assertions) | PASS |
| > [exceptions-createIIRFilter] | PASS |
| > [exceptions-getFrequencyData] | PASS |
| > [existence] | PASS |
| > [initialize] | PASS |
| > [parameters] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html (7/7, 100.00%, 0.12% of total) | OK |
| Reference[0:127] contains only the constant 1. | PASS |
| Test[0:127] contains only the constant 1. | PASS |
| Test[128:] is identical to the array [0.10000000149011612,0.10001351684331894,0.10002703964710236,0.10004056245088577,0.10005408525466919,0.1000676080584526,0.10008113831281662,0.10009466856718063,0.10010819882154465,0.10012172907590866,0.10013526678085327,0.10014880448579788,0.10016234219074249,0.1001758798956871,0.10018942505121231,0.10020297020673752...]. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Test exponentialRampToValue with end time in the past | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html (37/37, 100.00%, 0.64% of total) | OK |
| Creating AudioWOrkletNode with options: {"numberOfInputs":7,"numberOfOutputs":18,"channelCount":4,"channelCountMode":"clamped-max","channelInterpretation":"discrete"} did not throw an exception. | PASS |
| Creating AudioWOrkletNode without options did not throw an exception. | PASS |
| Creating AudioWorkletNode with channelCount 0 threw NotSupportedError: "Failed to construct 'AudioWorkletNode': The channel count provided (0) is outside the range [1, 32].". | PASS |
| Creating AudioWorkletNode with channelCount 33 threw NotSupportedError: "Failed to construct 'AudioWorkletNode': The channel count provided (33) is outside the range [1, 32].". | PASS |
| Creating AudioWorkletNode with channelCountMode "foobar" threw TypeError: "Failed to construct 'AudioWorkletNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS |
| Creating AudioWorkletNode with channelCountMode "foobar" threw TypeError: "Failed to construct 'AudioWorkletNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| testNode is instance of AudioWorkletNode is equal to true. | PASS |
| testNode.channelCount (default) is equal to 2. | PASS |
| testNode.channelCount is equal to 17. | PASS |
| testNode.channelCount is equal to 4. | PASS |
| testNode.channelCountMode (default) is equal to max. | PASS |
| testNode.channelCountMode (set via options.clamped-max) is equal to clamped-max. | PASS |
| testNode.channelCountMode (set via options.explicit) is equal to explicit. | PASS |
| testNode.channelCountMode (set via options.max) is equal to max. | PASS |
| testNode.channelCountMode is equal to clamped-max. | PASS |
| testNode.channelInterpretation (default) is equal to speakers. | PASS |
| testNode.channelInterpretation (set via options.discrete) is equal to discrete. | PASS |
| testNode.channelInterpretation (set via options.speakers) is equal to speakers. | PASS |
| testNode.channelInterpretation is equal to discrete. | PASS |
| testNode.numberOfInputs (default) is equal to 1. | PASS |
| testNode.numberOfInputs is equal to 7. | PASS |
| testNode.numberOfOutputs (default) is equal to 1. | PASS |
| testNode.numberOfOutputs is equal to 18. | PASS |
| # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [audio-node-options] All assertions passed. (total 6 assertions) | PASS |
| < [channel-count-mode] All assertions passed. (total 4 assertions) | PASS |
| < [channel-count] All assertions passed. (total 3 assertions) | PASS |
| < [channel-interpretation] All assertions passed. (total 3 assertions) | PASS |
| < [setup] All assertions passed. (total 0 assertions) | PASS |
| < [without-audio-node-options] All assertions passed. (total 7 assertions) | PASS |
| > [audio-node-options] | PASS |
| > [channel-count-mode] | PASS |
| > [channel-count] | PASS |
| > [channel-interpretation] | PASS |
| > [setup] | PASS |
| > [without-audio-node-options] | PASS |
| /webaudio/the-audio-api/the-analysernode-interface/test-analyser-scale.html (1/1, 100.00%, 0.02% of total) | TIMEOUT |
| /webaudio/the-audio-api/the-analysernode-interface/test-analyser-scale.html | TIMEOUT |
| /webaudio/the-audio-api/the-delaynode-interface/delaynode-channel-count-1.html (1/1, 100.00%, 0.02% of total) | OK |
| Test that DelayNode output channelCount matches that of the delayed input | FAIL |
| /webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input.html (30/30, 100.00%, 0.52% of total) | OK |
| 1-channel source: Channel #0 contains only the constant 0. | PASS |
| 1-channel source: Channel #1 contains only the constant 0. | PASS |
| 1-channel source: Channel #2 contains only the constant 0. | PASS |
| 1-channel source: Channel #3 contains only the constant 1. | PASS |
| 1-channel source: Channel #4 contains only the constant 0. | PASS |
| 1-channel source: Channel #5 contains only the constant 0. | PASS |
| 2-channel source: Channel #0 contains only the constant 1.5. | PASS |
| 2-channel source: Channel #1 contains only the constant 0. | PASS |
| 2-channel source: Channel #2 contains only the constant 0. | PASS |
| 2-channel source: Channel #3 contains only the constant 0. | PASS |
| 2-channel source: Channel #4 contains only the constant 0. | PASS |
| 2-channel source: Channel #5 contains only the constant 0. | PASS |
| 3-channel source: Channel #0 contains only the constant 1. | PASS |
| 3-channel source: Channel #1 contains only the constant 0. | PASS |
| 3-channel source: Channel #2 contains only the constant 0. | PASS |
| 3-channel source: Channel #3 contains only the constant 0. | PASS |
| 3-channel source: Channel #4 contains only the constant 0. | PASS |
| 3-channel source: Channel #5 contains only the constant 0. | PASS |
| Channel #0 contains only the constant 1. | PASS |
| Channel #1 contains only the constant -1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [merging-to-stereo] All assertions passed. (total 2 assertions) | PASS |
| < [silent-channel] All assertions passed. (total 6 assertions) | PASS |
| < [stereo-down-mixing] All assertions passed. (total 6 assertions) | PASS |
| < [undefined-channel-layout] All assertions passed. (total 6 assertions) | PASS |
| > [merging-to-stereo] | PASS |
| > [silent-channel] | PASS |
| > [stereo-down-mixing] | PASS |
| > [undefined-channel-layout] | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/panner-equalpower.html (14/14, 100.00%, 0.24% of total) | OK |
| Error in left channel gain values is less than or equal to 0.0000013. | PASS |
| Error in right channel gain values is less than or equal to 0.0000013. | PASS |
| Mono: Left and right channels is identical to the array [0,0.04429904744029045,0.08842403441667557,0.1322016716003418,0.1754598766565323,0.21802882850170135,0.2597411572933197,0.3004331588745117,0.3399447500705719,0.3781208395957947,0.4148113429546356,0.4498721659183502,0.48316577076911926,0.5145610570907593,0.5439349412918091,0.5711718797683716...]. | PASS |
| Number of impulses found is equal to 100. | PASS |
| Offsets of impulses at the wrong position is identical to the array []. | PASS |
| Stereo: Left and right channels is identical to the array [0,0.06264831125736237,0.12505047023296356,0.18696139752864838,0.24813774228096008,0.30833932757377625,0.3673294484615326,0.4248766303062439,0.4807544946670532,0.53474360704422,0.5866318345069885,0.636215329170227,0.6832996010780334,0.7276992201805115,0.7692402005195618,0.8077589869499207...]. | PASS |
| # AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [mono source=listener] All assertions passed. (total 1 assertions) | PASS |
| < [stereo source=listener] All assertions passed. (total 1 assertions) | PASS |
| < [test] All assertions passed. (total 4 assertions) | PASS |
| > [mono source=listener] Source and listener at the same position | PASS |
| > [stereo source=listener] Source and listener at the same position | PASS |
| > [test] Equal-power panner model of AudioPannerNode | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/k-rate-gain.html (12/12, 100.00%, 0.21% of total) | OK |
| GainNode: Difference between a-rate and k-rate GainNode is not constantly 0 (contains 7937 different values). | PASS |
| GainNode: Output of a-rate GainNode is identical to the array [0,0.338695228099823,0.63726407289505,0.860418975353241,0.9817950129508972,0.9870702624320984,0.8756487965583801,0.6607323288917542,0.36775603890419006,0.03137516230344772,-0.30863043665885925,-0.6120643019676208,-0.8430606722831726,-0.9743298888206482,-0.9903783798217773,-0.8893347382545471...]. | PASS |
| GainNode: Output of k-rate GainNode is identical to the array [0,0.3387375771999359,0.6374233961105347,0.8607417345046997,0.9822861552238464,0.9876875877380371,0.8763060569763184,0.6613109707832336,0.36812418699264526,0.03141050040721893,-0.30901670455932617,-0.6129070520401001,-0.8443272113800049,-0.975915789604187,-0.9921146035194397,-0.8910053968429565...]. | PASS |
| GainNode: Setting gain.automationRate to "k-rate" is equal to k-rate. | PASS |
| GainNode: a-rate node:gain.linearRampToValueAtTime(0,1) did not throw an exception. | PASS |
| GainNode: a-rate node:gain.setValueAtTime(1,0) did not throw an exception. | PASS |
| GainNode: k-rate node: gain.linearRampToValueAtTime(0,1) did not throw an exception. | PASS |
| GainNode: k-rate node: gain.setValueAtTime(1,0) did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Test k-rate GainNode] All assertions passed. (total 8 assertions) | PASS |
| > [Test k-rate GainNode] | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam.https.html (9/9, 100.00%, 0.16% of total) | OK |
| Default gain value of gainWorkletNode is equal to 0.7070000171661377. | PASS |
| The rendered buffer contains only the constant 0. | PASS |
| Value of gainWorkletParam after setter = 0.1 is equal to 0.10000000149011612. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Initializing AudioWorklet and Context] All assertions passed. (total 0 assertions) | PASS |
| < [Verifying AudioParam in AudioWorkletNode] All assertions passed. (total 3 assertions) | PASS |
| > [Initializing AudioWorklet and Context] | PASS |
| > [Verifying AudioParam in AudioWorkletNode] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/k-rate-constant-source.html (16/16, 100.00%, 0.28% of total) | OK |
| k-rate offset k-rate output [0: 127] contains only the constant 0. | PASS |
| k-rate offset k-rate output [128: 255] contains only the constant 2.5. | PASS |
| k-rate offset k-rate output [256: 383] contains only the constant 5. | PASS |
| k-rate offset k-rate output [384: 511] contains only the constant 7.5. | PASS |
| k-rate offset: Difference between a-rate and k-rate ConstantSourceNode is not constantly 0 (contains 508 different values). | PASS |
| 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...]. | PASS |
| k-rate offset: Output of k-rate ConstantSourceNode is identical to the array [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...]. | PASS |
| k-rate offset: Setting offset.automationRate to "k-rate" is equal to k-rate. | PASS |
| k-rate offset: a-rate node:offset.linearRampToValueAtTime(10,0.064) did not throw an exception. | PASS |
| k-rate offset: a-rate node:offset.setValueAtTime(0,0) did not throw an exception. | PASS |
| k-rate offset: k-rate node: offset.linearRampToValueAtTime(10,0.064) did not throw an exception. | PASS |
| k-rate offset: k-rate node: offset.setValueAtTime(0,0) did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [ConstantSource k-rate offset] All assertions passed. (total 12 assertions) | PASS |
| > [ConstantSource k-rate offset] | PASS |
| /webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html (28/28, 100.00%, 0.49% of total) | OK |
| 1: Channel 0 is identical to the array [0,0,0.9485260844230652,0.8472318053245544,1.7718820571899414,1.7117778062820435,1.668781042098999,1.722577452659607,1.6410210132598877,1.8474148511886597,1.1939716339111328,0.20856022834777832,-0.526597797870636,-1.5727121829986572,-1.800194263458252,-1.6267807483673096...]. | PASS |
| 1: Channel 1 is identical to the array [0,0,0,0.9485260844230652,0.8472318053245544,1.7718820571899414,1.7117778062820435,1.668781042098999,1.722577452659607,1.6410210132598877,1.8474148511886597,1.1939716339111328,0.20856022834777832,-0.526597797870636,-1.5727121829986572,-1.800194263458252...]. | PASS |
| 2: Channel 0 is identical to the array [0,0,0.9485260844230652,0.8472318053245544,1.818056344985962,1.6351234912872314,1.7563550472259521,1.628699541091919,1.7798327207565308,1.309612512588501,-0.5365101099014282,-1.5863289833068848,-1.8087177276611328,-1.5926568508148193,-1.803882360458374,-1.4375805854797363...]. | PASS |
| 2: Channel 1 is identical to the array [0,0,0,0.9485260844230652,0.8472318053245544,1.818056344985962,1.6351234912872314,1.7563550472259521,1.628699541091919,1.7798327207565308,1.309612512588501,-0.5365101099014282,-1.5863289833068848,-1.8087177276611328,-1.5926568508148193,-1.803882360458374...]. | PASS |
| 3: Channel 0 is identical to the array [0,0,0.9485260844230652,0.8472318053245544,1.818056344985962,1.6351234912872314,1.7563550472259521,1.628699541091919,1.7798327207565308,1.309612512588501,-0.5365101099014282,-1.5863289833068848,-1.8087177276611328,-1.5926568508148193,-1.803882360458374,-1.4375805854797363...]. | PASS |
| 3: Channel 1 is identical to the array [0,0,0,0.9485260844230652,0.8472318053245544,1.818056344985962,1.6351234912872314,1.7563550472259521,1.628699541091919,1.7798327207565308,1.309612512588501,-0.5365101099014282,-1.5863289833068848,-1.8087177276611328,-1.5926568508148193,-1.803882360458374...]. | PASS |
| 4: Channel 0 is identical to the array [0,0,0.9734255075454712,0.8085748553276062,1.8316415548324585,1.6426395177841187,1.067112684249878,0.1109808087348938,0.06545671820640564,-0.2928428649902344,-0.7969464063644409,-0.007875025272369385,-0.02994862198829651,0.066891610622406,-0.2781907618045807,-1.200257420539856...]. | PASS |
| 4: Channel 1 is identical to the array [0,0,0,0.9734255075454712,0.8085748553276062,1.8316415548324585,1.6426395177841187,1.067112684249878,0.1109808087348938,0.06545671820640564,-0.2928428649902344,-0.7969464063644409,-0.007875025272369385,-0.02994862198829651,0.066891610622406,-0.2781907618045807...]. | PASS |
| 5.1: Channel 0 is identical to the array [0,0,2.3021068572998047,2.0779097080230713,3.94343900680542,2.6875927448272705,1.0334471464157104,0.5752094984054565,1.1987406015396118,1.1847299337387085,-0.41883033514022827,-2.212879180908203,-2.9619669914245605,-1.2789843082427979,0.2622531056404114,0.6033461093902588...]. | PASS |
| 5.1: Channel 1 is identical to the array [0,0,0,2.3021068572998047,2.0779097080230713,3.94343900680542,2.6875927448272705,1.0334471464157104,0.5752094984054565,1.1987406015396118,1.1847299337387085,-0.41883033514022827,-2.212879180908203,-2.9619669914245605,-1.2789843082427979,0.2622531056404114...]. | PASS |
| Output with delayed setting of convolver buffer is not constantly 0 (contains 767 different values). | PASS |
| new AudioBuffer({numberOfChannels: 2, length: 4, sampleRate: 8192}) did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 7 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [1-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [2-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [3-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [4-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [5.1-channel input] All assertions passed. (total 2 assertions) | PASS |
| < [delayed buffer set] All assertions passed. (total 1 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| > [1-channel input] produces 2-channel output | PASS |
| > [2-channel input] produces 2-channel output | PASS |
| > [3-channel input] 3->2 downmix producing 2-channel output | PASS |
| > [4-channel input] 4->2 downmix producing 2-channel output | PASS |
| > [5.1-channel input] 5.1->2 downmix producing 2-channel output | PASS |
| > [delayed buffer set] Delayed set of 4-channel response | PASS |
| > [initialize] Convolver response with one channel | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html (7/7, 100.00%, 0.12% of total) | OK |
| Reference[0:127] contains only the constant 1. | PASS |
| Test[0:127] contains only the constant 1. | PASS |
| Test[128:] is identical to the array [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15...]. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Test setValueAtTime with startTime in the past | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueAtTime.html (106/106, 100.00%, 1.84% of total) | OK |
| Max error for test 0 at offset 0 is less than or equal to 6e-8. | PASS |
| Max error for test 1 at offset 1323 is less than or equal to 6e-8. | PASS |
| Max error for test 10 at offset 13230 is less than or equal to 6e-8. | PASS |
| Max error for test 11 at offset 14553 is less than or equal to 6e-8. | PASS |
| Max error for test 12 at offset 15876 is less than or equal to 6e-8. | PASS |
| Max error for test 13 at offset 17199 is less than or equal to 6e-8. | PASS |
| Max error for test 14 at offset 18522 is less than or equal to 6e-8. | PASS |
| Max error for test 15 at offset 19845 is less than or equal to 6e-8. | PASS |
| Max error for test 16 at offset 21168 is less than or equal to 6e-8. | PASS |
| Max error for test 17 at offset 22491 is less than or equal to 6e-8. | PASS |
| Max error for test 18 at offset 23814 is less than or equal to 6e-8. | PASS |
| Max error for test 19 at offset 25137 is less than or equal to 6e-8. | PASS |
| Max error for test 2 at offset 2646 is less than or equal to 6e-8. | PASS |
| Max error for test 20 at offset 26460 is less than or equal to 6e-8. | PASS |
| Max error for test 21 at offset 27783 is less than or equal to 6e-8. | PASS |
| Max error for test 22 at offset 29106 is less than or equal to 6e-8. | PASS |
| Max error for test 23 at offset 30429 is less than or equal to 6e-8. | PASS |
| Max error for test 24 at offset 31752 is less than or equal to 6e-8. | PASS |
| Max error for test 25 at offset 33075 is less than or equal to 6e-8. | PASS |
| Max error for test 26 at offset 34398 is less than or equal to 6e-8. | PASS |
| Max error for test 27 at offset 35721 is less than or equal to 6e-8. | PASS |
| Max error for test 28 at offset 37044 is less than or equal to 6e-8. | PASS |
| Max error for test 29 at offset 38367 is less than or equal to 6e-8. | PASS |
| Max error for test 3 at offset 3969 is less than or equal to 6e-8. | PASS |
| Max error for test 30 at offset 39690 is less than or equal to 6e-8. | PASS |
| Max error for test 31 at offset 41013 is less than or equal to 6e-8. | PASS |
| Max error for test 32 at offset 42336 is less than or equal to 6e-8. | PASS |
| Max error for test 33 at offset 43659 is less than or equal to 6e-8. | PASS |
| Max error for test 34 at offset 44982 is less than or equal to 6e-8. | PASS |
| Max error for test 35 at offset 46305 is less than or equal to 6e-8. | PASS |
| Max error for test 36 at offset 47628 is less than or equal to 6e-8. | PASS |
| Max error for test 37 at offset 48951 is less than or equal to 6e-8. | PASS |
| Max error for test 38 at offset 50274 is less than or equal to 6e-8. | PASS |
| Max error for test 39 at offset 51597 is less than or equal to 6e-8. | PASS |
| Max error for test 4 at offset 5292 is less than or equal to 6e-8. | PASS |
| Max error for test 40 at offset 52920 is less than or equal to 6e-8. | PASS |
| Max error for test 41 at offset 54243 is less than or equal to 6e-8. | PASS |
| Max error for test 42 at offset 55566 is less than or equal to 6e-8. | PASS |
| Max error for test 43 at offset 56889 is less than or equal to 6e-8. | PASS |
| Max error for test 44 at offset 58212 is less than or equal to 6e-8. | PASS |
| Max error for test 45 at offset 59535 is less than or equal to 6e-8. | PASS |
| Max error for test 46 at offset 60858 is less than or equal to 6e-8. | PASS |
| Max error for test 47 at offset 62181 is less than or equal to 6e-8. | PASS |
| Max error for test 48 at offset 63504 is less than or equal to 6e-8. | PASS |
| Max error for test 49 at offset 64827 is less than or equal to 6e-8. | PASS |
| Max error for test 5 at offset 6615 is less than or equal to 6e-8. | PASS |
| Max error for test 50 at offset 66150 is less than or equal to 6e-8. | PASS |
| Max error for test 51 at offset 67473 is less than or equal to 6e-8. | PASS |
| Max error for test 52 at offset 68796 is less than or equal to 6e-8. | PASS |
| Max error for test 53 at offset 70119 is less than or equal to 6e-8. | PASS |
| Max error for test 54 at offset 71442 is less than or equal to 6e-8. | PASS |
| Max error for test 55 at offset 72765 is less than or equal to 6e-8. | PASS |
| Max error for test 56 at offset 74088 is less than or equal to 6e-8. | PASS |
| Max error for test 57 at offset 75411 is less than or equal to 6e-8. | PASS |
| Max error for test 58 at offset 76734 is less than or equal to 6e-8. | PASS |
| Max error for test 59 at offset 78057 is less than or equal to 6e-8. | PASS |
| Max error for test 6 at offset 7938 is less than or equal to 6e-8. | PASS |
| Max error for test 60 at offset 79380 is less than or equal to 6e-8. | PASS |
| Max error for test 61 at offset 80703 is less than or equal to 6e-8. | PASS |
| Max error for test 62 at offset 82026 is less than or equal to 6e-8. | PASS |
| Max error for test 63 at offset 83349 is less than or equal to 6e-8. | PASS |
| Max error for test 64 at offset 84672 is less than or equal to 6e-8. | PASS |
| Max error for test 65 at offset 85995 is less than or equal to 6e-8. | PASS |
| Max error for test 66 at offset 87318 is less than or equal to 6e-8. | PASS |
| Max error for test 67 at offset 88641 is less than or equal to 6e-8. | PASS |
| Max error for test 68 at offset 89964 is less than or equal to 6e-8. | PASS |
| Max error for test 69 at offset 91287 is less than or equal to 6e-8. | PASS |
| Max error for test 7 at offset 9261 is less than or equal to 6e-8. | PASS |
| Max error for test 70 at offset 92610 is less than or equal to 6e-8. | PASS |
| Max error for test 71 at offset 93933 is less than or equal to 6e-8. | PASS |
| Max error for test 72 at offset 95256 is less than or equal to 6e-8. | PASS |
| Max error for test 73 at offset 96579 is less than or equal to 6e-8. | PASS |
| Max error for test 74 at offset 97902 is less than or equal to 6e-8. | PASS |
| Max error for test 75 at offset 99225 is less than or equal to 6e-8. | PASS |
| Max error for test 76 at offset 100548 is less than or equal to 6e-8. | PASS |
| Max error for test 77 at offset 101871 is less than or equal to 6e-8. | PASS |
| Max error for test 78 at offset 103194 is less than or equal to 6e-8. | PASS |
| Max error for test 79 at offset 104517 is less than or equal to 6e-8. | PASS |
| Max error for test 8 at offset 10584 is less than or equal to 6e-8. | PASS |
| Max error for test 80 at offset 105840 is less than or equal to 6e-8. | PASS |
| Max error for test 81 at offset 107163 is less than or equal to 6e-8. | PASS |
| Max error for test 82 at offset 108486 is less than or equal to 6e-8. | PASS |
| Max error for test 83 at offset 109809 is less than or equal to 6e-8. | PASS |
| Max error for test 84 at offset 111132 is less than or equal to 6e-8. | PASS |
| Max error for test 85 at offset 112455 is less than or equal to 6e-8. | PASS |
| Max error for test 86 at offset 113778 is less than or equal to 6e-8. | PASS |
| Max error for test 87 at offset 115101 is less than or equal to 6e-8. | PASS |
| Max error for test 88 at offset 116424 is less than or equal to 6e-8. | PASS |
| Max error for test 89 at offset 117747 is less than or equal to 6e-8. | PASS |
| Max error for test 9 at offset 11907 is less than or equal to 6e-8. | PASS |
| Max error for test 90 at offset 119070 is less than or equal to 6e-8. | PASS |
| Max error for test 91 at offset 120393 is less than or equal to 6e-8. | PASS |
| Max error for test 92 at offset 121716 is less than or equal to 6e-8. | PASS |
| Max error for test 93 at offset 123039 is less than or equal to 6e-8. | PASS |
| Max error for test 94 at offset 124362 is less than or equal to 6e-8. | PASS |
| Max error for test 95 at offset 125685 is less than or equal to 6e-8. | PASS |
| Max error for test 96 at offset 127008 is less than or equal to 6e-8. | PASS |
| Max error for test 97 at offset 128331 is less than or equal to 6e-8. | PASS |
| Max error for test 98 at offset 129654 is less than or equal to 6e-8. | PASS |
| Max error for test 99 at offset 130977 is less than or equal to 6e-8. | PASS |
| Number of failed tests with an acceptable relative tolerance of 6e-8 is equal to 0. | PASS |
| Number of tests started and ended at the correct time is equal to 100. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 102 assertions) | PASS |
| > [test] AudioParam setValueAtTime() functionality. | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html (8/8, 100.00%, 0.14% of total) | OK |
| After disconnecting the source: Input array length contains only the constant 0. | PASS |
| Before connecting the source: Input array length contains only the constant 0. | PASS |
| First non-zero output is equal to 128. | PASS |
| While source is connected: Input array length contains only the constant 128. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 4 assertions) | PASS |
| > [test] Input array length should be zero for disconnected input | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/buffer-resampling.html (6/6, 100.00%, 0.10% of total) | OK |
| Interpolated sine wave equals [0,0.05756402015686035,0.11493714153766632,0.1719290316104889,0.22835081815719604,0.2840152978897095,0.3387379050254822,0.39233702421188354,0.4446350336074829,0.49545857310295105,0.5446388125419617,0.5920131206512451,0.6374237537384033,0.6807208061218262,0.7217600345611572,0.7604057788848877...] with an element-wise tolerance of {"absoluteThreshold":0.090348,"relativeThreshold":0}. | PASS |
| SNR (37.18 dB) is greater than or equal to 37.17. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [interpolate] All assertions passed. (total 2 assertions) | PASS |
| > [interpolate] Interpolation of AudioBuffers to context sample rate | PASS |
| /webaudio/the-audio-api/the-delaynode-interface/ctor-delay.html (47/47, 100.00%, 0.82% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new DelayNode() threw TypeError: "Failed to construct 'DelayNode': 1 argument required, but only 0 present.". | PASS |
| new DelayNode(1) threw TypeError: "Failed to construct 'DelayNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new DelayNode(c, {channelCount: 0}) threw NotSupportedError: "Failed to construct 'DelayNode': The channel count provided (0) is outside the range [1, 32].". | PASS |
| new DelayNode(c, {channelCount: 17}} did not throw an exception. | PASS |
| new DelayNode(c, {channelCount: 99}) threw NotSupportedError: "Failed to construct 'DelayNode': The channel count provided (99) is outside the range [1, 32].". | PASS |
| new DelayNode(c, {channelCountMode: "clamped-max"}) did not throw an exception. | PASS |
| new DelayNode(c, {channelCountMode: "explicit"}) did not throw an exception. | PASS |
| new DelayNode(c, {channelCountMode: "foobar"} threw TypeError: "Failed to construct 'DelayNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS |
| new DelayNode(c, {channelCountMode: "max"} did not throw an exception. | PASS |
| new DelayNode(c, {channelCountMode: "max"}) did not throw an exception. | PASS |
| new DelayNode(c, {channelInterpretation: "discrete"}) did not throw an exception. | PASS |
| new DelayNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Failed to construct 'DelayNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new DelayNode(c, {channelInterpretation: "speakers"}) did not throw an exception. | PASS |
| new DelayNode(context, 42) threw TypeError: "Failed to construct 'DelayNode': parameter 2 ('options') is not an object.". | PASS |
| node.channelCount is equal to 17. | PASS |
| node.channelCountMode after invalid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to clamped-max. | PASS |
| node.channelCountMode after valid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to max. | PASS |
| node.channelCountMode is equal to max. | PASS |
| node.channelInterpretation after invalid setter is equal to discrete. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node0 = new DelayNode(context) did not throw an exception. | PASS |
| node0 instanceof DelayNode is equal to true. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.delayTime.value is equal to 0. | PASS |
| node0.numberOfInputs is equal to 1. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node1 = new DelayNode(c, {"delayTime":0.5,"maxDelayTime":1.5}) did not throw an exception. | PASS |
| node1.delayTime.maxValue is equal to 1.5. | PASS |
| node1.delayTime.value is equal to 0.5. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [constructor options] All assertions passed. (total 3 assertions) | PASS |
| < [default constructor] All assertions passed. (total 8 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 20 assertions) | PASS |
| > [constructor options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/pannernode-basic.html (60/60, 100.00%, 1.04% of total) | OK |
| Initialize context and panner did not throw an exception. | PASS |
| Set panner.panningModel = "HRTF" did not throw an exception. | PASS |
| Set panner.panningModel = "equalpower" did not throw an exception. | PASS |
| inverse is equal to panner.distanceModel. | PASS |
| listener.forwardX is equal to 0. | PASS |
| listener.forwardY is equal to 0. | PASS |
| listener.forwardZ is equal to -1. | PASS |
| listener.positionX is equal to 0. | PASS |
| listener.positionY is equal to 0. | PASS |
| listener.positionZ is equal to 0. | PASS |
| listener.upX is equal to 0. | PASS |
| listener.upY is equal to 1. | PASS |
| listener.upZ is equal to 0. | PASS |
| panner.coneInnerAngle = 240.5 is equal to 240.5. | PASS |
| panner.coneInnerAngle is equal to 360. | PASS |
| panner.coneOuterAngle = 166.5 is equal to 166.5. | PASS |
| panner.coneOuterAngle is equal to 360. | PASS |
| panner.coneOuterGain = 0.25 is equal to 0.25. | PASS |
| panner.coneOuterGain is equal to 0. | PASS |
| panner.distanceModel = "exponential" did not throw an exception. | PASS |
| panner.distanceModel = "exponential" is equal to exponential. | PASS |
| panner.distanceModel = "invalid" did not throw an exception. | PASS |
| panner.distanceModel = "inverse" did not throw an exception. | PASS |
| panner.distanceModel = "inverse" is equal to inverse. | PASS |
| panner.distanceModel = "linear" did not throw an exception. | PASS |
| panner.distanceModel = "linear" is equal to linear. | PASS |
| panner.distanceModel is equal to exponential. | PASS |
| panner.maxDistance = 100.5 is equal to 100.5. | PASS |
| panner.maxDistance is equal to 10000. | PASS |
| panner.numberOfInputs is equal to 1. | PASS |
| panner.numberOfOutputs is equal to 1. | PASS |
| panner.orientationX is equal to 1. | PASS |
| panner.orientationY is equal to 0. | PASS |
| panner.orientationZ is equal to 0. | PASS |
| panner.panningModel = "HRTF" is equal to HRTF. | PASS |
| panner.panningModel = "equalpower" is equal to equalpower. | PASS |
| panner.panningModel = "invalid" did not throw an exception. | PASS |
| panner.panningModel = 1 did not throw an exception. | PASS |
| panner.panningModel after invalid setter is equal to HRTF. | PASS |
| panner.panningModel is equal to HRTF. | PASS |
| panner.panningModel is equal to equalpower. | PASS |
| panner.positionX is equal to 0. | PASS |
| panner.positionY is equal to 0. | PASS |
| panner.positionZ is equal to 0. | PASS |
| panner.refDistance = 270.5 is equal to 270.5. | PASS |
| panner.refDistance is equal to 1. | PASS |
| panner.rolloffFactor = 0.75 is equal to 0.75. | PASS |
| panner.rolloffFactor is equal to 1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [basic] All assertions passed. (total 22 assertions) | PASS |
| < [distance models] All assertions passed. (total 8 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [listener] All assertions passed. (total 9 assertions) | PASS |
| < [panning models] All assertions passed. (total 8 assertions) | PASS |
| > [basic] | PASS |
| > [distance models] | PASS |
| > [initialize] | PASS |
| > [listener] | PASS |
| > [panning models] | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/ctor-audiobuffersource.html (38/38, 100.00%, 0.66% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new AudioBufferSourceNode() threw TypeError: "Failed to construct 'AudioBufferSourceNode': 1 argument required, but only 0 present.". | PASS |
| new AudioBufferSourceNode(1) threw TypeError: "Failed to construct 'AudioBufferSourceNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new AudioBufferSourceNode(context, 42) threw TypeError: "Failed to construct 'AudioBufferSourceNode': parameter 2 ('options') is not an object.". | PASS |
| node = new AudioBufferSourceNode(c, {"buffer":{},"detune":0.5,"loop":true,"loopEnd":0.010416666666666666,"loopStart":0.00010416666666666667,"playbackRate":0.75}) did not throw an exception. | PASS |
| node0 = new AudioBufferSourceNode(context) did not throw an exception. | PASS |
| node0 instanceof AudioBufferSourceNode is equal to true. | PASS |
| node0.buffer is equal to null. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.detune.value is equal to 0. | PASS |
| node0.loop is equal to false. | PASS |
| node0.loopEnd is equal to 0. | PASS |
| node0.loopStart is equal to 0. | PASS |
| node0.numberOfInputs is equal to 0. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node0.playbackRate.value is equal to 1. | PASS |
| node1 = new AudioBufferSourceNode(c, {"buffer":null} did not throw an exception. | PASS |
| node1.buffer is equal to null. | PASS |
| node2.buffer === buffer is equal to true. | PASS |
| node2.detune.value is equal to 0.5. | PASS |
| node2.loop is equal to true. | PASS |
| node2.loopEnd is equal to 0.010416666666666666. | PASS |
| node2.loopStart is equal to 0.00010416666666666667. | PASS |
| node2.playbackRate.value is equal to 0.75. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [constructor options] All assertions passed. (total 7 assertions) | PASS |
| < [default constructor] All assertions passed. (total 13 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [nullable buffer] All assertions passed. (total 2 assertions) | PASS |
| > [constructor options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [nullable buffer] | PASS |
| /webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html (10/10, 100.00%, 0.17% of total) | OK |
| Delaying test signal by 0.5 sec was done correctly | PASS |
| Setting Delay length to 0 seconds threw NotSupportedError: "Failed to execute 'createDelay' on 'BaseAudioContext': The max delay time provided (0) is outside the range (0, 180).". | PASS |
| Setting Delay length to 180 seconds or more threw NotSupportedError: "Failed to execute 'createDelay' on 'BaseAudioContext': The max delay time provided (180) is outside the range (0, 180).". | PASS |
| Setting Delay length to NaN threw TypeError: "Failed to execute 'createDelay' on 'BaseAudioContext': The provided double value is non-finite.". | PASS |
| Setting Delay length to negative threw NotSupportedError: "Failed to execute 'createDelay' on 'BaseAudioContext': The max delay time provided (-1) is outside the range (0, 180).". | PASS |
| delay.delayTime.value = 0.5 is equal to 0.5. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 6 assertions) | PASS |
| > [test] Tests attribute and maximum allowed delay of DelayNode | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-options.https.html (11/11, 100.00%, 0.19% of total) | OK |
| Number of properties in data from processor is equal to 2. | PASS |
| |description| field in processorOptions from processor("foo") is equal to the field in node constructor options ("foo"). | PASS |
| |numberOfInputs| field in data from processor is equal to 1. | PASS |
| |numberOfOutputs| field in data from processor is identical to the array 1. | PASS |
| |payload| array in processorOptions from processor([0,1,2,3]) is identical to the array the array in node constructor options ([0,1,2,3]). | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [empty-option] All assertions passed. (total 3 assertions) | PASS |
| < [valid-processor-data] All assertions passed. (total 2 assertions) | PASS |
| > [empty-option] | PASS |
| > [valid-processor-data] | PASS |
| /webaudio/the-audio-api/the-convolvernode-interface/convolution-mono-mono.html (8/8, 100.00%, 0.14% of total) | OK |
| Deviation (in dB) of triangular portion of convolution is less than or equal to -124.41. | PASS |
| Deviation in first part of tail of convolutions is less than or equal to -129.7. | PASS |
| Rendered signal after tail of convolution is silent is true. | PASS |
| Test signal convolved correctly | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 4 assertions) | PASS |
| > [test] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/audioparam-summingjunction.html (6/6, 100.00%, 0.10% of total) | OK |
| Rendered signal length is equal to 44100. | PASS |
| Rendered signal matches sum of two audio-rate gain changing signals plus baseline gain is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 2 assertions) | PASS |
| > [test] | PASS |
| /webaudio/the-audio-api/the-delaynode-interface/delaynode-scheduling.html (5/5, 100.00%, 0.09% of total) | OK |
| Delaying test signal by 0.5 sec was done correctly | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 1 assertions) | PASS |
| > [test] DelayNode delayTime parameter can be scheduled at a given time | PASS |
| /webaudio/the-audio-api/the-convolvernode-interface/convolver-channels.html (36/36, 100.00%, 0.63% of total) | OK |
| ConvolverNode with buffer of 1 channels did not throw an exception. | PASS |
| ConvolverNode with buffer of 10 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 10". | PASS |
| ConvolverNode with buffer of 11 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 11". | PASS |
| ConvolverNode with buffer of 12 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 12". | PASS |
| ConvolverNode with buffer of 13 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 13". | PASS |
| ConvolverNode with buffer of 14 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 14". | PASS |
| ConvolverNode with buffer of 15 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 15". | PASS |
| ConvolverNode with buffer of 16 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 16". | PASS |
| ConvolverNode with buffer of 17 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 17". | PASS |
| ConvolverNode with buffer of 18 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 18". | PASS |
| ConvolverNode with buffer of 19 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 19". | PASS |
| ConvolverNode with buffer of 2 channels did not throw an exception. | PASS |
| ConvolverNode with buffer of 20 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 20". | PASS |
| ConvolverNode with buffer of 21 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 21". | PASS |
| ConvolverNode with buffer of 22 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 22". | PASS |
| ConvolverNode with buffer of 23 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 23". | PASS |
| ConvolverNode with buffer of 24 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 24". | PASS |
| ConvolverNode with buffer of 25 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 25". | PASS |
| ConvolverNode with buffer of 26 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 26". | PASS |
| ConvolverNode with buffer of 27 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 27". | PASS |
| ConvolverNode with buffer of 28 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 28". | PASS |
| ConvolverNode with buffer of 29 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 29". | PASS |
| ConvolverNode with buffer of 3 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 3". | PASS |
| ConvolverNode with buffer of 30 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 30". | PASS |
| ConvolverNode with buffer of 31 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 31". | PASS |
| ConvolverNode with buffer of 32 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 32". | PASS |
| ConvolverNode with buffer of 4 channels did not throw an exception. | PASS |
| ConvolverNode with buffer of 5 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 5". | PASS |
| ConvolverNode with buffer of 6 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 6". | PASS |
| ConvolverNode with buffer of 7 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 7". | PASS |
| ConvolverNode with buffer of 8 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 8". | PASS |
| ConvolverNode with buffer of 9 channels threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer must have 1, 2, or 4 channels, not 9". | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [channel-count-test] All assertions passed. (total 32 assertions) | PASS |
| > [channel-count-test] | PASS |
| /webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer.html (15/15, 100.00%, 0.26% of total) | OK |
| buffer = context.createBuffer(4, 88200, 44100) is true. | PASS |
| buffer.duration is equal to 2. | PASS |
| buffer.getChannelData(0) instanceof window.Float32Array is true. | PASS |
| buffer.getChannelData(1) instanceof window.Float32Array is true. | PASS |
| buffer.getChannelData(2) instanceof window.Float32Array is true. | PASS |
| buffer.getChannelData(3) instanceof window.Float32Array is true. | PASS |
| buffer.getChannelData(4) threw IndexSizeError: "Failed to execute 'getChannelData' on 'AudioBuffer': channel index (4) exceeds number of channels (4)". | PASS |
| buffer.length is equal to 88200. | PASS |
| buffer.numberOfChannels is equal to 4. | PASS |
| buffer.sampleRate is equal to 44100. | PASS |
| context.createBuffer(1, 1000, 24576).duration is equal to 0.040690104166666664. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Basic tests for AudioBuffer] All assertions passed. (total 11 assertions) | PASS |
| > [Basic tests for AudioBuffer] | PASS |
| /webaudio/the-audio-api/the-delaynode-interface/delaynode-max-nondefault-delay.html (5/5, 100.00%, 0.09% of total) | OK |
| Delaying test signal by 1.5 sec was done correctly | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 1 assertions) | PASS |
| > [test] DelayNode with delay set to non-default maximum delay | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/distance-exponential.html (106/106, 100.00%, 1.84% of total) | OK |
| 0.00007142485992517322 is 0.00007142485524626213 within an error of 0.0000033. | PASS |
| 0.0000721536052878946 is 0.00007215360593004378 within an error of 0.0000033. | PASS |
| 0.00007289737550308928 is 0.00007289738085207445 within an error of 0.0000033. | PASS |
| 0.00007365665078395978 is 0.0000736566494708926 within an error of 0.0000033. | PASS |
| 0.0000744318967917934 is 0.00007443190100963128 within an error of 0.0000033. | PASS |
| 0.00007522365194745362 is 0.0000752236455072146 within an error of 0.0000033. | PASS |
| 0.00007603241101605818 is 0.0000760324149373658 within an error of 0.0000033. | PASS |
| 0.00007685876335017383 is 0.00007685876440058646 within an error of 0.0000033. | PASS |
| 0.00007770327647449449 is 0.0000777032733947189 within an error of 0.0000033. | PASS |
| 0.00007856654701754451 is 0.00007856654717020339 within an error of 0.0000033. | PASS |
| 0.00007944921526359394 is 0.00007944921817669082 within an error of 0.0000033. | PASS |
| 0.00008035194332478568 is 0.00008035194760827667 within an error of 0.0000033. | PASS |
| 0.00008127542969305068 is 0.00008127542705529087 within an error of 0.0000033. | PASS |
| 0.00008222038013627753 is 0.00008222038027131507 within an error of 0.0000033. | PASS |
| 0.0000831875586300157 is 0.00008318756506491622 within an error of 0.0000033. | PASS |
| 0.00008417777280556038 is 0.00008417777532648753 within an error of 0.0000033. | PASS |
| 0.00008519184484612197 is 0.00008519184320159076 within an error of 0.0000033. | PASS |
| 0.00008623064786661416 is 0.00008623064142330383 within an error of 0.0000033. | PASS |
| 0.00008729508408578113 is 0.00008729508581731386 within an error of 0.0000033. | PASS |
| 0.00008838613575790077 is 0.00008838613799486857 within an error of 0.0000033. | PASS |
| 0.00008950480696512386 is 0.00008950480825022975 within an error of 0.0000033. | PASS |
| 0.00009065215999726206 is 0.00009065215868097922 within an error of 0.0000033. | PASS |
| 0.00009182930807583034 is 0.00009182930655143387 within an error of 0.0000033. | PASS |
| 0.0000930374299059622 is 0.00009303742792155874 within an error of 0.0000033. | PASS |
| 0.00009427775512449443 is 0.00009427776156615415 within an error of 0.0000033. | PASS |
| 0.00009555161523167044 is 0.00009555161321177196 within an error of 0.0000033. | PASS |
| 0.00009686036355560645 is 0.00009686036012182393 within an error of 0.0000033. | PASS |
| 0.00009820545528782532 is 0.00009820545606372913 within an error of 0.0000033. | PASS |
| 0.00009958843293134123 is 0.00009958843669576138 within an error of 0.0000033. | PASS |
| 0.00010101093357661739 is 0.00010101092541556044 within an error of 0.0000033. | PASS |
| 0.00010247463796986267 is 0.00010247463971713554 within an error of 0.0000033. | PASS |
| 0.00010398139420431107 is 0.00010398139810869895 within an error of 0.0000033. | PASS |
| 0.00010553312313277274 is 0.0001055331276499139 within an error of 0.0000033. | PASS |
| 0.00010713187657529488 is 0.0001071318721742437 within an error of 0.0000033. | PASS |
| 0.00010877980093937367 is 0.00010877980127016969 within an error of 0.0000033. | PASS |
| 0.00011047922453144565 is 0.0001104792201042672 within an error of 0.0000033. | PASS |
| 0.00011223257752135396 is 0.00011223258017966366 within an error of 0.0000033. | PASS |
| 0.00011404248652979732 is 0.00011404249113547034 within an error of 0.0000033. | PASS |
| 0.00011591173097258434 is 0.0001159117337066233 within an error of 0.0000033. | PASS |
| 0.00011784327944042161 is 0.00011784327397949263 within an error of 0.0000033. | PASS |
| 0.00011984026787104085 is 0.00011984027909696912 within an error of 0.0000033. | PASS |
| 0.00012190613779239357 is 0.00012190613458793458 within an error of 0.0000033. | PASS |
| 0.0001240444544237107 is 0.00012404446352056735 within an error of 0.0000033. | PASS |
| 0.0001262591395061463 is 0.00012625914770742077 within an error of 0.0000033. | PASS |
| 0.0001285543548874557 is 0.0001285543512233631 within an error of 0.0000033. | PASS |
| 0.00013093453890178353 is 0.00013093454653613723 within an error of 0.0000033. | PASS |
| 0.00013340453733690083 is 0.00013340454359453928 within an error of 0.0000033. | PASS |
| 0.00013596951612271369 is 0.00013596952227228016 within an error of 0.0000033. | PASS |
| 0.00013863506319466978 is 0.0001386350686280235 within an error of 0.0000033. | PASS |
| 0.0001414072175975889 is 0.00014140721551575796 within an error of 0.0000033. | PASS |
| 0.0001442924840375781 is 0.0001442924881668536 within an error of 0.0000033. | PASS |
| 0.00014729794929735363 is 0.00014729795546868834 within an error of 0.0000033. | PASS |
| 0.0001504312822362408 is 0.00015043128778808934 within an error of 0.0000033. | PASS |
| 0.0001537008211016655 is 0.00015370082233532315 within an error of 0.0000033. | PASS |
| 0.00015711563173681498 is 0.00015711563724134773 within an error of 0.0000033. | PASS |
| 0.00016068562399595976 is 0.00016068563573421284 within an error of 0.0000033. | PASS |
| 0.00016442163905594498 is 0.00016442164205827313 within an error of 0.0000033. | PASS |
| 0.0001683355076238513 is 0.00016833551109288422 within an error of 0.0000033. | PASS |
| 0.0001724402536638081 is 0.00017244025400894687 within an error of 0.0000033. | PASS |
| 0.00017675016715656966 is 0.0001767501827692215 within an error of 0.0000033. | PASS |
| 0.0001812810660339892 is 0.00018128107685376073 within an error of 0.0000033. | PASS |
| 0.00018605036893859506 is 0.00018605037630348406 within an error of 0.0000033. | PASS |
| 0.00019107740081381053 is 0.00019107740605965677 within an error of 0.0000033. | PASS |
| 0.0001963836548384279 is 0.00019638363768289738 within an error of 0.0000033. | PASS |
| 0.00020199301070533693 is 0.00020199299592548462 within an error of 0.0000033. | PASS |
| 0.00020793221483472735 is 0.00020793221938875033 within an error of 0.0000033. | PASS |
| 0.0002142313023796305 is 0.00021423128673467743 within an error of 0.0000033. | PASS |
| 0.0002209239173680544 is 0.00022092392278720384 within an error of 0.0000033. | PASS |
| 0.00022804820036981255 is 0.00022804820255702685 within an error of 0.0000033. | PASS |
| 0.00023564728326164186 is 0.00023564727603110863 within an error of 0.0000033. | PASS |
| 0.0002437702496536076 is 0.0002437702428669352 within an error of 0.0000033. | PASS |
| 0.0002524732262827456 is 0.0002524732144543359 within an error of 0.0000033. | PASS |
| 0.00026182059082202613 is 0.0002618206119036511 within an error of 0.0000033. | PASS |
| 0.0002718867617659271 is 0.00027188676345445823 within an error of 0.0000033. | PASS |
| 0.0002827578573487699 is 0.0002827578851090863 within an error of 0.0000033. | PASS |
| 0.00029453454772010446 is 0.00029453455621825906 within an error of 0.0000033. | PASS |
| 0.0003073348489124328 is 0.00030733484059099675 within an error of 0.0000033. | PASS |
| 0.00032129825558513403 is 0.000321298258429533 within an error of 0.0000033. | PASS |
| 0.0003365908924024552 is 0.00033659089256258244 within an error of 0.0000033. | PASS |
| 0.0003534120332915336 is 0.0003534120257829606 within an error of 0.0000033. | PASS |
| 0.0003720028616953641 is 0.00037200287308386824 within an error of 0.0000033. | PASS |
| 0.00039265822852030396 is 0.0003926582230242598 within an error of 0.0000033. | PASS |
| 0.0004157421935815364 is 0.00041574218539568777 within an error of 0.0000033. | PASS |
| 0.00044170982437208295 is 0.00044170984057529024 within an error of 0.0000033. | PASS |
| 0.00047113755135796964 is 0.00047113754285008335 within an error of 0.0000033. | PASS |
| 0.0005047661834396422 is 0.0005047662016094025 within an error of 0.0000033. | PASS |
| 0.0005435644998215139 is 0.0005435645231164894 within an error of 0.0000033. | PASS |
| 0.0005888238083571196 is 0.0005888238468344444 within an error of 0.0000033. | PASS |
| 0.000642304599750787 is 0.0006423046636689839 within an error of 0.0000033. | PASS |
| 0.0007064709207043052 is 0.0007064709573249552 within an error of 0.0000033. | PASS |
| 0.0007848805980756879 is 0.0007848805998230096 within an error of 0.0000033. | PASS |
| 0.0008828681893646717 is 0.0008828681780783943 within an error of 0.0000033. | PASS |
| 0.0010088123381137848 is 0.0010088122653996085 within an error of 0.0000033. | PASS |
| 0.0011766677489504218 is 0.0011766678556703624 within an error of 0.0000033. | PASS |
| 0.001411531469784677 is 0.0014115316522338509 within an error of 0.0000033. | PASS |
| 0.001763534382916987 is 0.0017635344702377983 within an error of 0.0000033. | PASS |
| 0.0023494260385632515 is 0.0023494261261472827 within an error of 0.0000033. | PASS |
| 0.003518294310197234 is 0.003518294264038947 within an error of 0.0000033. | PASS |
| 0.007001750636845827 is 0.007001750482092757 within an error of 0.0000033. | PASS |
| 0.7071067690849304 is 0.7071067811865476 within an error of 0.0000033. | PASS |
| Max error in distance gains is less than or equal to 0.0000033. | PASS |
| Number of impulses is equal to 100. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 102 assertions) | PASS |
| > [test] Exponential distance model for PannerNode | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/setValueAtTime-within-block.html (1/1, 100.00%, 0.02% of total) | OK |
| Test setValueAtTime with start time not on a block boundary | PASS |
| /webaudio/the-audio-api/the-delaynode-interface/delaynode.html (10/10, 100.00%, 0.17% of total) | OK |
| Delaying test signal by 0.5 sec was done correctly | PASS |
| delay.delayTime.defaultValue is equal to 0. | PASS |
| delay.delayTime.value = 0.5 is equal to 0.5. | PASS |
| delay.delayTime.value is equal to 0. | PASS |
| delay.numberOfInputs is equal to 1. | PASS |
| delay.numberOfOutputs is equal to 1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 6 assertions) | PASS |
| > [test] Tests attribute and basic functionality of DelayNode | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/note-grain-on-timing.html (109/109, 100.00%, 1.90% of total) | OK |
| Found all grain starts and ends is true. | PASS |
| Number of end frames is equal to 100. | PASS |
| Number of grains that ended at the correct time is equal to 100. | PASS |
| Number of grains that started at the correct time is equal to 100. | PASS |
| Number of start frames is equal to 100. | PASS |
| Pulse 0 boundary is identical to the array [0,441]. | PASS |
| Pulse 1 boundary is identical to the array [662,1103]. | PASS |
| Pulse 10 boundary is identical to the array [6615,7056]. | PASS |
| Pulse 11 boundary is identical to the array [7276,7717]. | PASS |
| Pulse 12 boundary is identical to the array [7938,8379]. | PASS |
| Pulse 13 boundary is identical to the array [8600,9041]. | PASS |
| Pulse 14 boundary is identical to the array [9261,9702]. | PASS |
| Pulse 15 boundary is identical to the array [9922,10363]. | PASS |
| Pulse 16 boundary is identical to the array [10584,11025]. | PASS |
| Pulse 17 boundary is identical to the array [11246,11687]. | PASS |
| Pulse 18 boundary is identical to the array [11907,12348]. | PASS |
| Pulse 19 boundary is identical to the array [12568,13009]. | PASS |
| Pulse 2 boundary is identical to the array [1323,1764]. | PASS |
| Pulse 20 boundary is identical to the array [13230,13671]. | PASS |
| Pulse 21 boundary is identical to the array [13892,14333]. | PASS |
| Pulse 22 boundary is identical to the array [14553,14994]. | PASS |
| Pulse 23 boundary is identical to the array [15214,15655]. | PASS |
| Pulse 24 boundary is identical to the array [15876,16317]. | PASS |
| Pulse 25 boundary is identical to the array [16538,16979]. | PASS |
| Pulse 26 boundary is identical to the array [17199,17640]. | PASS |
| Pulse 27 boundary is identical to the array [17861,18302]. | PASS |
| Pulse 28 boundary is identical to the array [18522,18963]. | PASS |
| Pulse 29 boundary is identical to the array [19184,19625]. | PASS |
| Pulse 3 boundary is identical to the array [1985,2426]. | PASS |
| Pulse 30 boundary is identical to the array [19845,20286]. | PASS |
| Pulse 31 boundary is identical to the array [20507,20948]. | PASS |
| Pulse 32 boundary is identical to the array [21168,21609]. | PASS |
| Pulse 33 boundary is identical to the array [21830,22271]. | PASS |
| Pulse 34 boundary is identical to the array [22491,22932]. | PASS |
| Pulse 35 boundary is identical to the array [23153,23594]. | PASS |
| Pulse 36 boundary is identical to the array [23814,24255]. | PASS |
| Pulse 37 boundary is identical to the array [24475,24916]. | PASS |
| Pulse 38 boundary is identical to the array [25137,25578]. | PASS |
| Pulse 39 boundary is identical to the array [25799,26240]. | PASS |
| Pulse 4 boundary is identical to the array [2646,3087]. | PASS |
| Pulse 40 boundary is identical to the array [26460,26901]. | PASS |
| Pulse 41 boundary is identical to the array [27122,27563]. | PASS |
| Pulse 42 boundary is identical to the array [27783,28224]. | PASS |
| Pulse 43 boundary is identical to the array [28445,28886]. | PASS |
| Pulse 44 boundary is identical to the array [29106,29547]. | PASS |
| Pulse 45 boundary is identical to the array [29767,30208]. | PASS |
| Pulse 46 boundary is identical to the array [30429,30870]. | PASS |
| Pulse 47 boundary is identical to the array [31091,31532]. | PASS |
| Pulse 48 boundary is identical to the array [31752,32193]. | PASS |
| Pulse 49 boundary is identical to the array [32414,32855]. | PASS |
| Pulse 5 boundary is identical to the array [3308,3749]. | PASS |
| Pulse 50 boundary is identical to the array [33075,33516]. | PASS |
| Pulse 51 boundary is identical to the array [33737,34178]. | PASS |
| Pulse 52 boundary is identical to the array [34398,34839]. | PASS |
| Pulse 53 boundary is identical to the array [35060,35501]. | PASS |
| Pulse 54 boundary is identical to the array [35721,36162]. | PASS |
| Pulse 55 boundary is identical to the array [36383,36824]. | PASS |
| Pulse 56 boundary is identical to the array [37044,37485]. | PASS |
| Pulse 57 boundary is identical to the array [37706,38147]. | PASS |
| Pulse 58 boundary is identical to the array [38367,38808]. | PASS |
| Pulse 59 boundary is identical to the array [39029,39470]. | PASS |
| Pulse 6 boundary is identical to the array [3969,4410]. | PASS |
| Pulse 60 boundary is identical to the array [39690,40131]. | PASS |
| Pulse 61 boundary is identical to the array [40352,40793]. | PASS |
| Pulse 62 boundary is identical to the array [41013,41454]. | PASS |
| Pulse 63 boundary is identical to the array [41675,42116]. | PASS |
| Pulse 64 boundary is identical to the array [42336,42777]. | PASS |
| Pulse 65 boundary is identical to the array [42998,43439]. | PASS |
| Pulse 66 boundary is identical to the array [43659,44100]. | PASS |
| Pulse 67 boundary is identical to the array [44320,44761]. | PASS |
| Pulse 68 boundary is identical to the array [44982,45423]. | PASS |
| Pulse 69 boundary is identical to the array [45644,46085]. | PASS |
| Pulse 7 boundary is identical to the array [4631,5072]. | PASS |
| Pulse 70 boundary is identical to the array [46305,46746]. | PASS |
| Pulse 71 boundary is identical to the array [46967,47408]. | PASS |
| Pulse 72 boundary is identical to the array [47628,48069]. | PASS |
| Pulse 73 boundary is identical to the array [48290,48731]. | PASS |
| Pulse 74 boundary is identical to the array [48951,49392]. | PASS |
| Pulse 75 boundary is identical to the array [49613,50053]. | PASS |
| Pulse 76 boundary is identical to the array [50274,50715]. | PASS |
| Pulse 77 boundary is identical to the array [50936,51377]. | PASS |
| Pulse 78 boundary is identical to the array [51597,52038]. | PASS |
| Pulse 79 boundary is identical to the array [52259,52700]. | PASS |
| Pulse 8 boundary is identical to the array [5292,5733]. | PASS |
| Pulse 80 boundary is identical to the array [52920,53361]. | PASS |
| Pulse 81 boundary is identical to the array [53581,54022]. | PASS |
| Pulse 82 boundary is identical to the array [54243,54684]. | PASS |
| Pulse 83 boundary is identical to the array [54904,55345]. | PASS |
| Pulse 84 boundary is identical to the array [55566,56007]. | PASS |
| Pulse 85 boundary is identical to the array [56227,56668]. | PASS |
| Pulse 86 boundary is identical to the array [56889,57330]. | PASS |
| Pulse 87 boundary is identical to the array [57551,57992]. | PASS |
| Pulse 88 boundary is identical to the array [58212,58653]. | PASS |
| Pulse 89 boundary is identical to the array [58874,59315]. | PASS |
| Pulse 9 boundary is identical to the array [5954,6395]. | PASS |
| Pulse 90 boundary is identical to the array [59535,59976]. | PASS |
| Pulse 91 boundary is identical to the array [60197,60638]. | PASS |
| Pulse 92 boundary is identical to the array [60858,61299]. | PASS |
| Pulse 93 boundary is identical to the array [61520,61961]. | PASS |
| Pulse 94 boundary is identical to the array [62181,62622]. | PASS |
| Pulse 95 boundary is identical to the array [62843,63284]. | PASS |
| Pulse 96 boundary is identical to the array [63504,63945]. | PASS |
| Pulse 97 boundary is identical to the array [64165,64606]. | PASS |
| Pulse 98 boundary is identical to the array [64827,65268]. | PASS |
| Pulse 99 boundary is identical to the array [65488,65929]. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Test timing of noteGrainOn] All assertions passed. (total 105 assertions) | PASS |
| > [Test timing of noteGrainOn] | PASS |
| /webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-copy-curve.html (6/6, 100.00%, 0.10% of total) | OK |
| Modifying curve array at time 0.016 did not throw an exception. | PASS |
| Output of WaveShaper with modified curve is identical to the array [0,-0.03608250617980957,-0.10744702816009521,-0.13089966773986816,-0.18840241432189941,-0.23401212692260742,-0.2859501838684082,-0.310654878616333,-0.3947490453720093,-0.4055798053741455,-0.46558678150177,-0.5297708511352539,-0.5409641265869141,-0.6157069206237793,-0.6582663059234619,-0.6987311840057373...]. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test copying] All assertions passed. (total 2 assertions) | PASS |
| > [test copying] Modifying curve should not modify WaveShaper | PASS |
| /webaudio/the-audio-api/the-constantsourcenode-interface/constant-source-output.html (24/24, 100.00%, 0.42% of total) | OK |
| Automation: ConstantSourceNode after ramp contains only the constant 1. | PASS |
| 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}. | PASS |
| 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...]. | PASS |
| Connected param: ConstantSourceNode frames [0, 10) contains only the constant 0. | PASS |
| Connected param: ConstantSourceNode frames [10, 6000) equals [1.5446388721466064,1.5920131206512451,1.6374237537384033,1.6807208061218262,1.7217600345611572,1.7604057788848877,1.7965296506881714,1.8300120830535889,1.8607418537139893,1.8886170387268066,1.9135453701019287,1.9354437589645386,1.954240322113037,1.9698717594146729,1.9822871685028076,1.9914445877075195...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. | PASS |
| ConstantSourceNode with stop before start must output silence contains only the constant 0. | PASS |
| ConstantSourceNode with stop equal to start must output silence contains only the constant 0. | PASS |
| start/stop: ConstantSourceNode frames [0, 10) contains only the constant 0. | PASS |
| start/stop: ConstantSourceNode frames [10, 300) contains only the constant 1. | PASS |
| start/stop: ConstantSourceNode frames [300, 6000) contains only the constant 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [basic automation] All assertions passed. (total 2 assertions) | PASS |
| < [connected audioparam] All assertions passed. (total 2 assertions) | PASS |
| < [constant source] All assertions passed. (total 1 assertions) | PASS |
| < [start/stop] All assertions passed. (total 3 assertions) | PASS |
| < [stop before start] All assertions passed. (total 1 assertions) | PASS |
| < [stop equal to start] All assertions passed. (total 1 assertions) | PASS |
| > [basic automation] | PASS |
| > [connected audioparam] | PASS |
| > [constant source] | PASS |
| > [start/stop] | PASS |
| > [stop before start] | PASS |
| > [stop equal to start] | PASS |
| /webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https.html (10/10, 100.00%, 0.17% of total) | OK |
| # AUDIT TASK RUNNER FINISHED: 1 out of 2 tasks were failed. | FAIL |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [setting-up-graph] All assertions passed. (total 0 assertions) | PASS |
| < [start-playback-and-capture] 4 out of 4 assertions were failed. | FAIL |
| > [setting-up-graph] | PASS |
| > [start-playback-and-capture] | PASS |
| X Recorded channel #0 should have contain at least one value different from 0. | FAIL |
| X Recorded channel #1 should have contain at least one value different from 0. | FAIL |
| X Recorded channel #2 should have contain at least one value different from 0. | FAIL |
| X Recorded channel #3 should have contain at least one value different from 0. | FAIL |
| /webaudio/the-audio-api/the-audioparam-interface/audioparam-connect-audioratesignal.html (6/6, 100.00%, 0.10% of total) | OK |
| Rendered signal exactly matches the audio-rate gain changing signal is true. | PASS |
| Rendered signal length is equal to 44100. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 2 assertions) | PASS |
| > [test] | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highshelf.html (7/7, 100.00%, 0.12% of total) | OK |
| Max error in Highshelf filter response is less than or equal to 6.2577e-8. | PASS |
| Number of filters tested is equal to 3. | PASS |
| Number of non-finite values in the rendered output is equal to 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Biquad highshelf filter | PASS |
| /webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-basic.html (14/14, 100.00%, 0.24% of total) | OK |
| context.createChannelMerger() did not throw an exception. | PASS |
| context.createChannelMerger(0) threw IndexSizeError: "Failed to execute 'createChannelMerger' on 'BaseAudioContext': The number of inputs provided (0) is outside the range [1, 32].". | PASS |
| context.createChannelMerger(32) did not throw an exception. | PASS |
| context.createChannelMerger(33) threw IndexSizeError: "Failed to execute 'createChannelMerger' on 'BaseAudioContext': The number of inputs provided (33) is outside the range [1, 32].". | PASS |
| merger.channelCount = 3 threw InvalidStateError: "Failed to set the 'channelCount' property on 'AudioNode': ChannelMerger: channelCount cannot be changed from 1". | PASS |
| merger.channelCount is equal to 1. | PASS |
| merger.channelCountMode = "max" threw InvalidStateError: "Failed to set the 'channelCountMode' property on 'AudioNode': ChannelMerger: channelCountMode cannot be changed from 'explicit'". | PASS |
| merger.channelCountMode is equal to explicit. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [exceptions-channels] All assertions passed. (total 4 assertions) | PASS |
| < [exceptions-properties] All assertions passed. (total 4 assertions) | PASS |
| > [exceptions-channels] | PASS |
| > [exceptions-properties] | PASS |
| /webaudio/the-audio-api/the-waveshapernode-interface/silent-inputs.html (11/11, 100.00%, 0.19% of total) | OK |
| WaveShaper with 2x oversample, silent inputs, and curve {"0":0.5,"1":0.5,"2":0.5} contains only the constant 0.5. | PASS |
| WaveShaper with no inputs and curve {"0":0.5,"1":0.5,"2":0.5} contains only the constant 0.5. | PASS |
| WaveShaper with silent inputs and curve {"0":0.5,"1":0.5,"2":0.5} contains only the constant 0.5. | PASS |
| # AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test-0] All assertions passed. (total 1 assertions) | PASS |
| < [test-1] All assertions passed. (total 1 assertions) | PASS |
| < [test-2] All assertions passed. (total 1 assertions) | PASS |
| > [test-0] curve output is non-zero for silent inputs | PASS |
| > [test-1] 2x curve output is non-zero for silent inputs | PASS |
| > [test-2] curve output is non-zero for no inputs | PASS |
| /webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-limits.html (27/27, 100.00%, 0.47% of total) | OK |
| Max error mapping -0.100000 to 0.900000 is less than or equal to 0.000001. | PASS |
| Max error mapping -0.200000 to 0.800000 is less than or equal to 0.000001. | PASS |
| Max error mapping -0.300000 to 0.700000 is less than or equal to 0.000001. | PASS |
| Max error mapping -0.400000 to 0.600000 is less than or equal to 0.000001. | PASS |
| Max error mapping -0.500000 to 0.500000 is less than or equal to 0.000001. | PASS |
| Max error mapping -0.600000 to 0.400000 is less than or equal to 0.000001. | PASS |
| Max error mapping -0.700000 to 0.300000 is less than or equal to 0.000001. | PASS |
| Max error mapping -0.800000 to 0.200000 is less than or equal to 0.000001. | PASS |
| Max error mapping -0.900000 to 0.100000 is less than or equal to 0.000001. | PASS |
| Max error mapping -1.000000 to 0.000000 is less than or equal to 0.000001. | PASS |
| Max error mapping -1.100000 to 0.000000 is less than or equal to 0.000001. | PASS |
| Max error mapping 0.000000 to 1.000000 is less than or equal to 0.000001. | PASS |
| Max error mapping 0.100000 to 0.900000 is less than or equal to 0.000001. | PASS |
| Max error mapping 0.200000 to 0.800000 is less than or equal to 0.000001. | PASS |
| Max error mapping 0.300000 to 0.700000 is less than or equal to 0.000001. | PASS |
| Max error mapping 0.400000 to 0.600000 is less than or equal to 0.000001. | PASS |
| Max error mapping 0.500000 to 0.500000 is less than or equal to 0.000001. | PASS |
| Max error mapping 0.600000 to 0.400000 is less than or equal to 0.000001. | PASS |
| Max error mapping 0.700000 to 0.300000 is less than or equal to 0.000001. | PASS |
| Max error mapping 0.800000 to 0.200000 is less than or equal to 0.000001. | PASS |
| Max error mapping 0.900000 to 0.100000 is less than or equal to 0.000001. | PASS |
| Max error mapping 1.000000 to 0.000000 is less than or equal to 0.000001. | PASS |
| Max error mapping 1.100000 to 0.000000 is less than or equal to 0.000001. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 23 assertions) | PASS |
| > [test] WaveShaperNode including values outside the range of [-1,1] | PASS |
| /webaudio/the-audio-api/the-audionode-interface/audionode-disconnect.html (32/32, 100.00%, 0.56% of total) | OK |
| Channel #0 contains only the constant 0. | PASS |
| Channel #0 contains only the constant 1. | PASS |
| Channel #0 contains only the constant 2. | PASS |
| Channel #0 contains only the constant 3. | PASS |
| Channel #0 contains only the constant 4. | PASS |
| Channel #1 contains only the constant 2. | PASS |
| Channel #2 contains only the constant 0. | PASS |
| Disabled outputs handled correctly | PASS |
| Disconnecting a connection twice did not throw an exception. | PASS |
| gain1.disconnect(gain2) threw InvalidAccessError: "Failed to execute 'disconnect' on 'AudioNode': the given destination is not connected.". | PASS |
| gain1.disconnect(gain3) threw InvalidAccessError: "Failed to execute 'disconnect' on 'AudioNode': the given destination is not connected.". | PASS |
| splitter.disconnect(2) threw IndexSizeError: "Failed to execute 'disconnect' on 'AudioNode': The output index provided (2) is outside the range [0, 1].". | PASS |
| splitter.disconnect(gain1, 0) threw InvalidAccessError: "Failed to execute 'disconnect' on 'AudioNode': output (0) is not connected to the given destination.". | PASS |
| splitter.disconnect(gain2, 2) threw IndexSizeError: "Failed to execute 'disconnect' on 'AudioNode': The output index provided (2) is outside the range [0, 1].". | PASS |
| splitter.disconnect(gain3, 0, 0) threw InvalidAccessError: "Failed to execute 'disconnect' on 'AudioNode': output (0) is not connected to the input (0) of the destination.". | PASS |
| splitter.disconnect(merger, 3, 0) threw IndexSizeError: "Failed to execute 'disconnect' on 'AudioNode': The output index provided (3) is outside the range [0, 1].". | PASS |
| # AUDIT TASK RUNNER FINISHED: 7 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [disabled-outputs] All assertions passed. (total 1 assertions) | PASS |
| < [disconnect()] All assertions passed. (total 1 assertions) | PASS |
| < [disconnect(AudioNode)] All assertions passed. (total 1 assertions) | PASS |
| < [disconnect(AudioNode, output)] All assertions passed. (total 1 assertions) | PASS |
| < [disconnect(AudioNode, output, input)] All assertions passed. (total 3 assertions) | PASS |
| < [disconnect(output)] All assertions passed. (total 1 assertions) | PASS |
| < [exceptions] All assertions passed. (total 8 assertions) | PASS |
| > [disabled-outputs] | PASS |
| > [disconnect()] | PASS |
| > [disconnect(AudioNode)] | PASS |
| > [disconnect(AudioNode, output)] | PASS |
| > [disconnect(AudioNode, output, input)] | PASS |
| > [disconnect(output)] | PASS |
| > [exceptions] | PASS |
| /webaudio/the-audio-api/the-iirfilternode-interface/test-iirfilternode.html (8/8, 100.00%, 0.14% of total) | OK |
| IIRFilterNode coefficients are checked properly | PASS |
| IIRFilterNode getFrequencyResponse handles invalid frequencies properly | PASS |
| at least one feedforward coefficient must be non-zero | PASS |
| feedback coefficients can not be empty | PASS |
| feedforward coefficients can not be empty | PASS |
| more than 20 feedback coefficients can not be used | PASS |
| more than 20 feedforward coefficients can not be used | PASS |
| the first feedback coefficient must be non-zero | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-size.https.html (12/12, 100.00%, 0.21% of total) | OK |
| Creating offline context for testing did not throw an exception. | PASS |
| Creating test worklet resolved correctly. | PASS |
| Remaining renders: array size contains only the constant 1. | PASS |
| Render quantum 0: array size contains only the constant 1. | PASS |
| Render quantum 1: array size contains only the constant 1. | PASS |
| Render quantum 2-3: array size contains only the constant 128. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Initializing AudioWorklet and Context] All assertions passed. (total 2 assertions) | PASS |
| < [Verify Size of AudioParam Arrays] All assertions passed. (total 4 assertions) | PASS |
| > [Initializing AudioWorklet and Context] | PASS |
| > [Verify Size of AudioParam Arrays] | PASS |
| /webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html (5/5, 100.00%, 0.09% of total) | OK |
| Delaying test signal by 1 sec was done correctly | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 1 assertions) | PASS |
| > [test] DelayNode with delay set to default maximum delay | PASS |
| /webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-getChannelData.html (10/10, 100.00%, 0.17% of total) | OK |
| buffer.getChannelData(0) === buffer.getChannelData(0) is equal to true. | PASS |
| buffer.getChannelData(1) === buffer.getChannelData(1) is equal to true. | PASS |
| buffer1.getChannelData(0) === buffer2.getChannelData(0) is equal to false. | PASS |
| buffer1.getChannelData(1) === buffer2.getChannelData(1) is equal to false. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [buffer-eq] All assertions passed. (total 2 assertions) | PASS |
| < [buffer-not-eq] All assertions passed. (total 2 assertions) | PASS |
| > [buffer-eq] | PASS |
| > [buffer-not-eq] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html (7/7, 100.00%, 0.12% of total) | OK |
| Reference[0:127] contains only the constant 1. | PASS |
| Test[0:127] contains only the constant 1. | PASS |
| Test[128:] is identical to the array [1,0.9994508624076843,0.9989020228385925,0.9983535408973694,0.9978054165840149,0.9972575902938843,0.9967101216316223,0.996163010597229,0.9956161975860596,0.9950697422027588,0.9945235848426819,0.9939777851104736,0.9934322834014893,0.9928871393203735,0.9923423528671265,0.9917978644371033...]. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Test setTargetAtTime with start time in the past | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html (8/8, 100.00%, 0.14% of total) | OK |
| "dummyWorkletNode" is an instance of AudioWorkletNode from offline context is true. | PASS |
| "dummyWorkletNode" is an instance of AudioWorkletNode from realtime context is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [module-loading-after-offline-context-creation] All assertions passed. (total 1 assertions) | PASS |
| < [module-loading-after-realtime-context-creation] All assertions passed. (total 1 assertions) | PASS |
| > [module-loading-after-offline-context-creation] | PASS |
| > [module-loading-after-realtime-context-creation] | PASS |
| /webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html (52/52, 100.00%, 0.90% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new ConvolverNode() threw TypeError: "Failed to construct 'ConvolverNode': 1 argument required, but only 0 present.". | PASS |
| new ConvolverNode(1) threw TypeError: "Failed to construct 'ConvolverNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new ConvolverNode(c, {channelCount: 2}} did not throw an exception. | PASS |
| new ConvolverNode(c, {channelCount: 3}} threw NotSupportedError: "Failed to construct 'ConvolverNode': ConvolverNode: channelCount cannot be changed from 2". | PASS |
| new ConvolverNode(c, {channelCountMode: "clamped-max"} did not throw an exception. | PASS |
| new ConvolverNode(c, {channelCountMode: "explicit"}) threw NotSupportedError: "Failed to construct 'ConvolverNode': ConvolverNode: channelCountMode cannot be changed from 'clamped-max'". | PASS |
| new ConvolverNode(c, {channelCountMode: "max"}) threw NotSupportedError: "Failed to construct 'ConvolverNode': ConvolverNode: channelCountMode cannot be changed from 'clamped-max'". | PASS |
| new ConvolverNode(c, {channelInterpretation: "discrete"}) did not throw an exception. | PASS |
| new ConvolverNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Failed to construct 'ConvolverNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new ConvolverNode(c, {channelInterpretation: "speakers"}) did not throw an exception. | PASS |
| new ConvolverNode(context, 42) threw TypeError: "Failed to construct 'ConvolverNode': parameter 2 ('options') is not an object.". | PASS |
| node = new ConvolverNode(c, {"buffer":{},"disableNormalization":false}) did not throw an exception. | PASS |
| node.channelCount is equal to 2. | PASS |
| node.channelCountMode is equal to clamped-max. | PASS |
| node.channelInterpretation after invalid setter is equal to discrete. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node0 = new ConvolverNode(context) did not throw an exception. | PASS |
| node0 instanceof ConvolverNode is equal to true. | PASS |
| node0.buffer is equal to null. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to clamped-max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.normalize is equal to true. | PASS |
| node0.numberOfInputs is equal to 1. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node1 = new ConvolverNode(c, {"buffer":null} did not throw an exception. | PASS |
| node1 instanceOf ConvolverNode is equal to true. | PASS |
| node1.buffer === <buf> is equal to true. | PASS |
| node1.buffer is equal to null. | PASS |
| node1.normalize is equal to true. | PASS |
| node2 = new ConvolverNode(, {"buffer":null,"disableNormalization":true}) did not throw an exception. | PASS |
| node2.buffer is equal to null. | PASS |
| node2.normalize is equal to false. | PASS |
| node3 = new ConvolverNode(context, {"buffer":null,"disableNormalization":false}) did not throw an exception. | PASS |
| node3.buffer is equal to null. | PASS |
| node3.normalize is equal to true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [construct with options] All assertions passed. (total 10 assertions) | PASS |
| < [default constructor] All assertions passed. (total 9 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [nullable buffer] All assertions passed. (total 2 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 13 assertions) | PASS |
| > [construct with options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [nullable buffer] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/the-audio-api/the-gainnode-interface/gain-basic.html (5/5, 100.00%, 0.09% of total) | OK |
| gainNode.gain instanceof AudioParam is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 1 assertions) | PASS |
| > [test] | PASS |
| /webaudio/the-audio-api/the-oscillatornode-interface/ctor-oscillator.html (55/55, 100.00%, 0.96% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new OscillatorNode() threw TypeError: "Failed to construct 'OscillatorNode': 1 argument required, but only 0 present.". | PASS |
| new OscillatorNode(, {"type":"custom","periodicWave":{}}) did not throw an exception. | PASS |
| new OscillatorNode(1) threw TypeError: "Failed to construct 'OscillatorNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new OscillatorNode(c, {"type":"custom"}) threw InvalidStateError: "Failed to construct 'OscillatorNode': A PeriodicWave must be specified if the type is set to "custom"". | PASS |
| new OscillatorNode(c, {"type":"sine","periodicWave":{}}) did not throw an exception. | PASS |
| new OscillatorNode(c, {channelCount: 0}) threw NotSupportedError: "Failed to construct 'OscillatorNode': The channel count provided (0) is outside the range [1, 32].". | PASS |
| new OscillatorNode(c, {channelCount: 17}} did not throw an exception. | PASS |
| new OscillatorNode(c, {channelCount: 99}) threw NotSupportedError: "Failed to construct 'OscillatorNode': The channel count provided (99) is outside the range [1, 32].". | PASS |
| new OscillatorNode(c, {channelCountMode: "clamped-max"}) did not throw an exception. | PASS |
| new OscillatorNode(c, {channelCountMode: "explicit"}) did not throw an exception. | PASS |
| new OscillatorNode(c, {channelCountMode: "foobar"} threw TypeError: "Failed to construct 'OscillatorNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS |
| new OscillatorNode(c, {channelCountMode: "max"} did not throw an exception. | PASS |
| new OscillatorNode(c, {channelCountMode: "max"}) did not throw an exception. | PASS |
| new OscillatorNode(c, {channelInterpretation: "discrete"}) did not throw an exception. | PASS |
| new OscillatorNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Failed to construct 'OscillatorNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new OscillatorNode(c, {channelInterpretation: "speakers"}) did not throw an exception. | PASS |
| new OscillatorNode(context, 42) threw TypeError: "Failed to construct 'OscillatorNode': parameter 2 ('options') is not an object.". | PASS |
| node.channelCount is equal to 17. | PASS |
| node.channelCountMode after invalid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to clamped-max. | PASS |
| node.channelCountMode after valid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to max. | PASS |
| node.channelCountMode is equal to max. | PASS |
| node.channelInterpretation after invalid setter is equal to discrete. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node0 = new OscillatorNode(context) did not throw an exception. | PASS |
| node0 instanceof OscillatorNode is equal to true. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.frequency.value is equal to 440. | PASS |
| node0.numberOfInputs is equal to 0. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node0.type is equal to sine. | PASS |
| node1 = new OscillatorNode(c, {"type":"sawtooth","detune":7,"frequency":918}) did not throw an exception. | PASS |
| node1.channelCount is equal to 2. | PASS |
| node1.channelCountMode is equal to max. | PASS |
| node1.channelInterpretation is equal to speakers. | PASS |
| node1.detune.value is equal to 7. | PASS |
| node1.frequency.value is equal to 918. | PASS |
| node1.type is equal to sawtooth. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [constructor options] All assertions passed. (total 10 assertions) | PASS |
| < [default constructor] All assertions passed. (total 9 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 20 assertions) | PASS |
| > [constructor options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/historical.html (7/7, 100.00%, 0.12% of total) | OK |
| dopplerFactor member should not exist on the AudioListener. | PASS |
| setVelocity member should not exist on the AudioListener. | PASS |
| setVelocity should not exist on PannerNodes. | PASS |
| speedOfSound member should not exist on the AudioListener. | PASS |
| webkitAudioContext interface should not exist | PASS |
| webkitAudioPannerNode interface should not exist | PASS |
| webkitOfflineAudioContext interface should not exist | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-channel-count.https.html (12/12, 100.00%, 0.21% of total) | OK |
| First half of Channel #0 contains only the constant 0. | PASS |
| First half of Channel #1 contains only the constant 0. | PASS |
| First half of Channel #2 contains only the constant 0. | PASS |
| Second half of Channel #0 contains only the constant 1. | PASS |
| Second half of Channel #1 contains only the constant 2. | PASS |
| Second half of Channel #2 contains only the constant 3. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [setup-buffer-and-worklet] All assertions passed. (total 0 assertions) | PASS |
| < [verify-rendered-buffer] All assertions passed. (total 6 assertions) | PASS |
| > [setup-buffer-and-worklet] | PASS |
| > [verify-rendered-buffer] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/setTargetAtTime-after-event-within-block.html (1/1, 100.00%, 0.02% of total) | OK |
| Test setTargetAtTime after an event in the same processing block | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-basic.html (16/16, 100.00%, 0.28% of total) | OK |
| Calling start() twice threw InvalidStateError: "Failed to execute 'start' on 'AudioBufferSourceNode': cannot call start more than once.". | PASS |
| Calling stop() before start() threw InvalidStateError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': cannot call stop without calling start first.". | PASS |
| start(-1) threw RangeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The start time provided (-1) is less than the minimum bound (0).". | PASS |
| start(-Infinity) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.". | PASS |
| start(0,-1) threw RangeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The offset provided (-1) is less than the minimum bound (0).". | PASS |
| start(0,0,-1) threw RangeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The duration provided (-1) is less than the minimum bound (0).". | PASS |
| start(Infinity) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.". | PASS |
| start(NaN) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.". | PASS |
| stop(-1) threw RangeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The stop time provided (-1) is less than the minimum bound (0).". | PASS |
| stop(-Infinity) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.". | PASS |
| stop(Infinity) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.". | PASS |
| stop(NaN) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.". | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [start/stop exceptions] All assertions passed. (total 12 assertions) | PASS |
| > [start/stop exceptions] | PASS |
| /webaudio/the-audio-api/the-audionode-interface/audionode-channel-rules.html (176/176, 100.00%, 3.06% of total) | OK |
| Rendered number of channels is equal to 8. | PASS |
| Rendered number of frames is equal to 1360. | PASS |
| connections: 1, clamped-max(4), discrete is true. | PASS |
| connections: 1, clamped-max(4), speakers is true. | PASS |
| connections: 1, explicit(1), speakers is true. | PASS |
| connections: 1, explicit(2), speakers is true. | PASS |
| connections: 1, explicit(4), discrete is true. | PASS |
| connections: 1, explicit(4), speakers is true. | PASS |
| connections: 1, explicit(6), speakers is true. | PASS |
| connections: 1, explicit(8), discrete is true. | PASS |
| connections: 1, max, discrete is true. | PASS |
| connections: 1, max, speakers is true. | PASS |
| connections: 11, clamped-max(4), discrete is true. | PASS |
| connections: 11, clamped-max(4), speakers is true. | PASS |
| connections: 11, explicit(1), speakers is true. | PASS |
| connections: 11, explicit(2), speakers is true. | PASS |
| connections: 11, explicit(4), discrete is true. | PASS |
| connections: 11, explicit(4), speakers is true. | PASS |
| connections: 11, explicit(6), speakers is true. | PASS |
| connections: 11, explicit(8), discrete is true. | PASS |
| connections: 11, max, discrete is true. | PASS |
| connections: 11, max, speakers is true. | PASS |
| connections: 111, clamped-max(4), discrete is true. | PASS |
| connections: 111, clamped-max(4), speakers is true. | PASS |
| connections: 111, explicit(1), speakers is true. | PASS |
| connections: 111, explicit(2), speakers is true. | PASS |
| connections: 111, explicit(4), discrete is true. | PASS |
| connections: 111, explicit(4), speakers is true. | PASS |
| connections: 111, explicit(6), speakers is true. | PASS |
| connections: 111, explicit(8), discrete is true. | PASS |
| connections: 111, max, discrete is true. | PASS |
| connections: 111, max, speakers is true. | PASS |
| connections: 12, clamped-max(4), discrete is true. | PASS |
| connections: 12, clamped-max(4), speakers is true. | PASS |
| connections: 12, explicit(1), speakers is true. | PASS |
| connections: 12, explicit(2), speakers is true. | PASS |
| connections: 12, explicit(4), discrete is true. | PASS |
| connections: 12, explicit(4), speakers is true. | PASS |
| connections: 12, explicit(6), speakers is true. | PASS |
| connections: 12, explicit(8), discrete is true. | PASS |
| connections: 12, max, discrete is true. | PASS |
| connections: 12, max, speakers is true. | PASS |
| connections: 122, clamped-max(4), discrete is true. | PASS |
| connections: 122, clamped-max(4), speakers is true. | PASS |
| connections: 122, explicit(1), speakers is true. | PASS |
| connections: 122, explicit(2), speakers is true. | PASS |
| connections: 122, explicit(4), discrete is true. | PASS |
| connections: 122, explicit(4), speakers is true. | PASS |
| connections: 122, explicit(6), speakers is true. | PASS |
| connections: 122, explicit(8), discrete is true. | PASS |
| connections: 122, max, discrete is true. | PASS |
| connections: 122, max, speakers is true. | PASS |
| connections: 123, clamped-max(4), discrete is true. | PASS |
| connections: 123, clamped-max(4), speakers is true. | PASS |
| connections: 123, explicit(1), speakers is true. | PASS |
| connections: 123, explicit(2), speakers is true. | PASS |
| connections: 123, explicit(4), discrete is true. | PASS |
| connections: 123, explicit(4), speakers is true. | PASS |
| connections: 123, explicit(6), speakers is true. | PASS |
| connections: 123, explicit(8), discrete is true. | PASS |
| connections: 123, max, discrete is true. | PASS |
| connections: 123, max, speakers is true. | PASS |
| connections: 124, clamped-max(4), discrete is true. | PASS |
| connections: 124, clamped-max(4), speakers is true. | PASS |
| connections: 124, explicit(1), speakers is true. | PASS |
| connections: 124, explicit(2), speakers is true. | PASS |
| connections: 124, explicit(4), discrete is true. | PASS |
| connections: 124, explicit(4), speakers is true. | PASS |
| connections: 124, explicit(6), speakers is true. | PASS |
| connections: 124, explicit(8), discrete is true. | PASS |
| connections: 124, max, discrete is true. | PASS |
| connections: 124, max, speakers is true. | PASS |
| connections: 128, clamped-max(4), discrete is true. | PASS |
| connections: 128, clamped-max(4), speakers is true. | PASS |
| connections: 128, explicit(1), speakers is true. | PASS |
| connections: 128, explicit(2), speakers is true. | PASS |
| connections: 128, explicit(4), discrete is true. | PASS |
| connections: 128, explicit(4), speakers is true. | PASS |
| connections: 128, explicit(6), speakers is true. | PASS |
| connections: 128, explicit(8), discrete is true. | PASS |
| connections: 128, max, discrete is true. | PASS |
| connections: 128, max, speakers is true. | PASS |
| connections: 14, clamped-max(4), discrete is true. | PASS |
| connections: 14, clamped-max(4), speakers is true. | PASS |
| connections: 14, explicit(1), speakers is true. | PASS |
| connections: 14, explicit(2), speakers is true. | PASS |
| connections: 14, explicit(4), discrete is true. | PASS |
| connections: 14, explicit(4), speakers is true. | PASS |
| connections: 14, explicit(6), speakers is true. | PASS |
| connections: 14, explicit(8), discrete is true. | PASS |
| connections: 14, max, discrete is true. | PASS |
| connections: 14, max, speakers is true. | PASS |
| connections: 18, clamped-max(4), discrete is true. | PASS |
| connections: 18, clamped-max(4), speakers is true. | PASS |
| connections: 18, explicit(1), speakers is true. | PASS |
| connections: 18, explicit(2), speakers is true. | PASS |
| connections: 18, explicit(4), discrete is true. | PASS |
| connections: 18, explicit(4), speakers is true. | PASS |
| connections: 18, explicit(6), speakers is true. | PASS |
| connections: 18, explicit(8), discrete is true. | PASS |
| connections: 18, max, discrete is true. | PASS |
| connections: 18, max, speakers is true. | PASS |
| connections: 2, clamped-max(4), discrete is true. | PASS |
| connections: 2, clamped-max(4), speakers is true. | PASS |
| connections: 2, explicit(1), speakers is true. | PASS |
| connections: 2, explicit(2), speakers is true. | PASS |
| connections: 2, explicit(4), discrete is true. | PASS |
| connections: 2, explicit(4), speakers is true. | PASS |
| connections: 2, explicit(6), speakers is true. | PASS |
| connections: 2, explicit(8), discrete is true. | PASS |
| connections: 2, max, discrete is true. | PASS |
| connections: 2, max, speakers is true. | PASS |
| connections: 3, clamped-max(4), discrete is true. | PASS |
| connections: 3, clamped-max(4), speakers is true. | PASS |
| connections: 3, explicit(1), speakers is true. | PASS |
| connections: 3, explicit(2), speakers is true. | PASS |
| connections: 3, explicit(4), discrete is true. | PASS |
| connections: 3, explicit(4), speakers is true. | PASS |
| connections: 3, explicit(6), speakers is true. | PASS |
| connections: 3, explicit(8), discrete is true. | PASS |
| connections: 3, max, discrete is true. | PASS |
| connections: 3, max, speakers is true. | PASS |
| connections: 4, clamped-max(4), discrete is true. | PASS |
| connections: 4, clamped-max(4), speakers is true. | PASS |
| connections: 4, explicit(1), speakers is true. | PASS |
| connections: 4, explicit(2), speakers is true. | PASS |
| connections: 4, explicit(4), discrete is true. | PASS |
| connections: 4, explicit(4), speakers is true. | PASS |
| connections: 4, explicit(6), speakers is true. | PASS |
| connections: 4, explicit(8), discrete is true. | PASS |
| connections: 4, max, discrete is true. | PASS |
| connections: 4, max, speakers is true. | PASS |
| connections: 5, clamped-max(4), discrete is true. | PASS |
| connections: 5, clamped-max(4), speakers is true. | PASS |
| connections: 5, explicit(1), speakers is true. | PASS |
| connections: 5, explicit(2), speakers is true. | PASS |
| connections: 5, explicit(4), discrete is true. | PASS |
| connections: 5, explicit(4), speakers is true. | PASS |
| connections: 5, explicit(6), speakers is true. | PASS |
| connections: 5, explicit(8), discrete is true. | PASS |
| connections: 5, max, discrete is true. | PASS |
| connections: 5, max, speakers is true. | PASS |
| connections: 6, clamped-max(4), discrete is true. | PASS |
| connections: 6, clamped-max(4), speakers is true. | PASS |
| connections: 6, explicit(1), speakers is true. | PASS |
| connections: 6, explicit(2), speakers is true. | PASS |
| connections: 6, explicit(4), discrete is true. | PASS |
| connections: 6, explicit(4), speakers is true. | PASS |
| connections: 6, explicit(6), speakers is true. | PASS |
| connections: 6, explicit(8), discrete is true. | PASS |
| connections: 6, max, discrete is true. | PASS |
| connections: 6, max, speakers is true. | PASS |
| connections: 7, clamped-max(4), discrete is true. | PASS |
| connections: 7, clamped-max(4), speakers is true. | PASS |
| connections: 7, explicit(1), speakers is true. | PASS |
| connections: 7, explicit(2), speakers is true. | PASS |
| connections: 7, explicit(4), discrete is true. | PASS |
| connections: 7, explicit(4), speakers is true. | PASS |
| connections: 7, explicit(6), speakers is true. | PASS |
| connections: 7, explicit(8), discrete is true. | PASS |
| connections: 7, max, discrete is true. | PASS |
| connections: 7, max, speakers is true. | PASS |
| connections: 8, clamped-max(4), discrete is true. | PASS |
| connections: 8, clamped-max(4), speakers is true. | PASS |
| connections: 8, explicit(1), speakers is true. | PASS |
| connections: 8, explicit(2), speakers is true. | PASS |
| connections: 8, explicit(4), discrete is true. | PASS |
| connections: 8, explicit(4), speakers is true. | PASS |
| connections: 8, explicit(6), speakers is true. | PASS |
| connections: 8, explicit(8), discrete is true. | PASS |
| connections: 8, max, discrete is true. | PASS |
| connections: 8, max, speakers is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 172 assertions) | PASS |
| > [test] Channel mixing rules for AudioNodes | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-bandpass.html (7/7, 100.00%, 0.12% of total) | OK |
| Max error in Bandpass filter response is less than or equal to 2.2501e-8. | PASS |
| Number of filters tested is equal to 4. | PASS |
| Number of non-finite values in the rendered output is equal to 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Biquad bandpass filter. | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime.html (106/106, 100.00%, 1.84% of total) | OK |
| Max error for test 0 at offset 1277 is less than or equal to 0.000001865. | PASS |
| Max error for test 1 at offset 1532 is less than or equal to 0.000001865. | PASS |
| Max error for test 10 at offset 13439 is less than or equal to 0.000001865. | PASS |
| Max error for test 11 at offset 15102 is less than or equal to 0.000001865. | PASS |
| Max error for test 12 at offset 16255 is less than or equal to 0.000001865. | PASS |
| Max error for test 13 at offset 17918 is less than or equal to 0.000001865. | PASS |
| Max error for test 14 at offset 19071 is less than or equal to 0.000001865. | PASS |
| Max error for test 15 at offset 20734 is less than or equal to 0.000001865. | PASS |
| Max error for test 16 at offset 22398 is less than or equal to 0.000001865. | PASS |
| Max error for test 17 at offset 23550 is less than or equal to 0.000001865. | PASS |
| Max error for test 18 at offset 24060 is less than or equal to 0.000001865. | PASS |
| Max error for test 19 at offset 26366 is less than or equal to 0.000001865. | PASS |
| Max error for test 2 at offset 3838 is less than or equal to 0.000001865. | PASS |
| Max error for test 20 at offset 26876 is less than or equal to 0.000001865. | PASS |
| Max error for test 21 at offset 28029 is less than or equal to 0.000001865. | PASS |
| Max error for test 22 at offset 30333 is less than or equal to 0.000001865. | PASS |
| Max error for test 23 at offset 30845 is less than or equal to 0.000001865. | PASS |
| Max error for test 24 at offset 31998 is less than or equal to 0.000001865. | PASS |
| Max error for test 25 at offset 33661 is less than or equal to 0.000001865. | PASS |
| Max error for test 26 at offset 34814 is less than or equal to 0.000001865. | PASS |
| Max error for test 27 at offset 35967 is less than or equal to 0.000001865. | PASS |
| Max error for test 28 at offset 37630 is less than or equal to 0.000001865. | PASS |
| Max error for test 29 at offset 38783 is less than or equal to 0.000001865. | PASS |
| Max error for test 3 at offset 5246 is less than or equal to 0.000001865. | PASS |
| Max error for test 30 at offset 40446 is less than or equal to 0.000001865. | PASS |
| Max error for test 31 at offset 41599 is less than or equal to 0.000001865. | PASS |
| Max error for test 32 at offset 43262 is less than or equal to 0.000001865. | PASS |
| Max error for test 33 at offset 44415 is less than or equal to 0.000001865. | PASS |
| Max error for test 34 at offset 46078 is less than or equal to 0.000001865. | PASS |
| Max error for test 35 at offset 47231 is less than or equal to 0.000001865. | PASS |
| Max error for test 36 at offset 48894 is less than or equal to 0.000001865. | PASS |
| Max error for test 37 at offset 50047 is less than or equal to 0.000001865. | PASS |
| Max error for test 38 at offset 50557 is less than or equal to 0.000001865. | PASS |
| Max error for test 39 at offset 52863 is less than or equal to 0.000001865. | PASS |
| Max error for test 4 at offset 5501 is less than or equal to 0.000001865. | PASS |
| Max error for test 40 at offset 53373 is less than or equal to 0.000001865. | PASS |
| Max error for test 41 at offset 55164 is less than or equal to 0.000001865. | PASS |
| Max error for test 42 at offset 56189 is less than or equal to 0.000001865. | PASS |
| Max error for test 43 at offset 57852 is less than or equal to 0.000001865. | PASS |
| Max error for test 44 at offset 58495 is less than or equal to 0.000001865. | PASS |
| Max error for test 45 at offset 60796 is less than or equal to 0.000001865. | PASS |
| Max error for test 46 at offset 61311 is less than or equal to 0.000001865. | PASS |
| Max error for test 47 at offset 63484 is less than or equal to 0.000001865. | PASS |
| Max error for test 48 at offset 64255 is less than or equal to 0.000001865. | PASS |
| Max error for test 49 at offset 65918 is less than or equal to 0.000001865. | PASS |
| Max error for test 5 at offset 7164 is less than or equal to 0.000001865. | PASS |
| Max error for test 50 at offset 66428 is less than or equal to 0.000001865. | PASS |
| Max error for test 51 at offset 68604 is less than or equal to 0.000001865. | PASS |
| Max error for test 52 at offset 68988 is less than or equal to 0.000001865. | PASS |
| Max error for test 53 at offset 71420 is less than or equal to 0.000001865. | PASS |
| Max error for test 54 at offset 72573 is less than or equal to 0.000001865. | PASS |
| Max error for test 55 at offset 73981 is less than or equal to 0.000001865. | PASS |
| Max error for test 56 at offset 75389 is less than or equal to 0.000001865. | PASS |
| Max error for test 57 at offset 76542 is less than or equal to 0.000001865. | PASS |
| Max error for test 58 at offset 76925 is less than or equal to 0.000001865. | PASS |
| Max error for test 59 at offset 79358 is less than or equal to 0.000001865. | PASS |
| Max error for test 6 at offset 8317 is less than or equal to 0.000001865. | PASS |
| Max error for test 60 at offset 80511 is less than or equal to 0.000001865. | PASS |
| Max error for test 61 at offset 81919 is less than or equal to 0.000001865. | PASS |
| Max error for test 62 at offset 83327 is less than or equal to 0.000001865. | PASS |
| Max error for test 63 at offset 84092 is less than or equal to 0.000001865. | PASS |
| Max error for test 64 at offset 85245 is less than or equal to 0.000001865. | PASS |
| Max error for test 65 at offset 86653 is less than or equal to 0.000001865. | PASS |
| Max error for test 66 at offset 87806 is less than or equal to 0.000001865. | PASS |
| Max error for test 67 at offset 88828 is less than or equal to 0.000001865. | PASS |
| Max error for test 68 at offset 90367 is less than or equal to 0.000001865. | PASS |
| Max error for test 69 at offset 92413 is less than or equal to 0.000001865. | PASS |
| Max error for test 7 at offset 9470 is less than or equal to 0.000001865. | PASS |
| Max error for test 70 at offset 93183 is less than or equal to 0.000001865. | PASS |
| Max error for test 71 at offset 95229 is less than or equal to 0.000001865. | PASS |
| Max error for test 72 at offset 95484 is less than or equal to 0.000001865. | PASS |
| Max error for test 73 at offset 96765 is less than or equal to 0.000001865. | PASS |
| Max error for test 74 at offset 98300 is less than or equal to 0.000001865. | PASS |
| Max error for test 75 at offset 100477 is less than or equal to 0.000001865. | PASS |
| Max error for test 76 at offset 100732 is less than or equal to 0.000001865. | PASS |
| Max error for test 77 at offset 102015 is less than or equal to 0.000001865. | PASS |
| Max error for test 78 at offset 103933 is less than or equal to 0.000001865. | PASS |
| Max error for test 79 at offset 105724 is less than or equal to 0.000001865. | PASS |
| Max error for test 8 at offset 11133 is less than or equal to 0.000001865. | PASS |
| Max error for test 80 at offset 106239 is less than or equal to 0.000001865. | PASS |
| Max error for test 81 at offset 108415 is less than or equal to 0.000001865. | PASS |
| Max error for test 82 at offset 109055 is less than or equal to 0.000001865. | PASS |
| Max error for test 83 at offset 111101 is less than or equal to 0.000001865. | PASS |
| Max error for test 84 at offset 111356 is less than or equal to 0.000001865. | PASS |
| Max error for test 85 at offset 112764 is less than or equal to 0.000001865. | PASS |
| Max error for test 86 at offset 114047 is less than or equal to 0.000001865. | PASS |
| Max error for test 87 at offset 116220 is less than or equal to 0.000001865. | PASS |
| Max error for test 88 at offset 116426 is less than or equal to 0.000001865. | PASS |
| Max error for test 89 at offset 119039 is less than or equal to 0.000001865. | PASS |
| Max error for test 9 at offset 13181 is less than or equal to 0.000001865. | PASS |
| Max error for test 90 at offset 120322 is less than or equal to 0.000001865. | PASS |
| Max error for test 91 at offset 120395 is less than or equal to 0.000001865. | PASS |
| Max error for test 92 at offset 123004 is less than or equal to 0.000001865. | PASS |
| Max error for test 93 at offset 124287 is less than or equal to 0.000001865. | PASS |
| Max error for test 94 at offset 125570 is less than or equal to 0.000001865. | PASS |
| Max error for test 95 at offset 126593 is less than or equal to 0.000001865. | PASS |
| Max error for test 96 at offset 128255 is less than or equal to 0.000001865. | PASS |
| Max error for test 97 at offset 128895 is less than or equal to 0.000001865. | PASS |
| Max error for test 98 at offset 130815 is less than or equal to 0.000001865. | PASS |
| Max error for test 99 at offset 132223 is less than or equal to 0.000001865. | PASS |
| Number of failed tests with an acceptable relative tolerance of 0.000001865 is equal to 0. | PASS |
| Number of tests started and ended at the correct time is equal to 100. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 102 assertions) | PASS |
| > [test] AudioParam linearRampToValueAtTime() functionality | PASS |
| /webaudio/the-audio-api/the-convolvernode-interface/convolver-upmixing-1-channel-response.html (3/3, 100.00%, 0.05% of total) | OK |
| discrete | PASS |
| speakers, initially mono | PASS |
| speakers, initially stereo | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html (6/6, 100.00%, 0.10% of total) | OK |
| The first half of the captured buffer contains only the constant 0.5. | PASS |
| The second half of the captured buffer contains only the constant 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [setup-worklet] All assertions passed. (total 2 assertions) | PASS |
| > [setup-worklet] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/k-rate-panner.html (176/176, 100.00%, 3.06% of total) | OK |
| Listener forwardX.automationRate is equal to k-rate. | PASS |
| Listener forwardX.linearRampToValueAtTime(1,1) did not throw an exception. | PASS |
| Listener forwardX.setValueAtTime(-1,0) did not throw an exception. | PASS |
| Listener forwardY.automationRate is equal to k-rate. | PASS |
| Listener forwardY.linearRampToValueAtTime(1,1) did not throw an exception. | PASS |
| Listener forwardY.setValueAtTime(-1,0) did not throw an exception. | PASS |
| Listener forwardZ.automationRate is equal to k-rate. | PASS |
| Listener forwardZ.linearRampToValueAtTime(1,1) did not throw an exception. | PASS |
| Listener forwardZ.setValueAtTime(-1,0) did not throw an exception. | PASS |
| Listener k-rate forwardX: Output [0, 127] contains only the constant 0.0011720563052222133. | PASS |
| Listener k-rate forwardX: Output [128, 255] contains only the constant 0.0011720549082383513. | PASS |
| Listener k-rate forwardX: Output [256, 383] contains only the constant 0.0011720503680408. | PASS |
| Listener k-rate forwardX: Output [384, 511] contains only the constant 0.001172042335383594. | PASS |
| Listener k-rate forwardX: Output [512, 639] contains only the constant 0.0011720301117748022. | PASS |
| Listener k-rate forwardX: Output is not constantly 0.0011720563052222133 (contains 512 different values). | PASS |
| Listener k-rate forwardY: Output [0, 127] contains only the constant 0.0008287689415737987. | PASS |
| Listener k-rate forwardY: Output [128, 255] contains only the constant 0.0011720563052222133. | PASS |
| Listener k-rate forwardY: Output [256, 383] contains only the constant 0.0011720563052222133. | PASS |
| Listener k-rate forwardY: Output [384, 511] contains only the constant 0.0011720563052222133. | PASS |
| Listener k-rate forwardY: Output [512, 639] contains only the constant 0.0011720563052222133. | PASS |
| Listener k-rate forwardY: Output is not constantly 0.0008287689415737987 (contains 512 different values). | PASS |
| Listener k-rate forwardZ: Output [0, 127] contains only the constant 0.0011720563052222133. | PASS |
| Listener k-rate forwardZ: Output [128, 255] contains only the constant 0.0011720549082383513. | PASS |
| Listener k-rate forwardZ: Output [256, 383] contains only the constant 0.0011720503680408. | PASS |
| Listener k-rate forwardZ: Output [384, 511] contains only the constant 0.001172042335383594. | PASS |
| Listener k-rate forwardZ: Output [512, 639] contains only the constant 0.0011720301117748022. | PASS |
| Listener k-rate forwardZ: Output is not constantly 0.0011720563052222133 (contains 512 different values). | PASS |
| Listener k-rate positionX: Output [0, 127] contains only the constant 0.0013299635611474514. | PASS |
| Listener k-rate positionX: Output [128, 255] contains only the constant 0.012293370440602303. | PASS |
| Listener k-rate positionX: Output [256, 383] contains only the constant 0.011927678249776363. | PASS |
| Listener k-rate positionX: Output [384, 511] contains only the constant 0.008936939761042595. | PASS |
| Listener k-rate positionX: Output [512, 639] contains only the constant 0.006943006068468094. | PASS |
| Listener k-rate positionX: Output is not constantly 0.0013299635611474514 (contains 512 different values). | PASS |
| Listener k-rate positionY: Output [0, 127] contains only the constant 0.0011720563052222133. | PASS |
| Listener k-rate positionY: Output [128, 255] contains only the constant 0.014085138216614723. | PASS |
| Listener k-rate positionY: Output [256, 383] contains only the constant 0.013277369551360607. | PASS |
| Listener k-rate positionY: Output [384, 511] contains only the constant 0.009970049373805523. | PASS |
| Listener k-rate positionY: Output [512, 639] contains only the constant 0.007745886687189341. | PASS |
| Listener k-rate positionY: Output is not constantly 0.0011720563052222133 (contains 512 different values). | PASS |
| Listener k-rate positionZ: Output [0, 127] contains only the constant 0.0013299635611474514. | PASS |
| Listener k-rate positionZ: Output [128, 255] contains only the constant 0.012293369509279728. | PASS |
| Listener k-rate positionZ: Output [256, 383] contains only the constant 0.011927677318453789. | PASS |
| Listener k-rate positionZ: Output [384, 511] contains only the constant 0.008936937898397446. | PASS |
| Listener k-rate positionZ: Output [512, 639] contains only the constant 0.006943006534129381. | PASS |
| Listener k-rate positionZ: Output is not constantly 0.0013299635611474514 (contains 512 different values). | PASS |
| Listener k-rate upX: Output [0, 127] contains only the constant 0.0010044159134849906. | PASS |
| Listener k-rate upX: Output [128, 255] contains only the constant 0.0010139292571693659. | PASS |
| Listener k-rate upX: Output [256, 383] contains only the constant 0.001008721999824047. | PASS |
| Listener k-rate upX: Output [384, 511] contains only the constant 0.0010071939323097467. | PASS |
| Listener k-rate upX: Output [512, 639] contains only the constant 0.0010064655216410756. | PASS |
| Listener k-rate upX: Output is not constantly 0.0010044159134849906 (contains 512 different values). | PASS |
| Listener k-rate upY: Output [0, 127] contains only the constant 0.0008287689415737987. | PASS |
| Listener k-rate upY: Output [128, 255] contains only the constant 0.0011720563052222133. | PASS |
| Listener k-rate upY: Output [256, 383] contains only the constant 0.0011720563052222133. | PASS |
| Listener k-rate upY: Output [384, 511] contains only the constant 0.0011720563052222133. | PASS |
| Listener k-rate upY: Output [512, 639] contains only the constant 0.0011720563052222133. | PASS |
| Listener k-rate upY: Output is not constantly 0.0008287689415737987 (contains 512 different values). | PASS |
| Listener k-rate upZ: Output [0, 127] contains only the constant 0.0010044159134849906. | PASS |
| Listener k-rate upZ: Output [128, 255] contains only the constant 0.0010139293735846877. | PASS |
| Listener k-rate upZ: Output [256, 383] contains only the constant 0.001008721999824047. | PASS |
| Listener k-rate upZ: Output [384, 511] contains only the constant 0.0010071939323097467. | PASS |
| Listener k-rate upZ: Output [512, 639] contains only the constant 0.0010064655216410756. | PASS |
| Listener k-rate upZ: Output is not constantly 0.0010044159134849906 (contains 512 different values). | PASS |
| Listener positionX.automationRate is equal to k-rate. | PASS |
| Listener positionX.linearRampToValueAtTime(1000,1) did not throw an exception. | PASS |
| Listener positionX.setValueAtTime(1,0) did not throw an exception. | PASS |
| Listener positionY.automationRate is equal to k-rate. | PASS |
| Listener positionY.linearRampToValueAtTime(1000,1) did not throw an exception. | PASS |
| Listener positionY.setValueAtTime(1,0) did not throw an exception. | PASS |
| Listener positionZ.automationRate is equal to k-rate. | PASS |
| Listener positionZ.linearRampToValueAtTime(1000,1) did not throw an exception. | PASS |
| Listener positionZ.setValueAtTime(1,0) did not throw an exception. | PASS |
| Listener upX.automationRate is equal to k-rate. | PASS |
| Listener upX.linearRampToValueAtTime(1000,1) did not throw an exception. | PASS |
| Listener upX.setValueAtTime(-1,0) did not throw an exception. | PASS |
| Listener upY.automationRate is equal to k-rate. | PASS |
| Listener upY.linearRampToValueAtTime(1000,1) did not throw an exception. | PASS |
| Listener upY.setValueAtTime(-1,0) did not throw an exception. | PASS |
| Listener upZ.automationRate is equal to k-rate. | PASS |
| Listener upZ.linearRampToValueAtTime(1000,1) did not throw an exception. | PASS |
| Listener upZ.setValueAtTime(-1,0) did not throw an exception. | PASS |
| k-rate orientationX k-rate output [0: 127] contains only the constant 0. | PASS |
| k-rate orientationX k-rate output [128: 255] contains only the constant 0.05854206532239914. | PASS |
| k-rate orientationX k-rate output [256: 383] contains only the constant 0.07888391613960266. | PASS |
| k-rate orientationX k-rate output [384: 511] contains only the constant 0.08858340233564377. | PASS |
| k-rate orientationX k-rate output [512: 639] contains only the constant 0.09418901801109314. | PASS |
| k-rate orientationX: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 636 different values). | PASS |
| k-rate orientationX: Output of a-rate PannerNode is identical to the array [0,0.0007919143536128104,0.0015773701015859842,0.002354065189138055,0.0031235984060913324,0.00388692831620574,0.00464255316182971,0.005390664096921682,0.006131517700850964,0.006865368224680424,0.00759231299161911,0.008311999030411243,0.009024843573570251,0.009730782359838486,0.010429717600345612,0.011121843941509724...]. | PASS |
| k-rate orientationX: Output of k-rate PannerNode is identical to the array [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...]. | PASS |
| k-rate orientationX: Setting orientationX.automationRate to "k-rate" is equal to k-rate. | PASS |
| k-rate orientationX: a-rate node:orientationX.linearRampToValueAtTime(10,0.08) did not throw an exception. | PASS |
| k-rate orientationX: a-rate node:orientationX.setValueAtTime(1,0) did not throw an exception. | PASS |
| k-rate orientationX: k-rate node: orientationX.linearRampToValueAtTime(10,0.08) did not throw an exception. | PASS |
| k-rate orientationX: k-rate node: orientationX.setValueAtTime(1,0) did not throw an exception. | PASS |
| k-rate orientationY k-rate output [0: 127] contains only the constant 0.07389304786920547. | PASS |
| k-rate orientationY k-rate output [128: 255] contains only the constant 0.08894405514001846. | PASS |
| k-rate orientationY k-rate output [256: 383] contains only the constant 0.09769003093242645. | PASS |
| k-rate orientationY k-rate output [384: 511] contains only the constant 0.10211682319641113. | PASS |
| k-rate orientationY k-rate output [512: 639] contains only the constant 0.1047375500202179. | PASS |
| k-rate orientationY: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 635 different values). | PASS |
| k-rate orientationY: Output of a-rate PannerNode is identical to the array [0.07389304786920547,0.07389719784259796,0.07390938699245453,0.07392927259206772,0.07395654916763306,0.0739908218383789,0.07403190433979034,0.07407935708761215,0.07413297891616821,0.07419241219758987,0.07425744831562042,0.07432778924703598,0.07440318167209625,0.07448337227106094,0.07456806302070618,0.07465711236000061...]. | PASS |
| k-rate orientationY: Output of k-rate PannerNode is identical to the array [0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547...]. | PASS |
| k-rate orientationY: Setting orientationY.automationRate to "k-rate" is equal to k-rate. | PASS |
| k-rate orientationY: a-rate node:orientationY.linearRampToValueAtTime(10,0.08) did not throw an exception. | PASS |
| k-rate orientationY: a-rate node:orientationY.setValueAtTime(1,0) did not throw an exception. | PASS |
| k-rate orientationY: k-rate node: orientationY.linearRampToValueAtTime(10,0.08) did not throw an exception. | PASS |
| k-rate orientationY: k-rate node: orientationY.setValueAtTime(1,0) did not throw an exception. | PASS |
| k-rate orientationZ k-rate output [0: 127] contains only the constant 0.07389304786920547. | PASS |
| k-rate orientationZ k-rate output [128: 255] contains only the constant 0.08894405514001846. | PASS |
| k-rate orientationZ k-rate output [256: 383] contains only the constant 0.09769003093242645. | PASS |
| k-rate orientationZ k-rate output [384: 511] contains only the constant 0.10211682319641113. | PASS |
| k-rate orientationZ k-rate output [512: 639] contains only the constant 0.1047375500202179. | PASS |
| k-rate orientationZ: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 635 different values). | PASS |
| k-rate orientationZ: Output of a-rate PannerNode is identical to the array [0.07389304786920547,0.07389719784259796,0.07390938699245453,0.07392927259206772,0.07395654916763306,0.0739908218383789,0.07403190433979034,0.07407935708761215,0.07413297891616821,0.07419241219758987,0.07425744831562042,0.07432778924703598,0.07440318167209625,0.07448337227106094,0.07456806302070618,0.07465711236000061...]. | PASS |
| k-rate orientationZ: Output of k-rate PannerNode is identical to the array [0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547,0.07389304786920547...]. | PASS |
| k-rate orientationZ: Setting orientationZ.automationRate to "k-rate" is equal to k-rate. | PASS |
| k-rate orientationZ: a-rate node:orientationZ.linearRampToValueAtTime(10,0.08) did not throw an exception. | PASS |
| k-rate orientationZ: a-rate node:orientationZ.setValueAtTime(1,0) did not throw an exception. | PASS |
| k-rate orientationZ: k-rate node: orientationZ.linearRampToValueAtTime(10,0.08) did not throw an exception. | PASS |
| k-rate orientationZ: k-rate node: orientationZ.setValueAtTime(1,0) did not throw an exception. | PASS |
| k-rate positionX k-rate output [0: 127] contains only the constant 0. | PASS |
| k-rate positionX k-rate output [128: 255] contains only the constant 0.001247443608008325. | PASS |
| k-rate positionX k-rate output [256: 383] contains only the constant 0.0006243652314879. | PASS |
| k-rate positionX k-rate output [384: 511] contains only the constant 0.0004163846024312079. | PASS |
| k-rate positionX k-rate output [512: 639] contains only the constant 0.00031234207563102245. | PASS |
| k-rate positionX: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 638 different values). | PASS |
| k-rate positionX: Output of a-rate PannerNode is identical to the array [0,0.07824615389108658,0.060729388147592545,0.0456632636487484,0.03603518381714821,0.029616549611091614,0.02508825622498989,0.021739643067121506,0.019169356673955917,0.017137136310338974,0.015491400845348835,0.014132188633084297,0.012991074472665787,0.0120196882635355,0.011182943359017372,0.010454747825860977...]. | PASS |
| k-rate positionX: Output of k-rate PannerNode is identical to the array [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...]. | PASS |
| k-rate positionX: Setting positionX.automationRate to "k-rate" is equal to k-rate. | PASS |
| k-rate positionX: a-rate node:positionX.linearRampToValueAtTime(1000,0.08) did not throw an exception. | PASS |
| k-rate positionX: a-rate node:positionX.setValueAtTime(0,0) did not throw an exception. | PASS |
| k-rate positionX: k-rate node: positionX.linearRampToValueAtTime(1000,0.08) did not throw an exception. | PASS |
| k-rate positionX: k-rate node: positionX.setValueAtTime(0,0) did not throw an exception. | PASS |
| k-rate positionY k-rate output [0: 127] contains only the constant 0.15397992730140686. | PASS |
| k-rate positionY k-rate output [128: 255] contains only the constant 0.0008113960502669215. | PASS |
| k-rate positionY k-rate output [256: 383] contains only the constant 0.0004070002760272473. | PASS |
| k-rate positionY k-rate output [384: 511] contains only the constant 0.0002716227318160236. | PASS |
| k-rate positionY k-rate output [512: 639] contains only the constant 0.00020382541697472334. | PASS |
| k-rate positionY: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 638 different values). | PASS |
| k-rate positionY: Output of a-rate PannerNode is identical to the array [0.15397992730140686,0.05288306251168251,0.033593595027923584,0.025778021663427353,0.02088121324777603,0.01750437542796135,0.015046180225908756,0.013182773254811764,0.011724470183253288,0.010553553700447083,0.009593426249921322,0.008792281150817871,0.008113890886306763,0.007532190065830946,0.0070279804058372974,0.006586793810129166...]. | PASS |
| k-rate positionY: Output of k-rate PannerNode is identical to the array [0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686,0.15397992730140686...]. | PASS |
| k-rate positionY: Setting positionY.automationRate to "k-rate" is equal to k-rate. | PASS |
| k-rate positionY: a-rate node:positionY.linearRampToValueAtTime(1000,0.08) did not throw an exception. | PASS |
| k-rate positionY: a-rate node:positionY.setValueAtTime(0,0) did not throw an exception. | PASS |
| k-rate positionY: k-rate node: positionY.linearRampToValueAtTime(1000,0.08) did not throw an exception. | PASS |
| k-rate positionY: k-rate node: positionY.setValueAtTime(0,0) did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 14 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Listener k-rate forwardX] All assertions passed. (total 9 assertions) | PASS |
| < [Listener k-rate forwardY] All assertions passed. (total 9 assertions) | PASS |
| < [Listener k-rate forwardZ] All assertions passed. (total 9 assertions) | PASS |
| < [Listener k-rate positionX] All assertions passed. (total 9 assertions) | PASS |
| < [Listener k-rate positionY] All assertions passed. (total 9 assertions) | PASS |
| < [Listener k-rate positionZ] All assertions passed. (total 9 assertions) | PASS |
| < [Listener k-rate upX] All assertions passed. (total 9 assertions) | PASS |
| < [Listener k-rate upY] All assertions passed. (total 9 assertions) | PASS |
| < [Listener k-rate upZ] All assertions passed. (total 9 assertions) | PASS |
| < [Panner k-rate orientationX] All assertions passed. (total 13 assertions) | PASS |
| < [Panner k-rate orientationY] All assertions passed. (total 13 assertions) | PASS |
| < [Panner k-rate orientationZ] All assertions passed. (total 13 assertions) | PASS |
| < [Panner k-rate positionX] All assertions passed. (total 13 assertions) | PASS |
| < [Panner k-rate positionY] All assertions passed. (total 13 assertions) | PASS |
| > [Listener k-rate forwardX] | PASS |
| > [Listener k-rate forwardY] | PASS |
| > [Listener k-rate forwardZ] | PASS |
| > [Listener k-rate positionX] | PASS |
| > [Listener k-rate positionY] | PASS |
| > [Listener k-rate positionZ] | PASS |
| > [Listener k-rate upX] | PASS |
| > [Listener k-rate upY] | PASS |
| > [Listener k-rate upZ] | PASS |
| > [Panner k-rate orientationX] | PASS |
| > [Panner k-rate orientationY] | PASS |
| > [Panner k-rate orientationZ] | PASS |
| > [Panner k-rate positionX] | PASS |
| > [Panner k-rate positionY] | PASS |
| /webaudio/the-audio-api/the-offlineaudiocontext-interface/ctor-offlineaudiocontext.html (39/39, 100.00%, 0.68% of total) | OK |
| c = new OfflineAudioContext{"length":1,"sampleRate":8000,"numberOfChannels":7}) did not throw an exception. | PASS |
| c = new OfflineAudioContext{"length":1,"sampleRate":8000}) did not throw an exception. | PASS |
| c.destination.channelCount is equal to 1. | PASS |
| c.destination.channelCount is equal to 7. | PASS |
| c.destination.channelCountMode is equal to explicit. | PASS |
| c.destination.channelCountMode is equal to speakers. | PASS |
| c.length is equal to 1. | PASS |
| c.sampleRate is equal to 8000. | PASS |
| c2 = new OfflineAudioContext({"length":42,"sampleRate":12345}) did not throw an exception. | PASS |
| c2.destination.channelCount is equal to 1. | PASS |
| c2.destination.channelCountMode is equal to explicit. | PASS |
| c2.destination.channelInterpretation is equal to speakers. | PASS |
| c2.length is equal to 42. | PASS |
| c2.sampleRate is equal to 12345. | PASS |
| context = new OfflineAudioContext(3, 42, 12345) did not throw an exception. | PASS |
| context.destination.channelCount is equal to 3. | PASS |
| context.destination.channelCountMode is equal to explicit. | PASS |
| context.destination.channelInterpretation is equal to speakers. | PASS |
| context.length is equal to 42. | PASS |
| context.sampleRate is equal to 12345. | PASS |
| new OfflineAudioContext() threw TypeError: "Failed to construct 'OfflineAudioContext': 1 argument required, but only 0 present.". | PASS |
| new OfflineAudioContext(3) threw TypeError: "Failed to construct 'OfflineAudioContext': parameter 1 ('options') is not an object.". | PASS |
| new OfflineAudioContext(3, 42) threw TypeError: "Failed to construct 'OfflineAudioContext': Valid arities are: [1, 3], but 2 arguments provided.". | PASS |
| new OfflineAudioContext({"length":0,"sampleRate":8000}) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The number of frames provided (0) is less than the minimum bound (1).". | PASS |
| new OfflineAudioContext({"length":1,"sampleRate":1}) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The sampleRate provided (1) is outside the range [3000, 384000].". | PASS |
| new OfflineAudioContext({"length":42,"sampleRate":8000,"numberOfChannels":33}) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The number of channels provided (33) is outside the range [1, 32].". | PASS |
| new OfflineAudioContext({"length":42}) threw TypeError: "Failed to construct 'OfflineAudioContext': required member sampleRate is undefined.". | PASS |
| new OfflineAudioContext({"sampleRate":12345}) threw TypeError: "Failed to construct 'OfflineAudioContext': required member length is undefined.". | PASS |
| new OfflineAudioContext({}) threw TypeError: "Failed to construct 'OfflineAudioContext': required member length is undefined.". | PASS |
| # AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [basic] All assertions passed. (total 8 assertions) | PASS |
| < [options-1] All assertions passed. (total 10 assertions) | PASS |
| < [options-2] All assertions passed. (total 3 assertions) | PASS |
| < [options-3] All assertions passed. (total 8 assertions) | PASS |
| > [basic] Old-style constructor | PASS |
| > [options-1] Required options | PASS |
| > [options-2] Invalid options | PASS |
| > [options-3] Valid options | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-channels.html (20/20, 100.00%, 0.35% of total) | OK |
| Setting source with 3 channels buffer did not throw an exception. | PASS |
| Setting source with 4 channels buffer did not throw an exception. | PASS |
| Setting source with 5 channels buffer did not throw an exception. | PASS |
| Setting source with 6 channels buffer did not throw an exception. | PASS |
| Setting source with 7 channels buffer did not throw an exception. | PASS |
| Setting source with 8 channels buffer did not throw an exception. | PASS |
| Setting source with 9 channels buffer did not throw an exception. | PASS |
| Setting source with mono buffer did not throw an exception. | PASS |
| Setting source with stereo buffer did not throw an exception. | PASS |
| source.buffer = 57 threw TypeError: "Failed to set the 'buffer' property on 'AudioBufferSourceNode': The provided value is not of type 'AudioBuffer'.". | PASS |
| source.buffer = buffer again threw InvalidStateError: "Failed to set the 'buffer' property on 'AudioBufferSourceNode': Cannot set buffer to non-null after it has been already been set to a non-null buffer". | PASS |
| source.buffer = buffer did not throw an exception. | PASS |
| source.buffer = new buffer threw InvalidStateError: "Failed to set the 'buffer' property on 'AudioBufferSourceNode': Cannot set buffer to non-null after it has been already been set to a non-null buffer". | PASS |
| source.buffer = null after setting to null did not throw an exception. | PASS |
| source.buffer = null again did not throw an exception. | PASS |
| source.buffer = null did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [validate .buffer] All assertions passed. (total 16 assertions) | PASS |
| > [validate .buffer] Validatation of AudioBuffer in .buffer attribute setter | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/distance-inverse.html (106/106, 100.00%, 1.84% of total) | OK |
| 0.00007142485992517322 is 0.00007142485524626213 within an error of 0.0000033. | PASS |
| 0.0000721536052878946 is 0.00007215360593004378 within an error of 0.0000033. | PASS |
| 0.00007289737550308928 is 0.00007289738085207445 within an error of 0.0000033. | PASS |
| 0.00007365665078395978 is 0.0000736566494708926 within an error of 0.0000033. | PASS |
| 0.0000744318967917934 is 0.00007443190100963128 within an error of 0.0000033. | PASS |
| 0.00007522365194745362 is 0.0000752236455072146 within an error of 0.0000033. | PASS |
| 0.00007603241101605818 is 0.0000760324149373658 within an error of 0.0000033. | PASS |
| 0.00007685876335017383 is 0.00007685876440058646 within an error of 0.0000033. | PASS |
| 0.00007770327647449449 is 0.0000777032733947189 within an error of 0.0000033. | PASS |
| 0.00007856654701754451 is 0.00007856654717020339 within an error of 0.0000033. | PASS |
| 0.00007944921526359394 is 0.00007944921817669082 within an error of 0.0000033. | PASS |
| 0.00008035194332478568 is 0.00008035194760827667 within an error of 0.0000033. | PASS |
| 0.00008127542969305068 is 0.00008127542705529087 within an error of 0.0000033. | PASS |
| 0.00008222038013627753 is 0.00008222038027131507 within an error of 0.0000033. | PASS |
| 0.0000831875586300157 is 0.00008318756506491622 within an error of 0.0000033. | PASS |
| 0.00008417777280556038 is 0.00008417777532648753 within an error of 0.0000033. | PASS |
| 0.00008519184484612197 is 0.00008519184320159076 within an error of 0.0000033. | PASS |
| 0.00008623064786661416 is 0.00008623064142330383 within an error of 0.0000033. | PASS |
| 0.00008729508408578113 is 0.00008729508581731386 within an error of 0.0000033. | PASS |
| 0.00008838613575790077 is 0.00008838613799486857 within an error of 0.0000033. | PASS |
| 0.00008950480696512386 is 0.00008950480825022975 within an error of 0.0000033. | PASS |
| 0.00009065215999726206 is 0.00009065215868097922 within an error of 0.0000033. | PASS |
| 0.00009182930807583034 is 0.00009182930655143387 within an error of 0.0000033. | PASS |
| 0.0000930374299059622 is 0.00009303742792155874 within an error of 0.0000033. | PASS |
| 0.00009427775512449443 is 0.00009427776156615415 within an error of 0.0000033. | PASS |
| 0.00009555161523167044 is 0.00009555161321177196 within an error of 0.0000033. | PASS |
| 0.00009686036355560645 is 0.00009686036012182393 within an error of 0.0000033. | PASS |
| 0.00009820545528782532 is 0.00009820545606372913 within an error of 0.0000033. | PASS |
| 0.00009958843293134123 is 0.00009958843669576138 within an error of 0.0000033. | PASS |
| 0.00010101093357661739 is 0.00010101092541556044 within an error of 0.0000033. | PASS |
| 0.00010247463796986267 is 0.00010247463971713554 within an error of 0.0000033. | PASS |
| 0.00010398139420431107 is 0.00010398139810869895 within an error of 0.0000033. | PASS |
| 0.00010553312313277274 is 0.0001055331276499139 within an error of 0.0000033. | PASS |
| 0.00010713187657529488 is 0.0001071318721742437 within an error of 0.0000033. | PASS |
| 0.00010877980093937367 is 0.00010877980127016969 within an error of 0.0000033. | PASS |
| 0.00011047922453144565 is 0.0001104792201042672 within an error of 0.0000033. | PASS |
| 0.00011223257752135396 is 0.00011223258017966366 within an error of 0.0000033. | PASS |
| 0.00011404248652979732 is 0.00011404249113547034 within an error of 0.0000033. | PASS |
| 0.00011591173097258434 is 0.0001159117337066233 within an error of 0.0000033. | PASS |
| 0.00011784327944042161 is 0.00011784327397949263 within an error of 0.0000033. | PASS |
| 0.00011984026787104085 is 0.00011984027909696912 within an error of 0.0000033. | PASS |
| 0.00012190613779239357 is 0.00012190613458793458 within an error of 0.0000033. | PASS |
| 0.0001240444544237107 is 0.00012404446352056735 within an error of 0.0000033. | PASS |
| 0.0001262591395061463 is 0.00012625914770742077 within an error of 0.0000033. | PASS |
| 0.0001285543548874557 is 0.0001285543512233631 within an error of 0.0000033. | PASS |
| 0.00013093453890178353 is 0.00013093454653613723 within an error of 0.0000033. | PASS |
| 0.00013340453733690083 is 0.00013340454359453928 within an error of 0.0000033. | PASS |
| 0.00013596951612271369 is 0.00013596952227228016 within an error of 0.0000033. | PASS |
| 0.00013863506319466978 is 0.0001386350686280235 within an error of 0.0000033. | PASS |
| 0.0001414072175975889 is 0.00014140721551575796 within an error of 0.0000033. | PASS |
| 0.0001442924840375781 is 0.0001442924881668536 within an error of 0.0000033. | PASS |
| 0.00014729794929735363 is 0.00014729795546868834 within an error of 0.0000033. | PASS |
| 0.0001504312822362408 is 0.00015043128778808934 within an error of 0.0000033. | PASS |
| 0.0001537008211016655 is 0.00015370082233532315 within an error of 0.0000033. | PASS |
| 0.00015711563173681498 is 0.00015711563724134773 within an error of 0.0000033. | PASS |
| 0.00016068562399595976 is 0.00016068563573421284 within an error of 0.0000033. | PASS |
| 0.00016442163905594498 is 0.00016442164205827313 within an error of 0.0000033. | PASS |
| 0.0001683355076238513 is 0.00016833551109288422 within an error of 0.0000033. | PASS |
| 0.0001724402536638081 is 0.00017244025400894687 within an error of 0.0000033. | PASS |
| 0.00017675016715656966 is 0.0001767501827692215 within an error of 0.0000033. | PASS |
| 0.0001812810660339892 is 0.00018128107685376073 within an error of 0.0000033. | PASS |
| 0.00018605036893859506 is 0.00018605037630348406 within an error of 0.0000033. | PASS |
| 0.00019107740081381053 is 0.00019107740605965677 within an error of 0.0000033. | PASS |
| 0.0001963836548384279 is 0.00019638363768289738 within an error of 0.0000033. | PASS |
| 0.00020199301070533693 is 0.00020199299592548462 within an error of 0.0000033. | PASS |
| 0.00020793221483472735 is 0.00020793221938875033 within an error of 0.0000033. | PASS |
| 0.0002142313023796305 is 0.00021423128673467743 within an error of 0.0000033. | PASS |
| 0.0002209239173680544 is 0.00022092392278720384 within an error of 0.0000033. | PASS |
| 0.00022804820036981255 is 0.00022804820255702685 within an error of 0.0000033. | PASS |
| 0.00023564728326164186 is 0.00023564727603110863 within an error of 0.0000033. | PASS |
| 0.0002437702496536076 is 0.0002437702428669352 within an error of 0.0000033. | PASS |
| 0.0002524732262827456 is 0.0002524732144543359 within an error of 0.0000033. | PASS |
| 0.00026182059082202613 is 0.0002618206119036511 within an error of 0.0000033. | PASS |
| 0.0002718867617659271 is 0.00027188676345445823 within an error of 0.0000033. | PASS |
| 0.0002827578573487699 is 0.0002827578851090863 within an error of 0.0000033. | PASS |
| 0.00029453454772010446 is 0.00029453455621825906 within an error of 0.0000033. | PASS |
| 0.0003073348489124328 is 0.00030733484059099675 within an error of 0.0000033. | PASS |
| 0.00032129825558513403 is 0.000321298258429533 within an error of 0.0000033. | PASS |
| 0.0003365908924024552 is 0.00033659089256258244 within an error of 0.0000033. | PASS |
| 0.0003534120332915336 is 0.0003534120257829606 within an error of 0.0000033. | PASS |
| 0.0003720028616953641 is 0.00037200287308386824 within an error of 0.0000033. | PASS |
| 0.00039265822852030396 is 0.0003926582230242598 within an error of 0.0000033. | PASS |
| 0.0004157421935815364 is 0.00041574218539568777 within an error of 0.0000033. | PASS |
| 0.00044170982437208295 is 0.00044170984057529024 within an error of 0.0000033. | PASS |
| 0.00047113755135796964 is 0.00047113754285008335 within an error of 0.0000033. | PASS |
| 0.0005047661834396422 is 0.0005047662016094025 within an error of 0.0000033. | PASS |
| 0.0005435644998215139 is 0.0005435645231164894 within an error of 0.0000033. | PASS |
| 0.0005888238083571196 is 0.0005888238468344444 within an error of 0.0000033. | PASS |
| 0.000642304599750787 is 0.0006423046636689839 within an error of 0.0000033. | PASS |
| 0.0007064709207043052 is 0.0007064709573249552 within an error of 0.0000033. | PASS |
| 0.0007848805980756879 is 0.0007848805998230096 within an error of 0.0000033. | PASS |
| 0.0008828681893646717 is 0.0008828681780783943 within an error of 0.0000033. | PASS |
| 0.0010088123381137848 is 0.0010088122653996085 within an error of 0.0000033. | PASS |
| 0.0011766677489504218 is 0.0011766678556703624 within an error of 0.0000033. | PASS |
| 0.001411531469784677 is 0.0014115316522338509 within an error of 0.0000033. | PASS |
| 0.001763534382916987 is 0.0017635344702377983 within an error of 0.0000033. | PASS |
| 0.0023494260385632515 is 0.0023494261261472827 within an error of 0.0000033. | PASS |
| 0.003518294310197234 is 0.003518294264038947 within an error of 0.0000033. | PASS |
| 0.007001750636845827 is 0.007001750482092757 within an error of 0.0000033. | PASS |
| 0.7071067690849304 is 0.7071067811865476 within an error of 0.0000033. | PASS |
| Max error in distance gains is less than or equal to 0.0000033. | PASS |
| Number of impulses is equal to 100. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 102 assertions) | PASS |
| > [test] | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/baseaudiocontext-audioworklet.https.html (5/5, 100.00%, 0.09% of total) | OK |
| BaseAudioContext.audioWorklet is an instance of AudioWorklet is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Test if AudioWorklet exists] All assertions passed. (total 1 assertions) | PASS |
| > [Test if AudioWorklet exists] | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworklet-messageport.https.html (8/8, 100.00%, 0.14% of total) | OK |
| The initial message from PortProcessor is equal to created. | PASS |
| The response from PortProcessor is equal to hello. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Test postMessage from AudioWorkletNode to AudioWorkletProcessor] All assertions passed. (total 1 assertions) | PASS |
| < [Test postMessage from AudioWorkletProcessor to AudioWorkletNode] All assertions passed. (total 1 assertions) | PASS |
| > [Test postMessage from AudioWorkletNode to AudioWorkletProcessor] | PASS |
| > [Test postMessage from AudioWorkletProcessor to AudioWorkletNode] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/audioparam-large-endtime.html (8/8, 100.00%, 0.14% of total) | OK |
| exponentialRampToValue(0.1, 1e+300) successfully rendered | PASS |
| linearRampToValue(0.1, 1e+300) successfully rendered | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [exponentialRamp] All assertions passed. (total 1 assertions) | PASS |
| < [linearRamp] All assertions passed. (total 1 assertions) | PASS |
| > [exponentialRamp] | PASS |
| > [linearRamp] | PASS |
| /webaudio/the-audio-api/the-gainnode-interface/no-dezippering.html (14/14, 100.00%, 0.24% of total) | OK |
| .value setter output is identical to the array [0,0.1679382622241974,0.3311063051223755,0.4848693013191223,0.6248595714569092,0.7471005916595459,0.8481203317642212,0.9250491857528687,0.9757021069526672,0.9986401796340942,0.9932119250297546,0.9595714807510376,0.898674488067627,0.812250554561615,0.7027547359466553,0.5732971429824829...]. | PASS |
| .value setter output matches setValueAtTime output is true. | PASS |
| With modulation: .value setter output is identical to the array [0,0.23077473044395447,0.5608845949172974,0.92753666639328,1.249295711517334,1.4497532844543457,1.480018973350525,1.3333392143249512,1.0474791526794434,0.6941255927085876,0.35842588543891907,0.1146966814994812,0.00547564635053277,0.03009122796356678,0.1460980921983719,0.28310179710388184...]. | PASS |
| With modulation: .value setter output matches setValueAtTime output is true. | PASS |
| output[0:127] contains only the constant 1. | PASS |
| output[128:] contains only the constant 0.5. | PASS |
| # AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test0] All assertions passed. (total 2 assertions) | PASS |
| < [test2] All assertions passed. (total 2 assertions) | PASS |
| < [test3] All assertions passed. (total 2 assertions) | PASS |
| > [test0] Dezippering of GainNode removed | PASS |
| > [test2] Compare value setter and setValueAtTime | PASS |
| > [test3] Automation effects | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurveAtTime.html (26/26, 100.00%, 0.45% of total) | OK |
| Max error for test 0 at offset 1304 is less than or equal to 0.0000037194. | PASS |
| Max error for test 1 at offset 2573 is less than or equal to 0.0000037194. | PASS |
| Max error for test 10 at offset 14380 is less than or equal to 0.0000037194. | PASS |
| Max error for test 11 at offset 15809 is less than or equal to 0.0000037194. | PASS |
| Max error for test 12 at offset 17037 is less than or equal to 0.0000037194. | PASS |
| Max error for test 13 at offset 18497 is less than or equal to 0.0000037194. | PASS |
| Max error for test 14 at offset 19725 is less than or equal to 0.0000037194. | PASS |
| Max error for test 15 at offset 21149 is less than or equal to 0.0000037194. | PASS |
| Max error for test 16 at offset 22465 is less than or equal to 0.0000037194. | PASS |
| Max error for test 17 at offset 23693 is less than or equal to 0.0000037194. | PASS |
| Max error for test 18 at offset 25122 is less than or equal to 0.0000037194. | PASS |
| Max error for test 19 at offset 26438 is less than or equal to 0.0000037194. | PASS |
| Max error for test 2 at offset 3798 is less than or equal to 0.0000037194. | PASS |
| Max error for test 3 at offset 5277 is less than or equal to 0.0000037194. | PASS |
| Max error for test 4 at offset 6541 is less than or equal to 0.0000037194. | PASS |
| Max error for test 5 at offset 7766 is less than or equal to 0.0000037194. | PASS |
| Max error for test 6 at offset 9239 is less than or equal to 0.0000037194. | PASS |
| Max error for test 7 at offset 10418 is less than or equal to 0.0000037194. | PASS |
| Max error for test 8 at offset 11734 is less than or equal to 0.0000037194. | PASS |
| Max error for test 9 at offset 13163 is less than or equal to 0.0000037194. | PASS |
| Number of failed tests with an acceptable relative tolerance of 0.0000037194 is equal to 0. | PASS |
| Number of tests started and ended at the correct time is equal to 20. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 22 assertions) | PASS |
| > [test] AudioParam setValueCurveAtTime() functionality. | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html (6/6, 100.00%, 0.10% of total) | OK |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [constructor-error] All assertions passed. (total 0 assertions) | PASS |
| < [process-error] All assertions passed. (total 0 assertions) | PASS |
| > [constructor-error] | PASS |
| > [process-error] | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-start.html (22/22, 100.00%, 0.38% of total) | OK |
| 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...]. | PASS |
| Case 0: start(when): implicitly play whole buffer from beginning to end: tail contains only the constant 0. | PASS |
| 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...]. | PASS |
| Case 1: start(when, 0): play whole buffer from beginning to end explicitly giving offset of 0: tail contains only the constant 0. | PASS |
| 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...]. | PASS |
| 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. | PASS |
| 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...]. | PASS |
| Case 3: start(when, 4_frames): play with explicit non-zero offset: tail contains only the constant 0. | PASS |
| 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...]. | PASS |
| Case 4: start(when, 4_frames, 4_frames): play with explicit non-zero offset and duration: tail contains only the constant 0. | PASS |
| 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...]. | PASS |
| Case 5: start(when, 7_frames): play with explicit non-zero offset near end of buffer: tail contains only the constant 0. | PASS |
| 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...]. | PASS |
| Case 6: start(when, 8_frames): play with explicit offset at end of buffer: tail contains only the constant 0. | PASS |
| 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...]. | PASS |
| Case 7: start(when, 9_frames): play with explicit offset past end of buffer: tail contains only the constant 0. | PASS |
| 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...]. | PASS |
| Case 8: start(when, 0, 15_frames): play with whole buffer, with long duration (clipped): tail contains only the constant 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Tests AudioBufferSourceNode start()] All assertions passed. (total 18 assertions) | PASS |
| > [Tests AudioBufferSourceNode start()] | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowpass.html (7/7, 100.00%, 0.12% of total) | OK |
| Max error in Lowpass filter response is less than or equal to 9.7869e-8. | PASS |
| Number of filters tested is equal to 5. | PASS |
| Number of non-finite values in the rendered output is equal to 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Biquad lowpass filter | PASS |
| /webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html (54/54, 100.00%, 0.94% of total) | OK |
| AudioBuffer shared between two different contexts correctly | PASS |
| buffer = new AudioBuffer({"numberOfChannels":5,"length":17,"sampleRate":16000}) did not throw an exception. | PASS |
| buffer = new AudioBuffer({length: 1}) threw TypeError: "Failed to construct 'AudioBuffer': required member sampleRate is undefined.". | PASS |
| buffer = new AudioBuffer({numberOfChannels: 1} threw TypeError: "Failed to construct 'AudioBuffer': required member length is undefined.". | PASS |
| buffer = new AudioBuffer({sampleRate: 48000}) threw TypeError: "Failed to construct 'AudioBuffer': required member length is undefined.". | PASS |
| buffer = new AudioBuffer({}) threw TypeError: "Failed to construct 'AudioBuffer': required member length is undefined.". | PASS |
| buffer.getChannelData(0) did not throw an exception. | PASS |
| buffer.getChannelData(0) length is equal to 42. | PASS |
| buffer.getChannelData(1) did not throw an exception. | PASS |
| buffer.getChannelData(1) length is equal to 42. | PASS |
| buffer.getChannelData(2) did not throw an exception. | PASS |
| buffer.getChannelData(2) length is equal to 42. | PASS |
| buffer.getChannelData(3) threw IndexSizeError: "Failed to execute 'getChannelData' on 'AudioBuffer': channel index (3) exceeds number of channels (3)". | PASS |
| buffer.length is equal to 17. | PASS |
| buffer.length is equal to 42. | PASS |
| buffer.numberOfChannels is equal to 3. | PASS |
| buffer.numberOfChannels is equal to 5. | PASS |
| buffer.sampleRate is equal to 16000. | PASS |
| buffer.sampleRate is equal to 54321. | PASS |
| buffer0 = new AudioBuffer({length: 21, sampleRate: 48000} did not throw an exception. | PASS |
| buffer0.length is equal to 21. | PASS |
| buffer0.numberOfChannels is equal to 1. | PASS |
| buffer0.sampleRate is equal to 48000. | PASS |
| buffer1 = new AudioBuffer({numberOfChannels: 3, length: 1, sampleRate: 48000}) did not throw an exception. | PASS |
| buffer1.length is equal to 1. | PASS |
| buffer1.numberOfChannels is equal to 3. | PASS |
| buffer1.sampleRate is equal to 48000. | PASS |
| c1 result is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...]. | PASS |
| c2 result is identical to the array [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16...]. | PASS |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new AudioBuffer() threw TypeError: "Failed to construct 'AudioBuffer': 1 argument required, but only 0 present.". | PASS |
| new AudioBuffer(1) threw TypeError: "Failed to construct 'AudioBuffer': parameter 1 ('options') is not an object.". | PASS |
| new AudioBuffer(Date, 42) threw TypeError: "Failed to construct 'AudioBuffer': required member sampleRate is undefined.". | PASS |
| new AudioBuffer({"numberOfChannels":0,"length":1,"sampleRate":16000}) threw NotSupportedError: "Failed to construct 'AudioBuffer': The number of channels provided (0) is outside the range [1, 32].". | PASS |
| new AudioBuffer({"numberOfChannels":1,"length":0,"sampleRate":16000}) threw NotSupportedError: "Failed to construct 'AudioBuffer': The number of frames provided (0) is less than or equal to the minimum bound (0).". | PASS |
| new AudioBuffer({"numberOfChannels":1,"length":1,"sampleRate":100}) threw NotSupportedError: "Failed to construct 'AudioBuffer': The sample rate provided (100) is outside the range [3000, 384000].". | PASS |
| new AudioBuffer({"numberOfChannels":3,"length":42,"sampleRate":54321}) did not throw an exception. | PASS |
| new AudioBuffer({"numberOfChannels":99,"length":0,"sampleRate":16000}) threw NotSupportedError: "Failed to construct 'AudioBuffer': The number of channels provided (99) is outside the range [1, 32].". | PASS |
| # AUDIT TASK RUNNER FINISHED: 7 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [default constructor] All assertions passed. (total 4 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [invalid option values] All assertions passed. (total 4 assertions) | PASS |
| < [multiple contexts] All assertions passed. (total 3 assertions) | PASS |
| < [required options] All assertions passed. (total 12 assertions) | PASS |
| < [valid constructor] All assertions passed. (total 11 assertions) | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [invalid option values] | PASS |
| > [multiple contexts] | PASS |
| > [required options] | PASS |
| > [valid constructor] | PASS |
| /webaudio/the-audio-api/the-waveshapernode-interface/waveshaper.html (5/5, 100.00%, 0.09% of total) | OK |
| WaveShaperNode applied non-linear distortion correctly is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 1 assertions) | PASS |
| > [test] | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/note-grain-on-play.html (210/210, 100.00%, 3.65% of total) | OK |
| Found all grain starts and ends is true. | PASS |
| Number of end frames is equal to 100. | PASS |
| Number of grains that did not contain the expected data is equal to 0. | PASS |
| Number of grains that ended at the correct time is equal to 100. | PASS |
| Number of grains that started at the correct time is equal to 100. | PASS |
| Number of start frames is equal to 100. | PASS |
| Pulse 0 boundary is identical to the array [0,441]. | PASS |
| Pulse 0 contained the expected data is true. | PASS |
| Pulse 1 boundary is identical to the array [662,1103]. | PASS |
| Pulse 1 contained the expected data is true. | PASS |
| Pulse 10 boundary is identical to the array [6615,7056]. | PASS |
| Pulse 10 contained the expected data is true. | PASS |
| Pulse 11 boundary is identical to the array [7276,7717]. | PASS |
| Pulse 11 contained the expected data is true. | PASS |
| Pulse 12 boundary is identical to the array [7938,8379]. | PASS |
| Pulse 12 contained the expected data is true. | PASS |
| Pulse 13 boundary is identical to the array [8600,9041]. | PASS |
| Pulse 13 contained the expected data is true. | PASS |
| Pulse 14 boundary is identical to the array [9261,9702]. | PASS |
| Pulse 14 contained the expected data is true. | PASS |
| Pulse 15 boundary is identical to the array [9922,10363]. | PASS |
| Pulse 15 contained the expected data is true. | PASS |
| Pulse 16 boundary is identical to the array [10584,11025]. | PASS |
| Pulse 16 contained the expected data is true. | PASS |
| Pulse 17 boundary is identical to the array [11246,11687]. | PASS |
| Pulse 17 contained the expected data is true. | PASS |
| Pulse 18 boundary is identical to the array [11907,12348]. | PASS |
| Pulse 18 contained the expected data is true. | PASS |
| Pulse 19 boundary is identical to the array [12568,13009]. | PASS |
| Pulse 19 contained the expected data is true. | PASS |
| Pulse 2 boundary is identical to the array [1323,1764]. | PASS |
| Pulse 2 contained the expected data is true. | PASS |
| Pulse 20 boundary is identical to the array [13230,13671]. | PASS |
| Pulse 20 contained the expected data is true. | PASS |
| Pulse 21 boundary is identical to the array [13892,14333]. | PASS |
| Pulse 21 contained the expected data is true. | PASS |
| Pulse 22 boundary is identical to the array [14553,14994]. | PASS |
| Pulse 22 contained the expected data is true. | PASS |
| Pulse 23 boundary is identical to the array [15214,15655]. | PASS |
| Pulse 23 contained the expected data is true. | PASS |
| Pulse 24 boundary is identical to the array [15876,16317]. | PASS |
| Pulse 24 contained the expected data is true. | PASS |
| Pulse 25 boundary is identical to the array [16538,16979]. | PASS |
| Pulse 25 contained the expected data is true. | PASS |
| Pulse 26 boundary is identical to the array [17199,17640]. | PASS |
| Pulse 26 contained the expected data is true. | PASS |
| Pulse 27 boundary is identical to the array [17861,18302]. | PASS |
| Pulse 27 contained the expected data is true. | PASS |
| Pulse 28 boundary is identical to the array [18522,18963]. | PASS |
| Pulse 28 contained the expected data is true. | PASS |
| Pulse 29 boundary is identical to the array [19184,19625]. | PASS |
| Pulse 29 contained the expected data is true. | PASS |
| Pulse 3 boundary is identical to the array [1985,2426]. | PASS |
| Pulse 3 contained the expected data is true. | PASS |
| Pulse 30 boundary is identical to the array [19845,20286]. | PASS |
| Pulse 30 contained the expected data is true. | PASS |
| Pulse 31 boundary is identical to the array [20507,20948]. | PASS |
| Pulse 31 contained the expected data is true. | PASS |
| Pulse 32 boundary is identical to the array [21168,21609]. | PASS |
| Pulse 32 contained the expected data is true. | PASS |
| Pulse 33 boundary is identical to the array [21830,22271]. | PASS |
| Pulse 33 contained the expected data is true. | PASS |
| Pulse 34 boundary is identical to the array [22491,22932]. | PASS |
| Pulse 34 contained the expected data is true. | PASS |
| Pulse 35 boundary is identical to the array [23153,23594]. | PASS |
| Pulse 35 contained the expected data is true. | PASS |
| Pulse 36 boundary is identical to the array [23814,24255]. | PASS |
| Pulse 36 contained the expected data is true. | PASS |
| Pulse 37 boundary is identical to the array [24475,24916]. | PASS |
| Pulse 37 contained the expected data is true. | PASS |
| Pulse 38 boundary is identical to the array [25137,25578]. | PASS |
| Pulse 38 contained the expected data is true. | PASS |
| Pulse 39 boundary is identical to the array [25799,26240]. | PASS |
| Pulse 39 contained the expected data is true. | PASS |
| Pulse 4 boundary is identical to the array [2646,3087]. | PASS |
| Pulse 4 contained the expected data is true. | PASS |
| Pulse 40 boundary is identical to the array [26460,26901]. | PASS |
| Pulse 40 contained the expected data is true. | PASS |
| Pulse 41 boundary is identical to the array [27122,27563]. | PASS |
| Pulse 41 contained the expected data is true. | PASS |
| Pulse 42 boundary is identical to the array [27783,28224]. | PASS |
| Pulse 42 contained the expected data is true. | PASS |
| Pulse 43 boundary is identical to the array [28445,28886]. | PASS |
| Pulse 43 contained the expected data is true. | PASS |
| Pulse 44 boundary is identical to the array [29106,29547]. | PASS |
| Pulse 44 contained the expected data is true. | PASS |
| Pulse 45 boundary is identical to the array [29767,30208]. | PASS |
| Pulse 45 contained the expected data is true. | PASS |
| Pulse 46 boundary is identical to the array [30429,30870]. | PASS |
| Pulse 46 contained the expected data is true. | PASS |
| Pulse 47 boundary is identical to the array [31091,31532]. | PASS |
| Pulse 47 contained the expected data is true. | PASS |
| Pulse 48 boundary is identical to the array [31752,32193]. | PASS |
| Pulse 48 contained the expected data is true. | PASS |
| Pulse 49 boundary is identical to the array [32414,32855]. | PASS |
| Pulse 49 contained the expected data is true. | PASS |
| Pulse 5 boundary is identical to the array [3308,3749]. | PASS |
| Pulse 5 contained the expected data is true. | PASS |
| Pulse 50 boundary is identical to the array [33075,33516]. | PASS |
| Pulse 50 contained the expected data is true. | PASS |
| Pulse 51 boundary is identical to the array [33737,34178]. | PASS |
| Pulse 51 contained the expected data is true. | PASS |
| Pulse 52 boundary is identical to the array [34398,34839]. | PASS |
| Pulse 52 contained the expected data is true. | PASS |
| Pulse 53 boundary is identical to the array [35060,35501]. | PASS |
| Pulse 53 contained the expected data is true. | PASS |
| Pulse 54 boundary is identical to the array [35721,36162]. | PASS |
| Pulse 54 contained the expected data is true. | PASS |
| Pulse 55 boundary is identical to the array [36383,36824]. | PASS |
| Pulse 55 contained the expected data is true. | PASS |
| Pulse 56 boundary is identical to the array [37044,37485]. | PASS |
| Pulse 56 contained the expected data is true. | PASS |
| Pulse 57 boundary is identical to the array [37706,38147]. | PASS |
| Pulse 57 contained the expected data is true. | PASS |
| Pulse 58 boundary is identical to the array [38367,38808]. | PASS |
| Pulse 58 contained the expected data is true. | PASS |
| Pulse 59 boundary is identical to the array [39029,39470]. | PASS |
| Pulse 59 contained the expected data is true. | PASS |
| Pulse 6 boundary is identical to the array [3969,4410]. | PASS |
| Pulse 6 contained the expected data is true. | PASS |
| Pulse 60 boundary is identical to the array [39690,40131]. | PASS |
| Pulse 60 contained the expected data is true. | PASS |
| Pulse 61 boundary is identical to the array [40352,40793]. | PASS |
| Pulse 61 contained the expected data is true. | PASS |
| Pulse 62 boundary is identical to the array [41013,41454]. | PASS |
| Pulse 62 contained the expected data is true. | PASS |
| Pulse 63 boundary is identical to the array [41675,42116]. | PASS |
| Pulse 63 contained the expected data is true. | PASS |
| Pulse 64 boundary is identical to the array [42336,42777]. | PASS |
| Pulse 64 contained the expected data is true. | PASS |
| Pulse 65 boundary is identical to the array [42998,43439]. | PASS |
| Pulse 65 contained the expected data is true. | PASS |
| Pulse 66 boundary is identical to the array [43659,44100]. | PASS |
| Pulse 66 contained the expected data is true. | PASS |
| Pulse 67 boundary is identical to the array [44320,44761]. | PASS |
| Pulse 67 contained the expected data is true. | PASS |
| Pulse 68 boundary is identical to the array [44982,45423]. | PASS |
| Pulse 68 contained the expected data is true. | PASS |
| Pulse 69 boundary is identical to the array [45644,46085]. | PASS |
| Pulse 69 contained the expected data is true. | PASS |
| Pulse 7 boundary is identical to the array [4631,5072]. | PASS |
| Pulse 7 contained the expected data is true. | PASS |
| Pulse 70 boundary is identical to the array [46305,46746]. | PASS |
| Pulse 70 contained the expected data is true. | PASS |
| Pulse 71 boundary is identical to the array [46967,47408]. | PASS |
| Pulse 71 contained the expected data is true. | PASS |
| Pulse 72 boundary is identical to the array [47628,48069]. | PASS |
| Pulse 72 contained the expected data is true. | PASS |
| Pulse 73 boundary is identical to the array [48290,48731]. | PASS |
| Pulse 73 contained the expected data is true. | PASS |
| Pulse 74 boundary is identical to the array [48951,49392]. | PASS |
| Pulse 74 contained the expected data is true. | PASS |
| Pulse 75 boundary is identical to the array [49613,50053]. | PASS |
| Pulse 75 contained the expected data is true. | PASS |
| Pulse 76 boundary is identical to the array [50274,50715]. | PASS |
| Pulse 76 contained the expected data is true. | PASS |
| Pulse 77 boundary is identical to the array [50936,51377]. | PASS |
| Pulse 77 contained the expected data is true. | PASS |
| Pulse 78 boundary is identical to the array [51597,52038]. | PASS |
| Pulse 78 contained the expected data is true. | PASS |
| Pulse 79 boundary is identical to the array [52259,52700]. | PASS |
| Pulse 79 contained the expected data is true. | PASS |
| Pulse 8 boundary is identical to the array [5292,5733]. | PASS |
| Pulse 8 contained the expected data is true. | PASS |
| Pulse 80 boundary is identical to the array [52920,53361]. | PASS |
| Pulse 80 contained the expected data is true. | PASS |
| Pulse 81 boundary is identical to the array [53581,54022]. | PASS |
| Pulse 81 contained the expected data is true. | PASS |
| Pulse 82 boundary is identical to the array [54243,54684]. | PASS |
| Pulse 82 contained the expected data is true. | PASS |
| Pulse 83 boundary is identical to the array [54904,55345]. | PASS |
| Pulse 83 contained the expected data is true. | PASS |
| Pulse 84 boundary is identical to the array [55566,56007]. | PASS |
| Pulse 84 contained the expected data is true. | PASS |
| Pulse 85 boundary is identical to the array [56227,56668]. | PASS |
| Pulse 85 contained the expected data is true. | PASS |
| Pulse 86 boundary is identical to the array [56889,57330]. | PASS |
| Pulse 86 contained the expected data is true. | PASS |
| Pulse 87 boundary is identical to the array [57551,57992]. | PASS |
| Pulse 87 contained the expected data is true. | PASS |
| Pulse 88 boundary is identical to the array [58212,58653]. | PASS |
| Pulse 88 contained the expected data is true. | PASS |
| Pulse 89 boundary is identical to the array [58874,59315]. | PASS |
| Pulse 89 contained the expected data is true. | PASS |
| Pulse 9 boundary is identical to the array [5954,6395]. | PASS |
| Pulse 9 contained the expected data is true. | PASS |
| Pulse 90 boundary is identical to the array [59535,59976]. | PASS |
| Pulse 90 contained the expected data is true. | PASS |
| Pulse 91 boundary is identical to the array [60197,60638]. | PASS |
| Pulse 91 contained the expected data is true. | PASS |
| Pulse 92 boundary is identical to the array [60858,61299]. | PASS |
| Pulse 92 contained the expected data is true. | PASS |
| Pulse 93 boundary is identical to the array [61520,61961]. | PASS |
| Pulse 93 contained the expected data is true. | PASS |
| Pulse 94 boundary is identical to the array [62181,62622]. | PASS |
| Pulse 94 contained the expected data is true. | PASS |
| Pulse 95 boundary is identical to the array [62843,63284]. | PASS |
| Pulse 95 contained the expected data is true. | PASS |
| Pulse 96 boundary is identical to the array [63504,63945]. | PASS |
| Pulse 96 contained the expected data is true. | PASS |
| Pulse 97 boundary is identical to the array [64165,64606]. | PASS |
| Pulse 97 contained the expected data is true. | PASS |
| Pulse 98 boundary is identical to the array [64827,65268]. | PASS |
| Pulse 98 contained the expected data is true. | PASS |
| Pulse 99 boundary is identical to the array [65488,65929]. | PASS |
| Pulse 99 contained the expected data is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [note-grain-on-play] All assertions passed. (total 206 assertions) | PASS |
| > [note-grain-on-play] Test noteGrainOn offset rendering | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/event-insertion.html (44/44, 100.00%, 0.77% of total) | OK |
| Expo+Linear: At time 0.01556396484375 (frame 255) output is 2.9871532226369792 within an error of 0.0000042533. | PASS |
| Expo+Linear: At time 0.015625 (frame 256) and later, output contains only the constant 2. | PASS |
| Expo+Linear: Context length is long enough for the test is true. | PASS |
| Expo+Linear: exponentialRampToValueAtTime(3, 0.015625) did not throw an exception. | PASS |
| Expo+Linear: linearRampToValueAtTime(2, 0.015625) did not throw an exception. | PASS |
| Expo+Linear: setValueAtTime(99, 0.015625) did not throw an exception. | PASS |
| Linear+Expo: At time 0.01556396484375 (frame 255) output is 1.99609375 within an error of 0. | PASS |
| Linear+Expo: At time 0.015625 (frame 256) and later, output contains only the constant 3. | PASS |
| Linear+Expo: Context length is long enough for the test is true. | PASS |
| Linear+Expo: exponentialRampToValueAtTime(3, 0.015625) did not throw an exception. | PASS |
| Linear+Expo: linearRampToValueAtTime(2, 0.015625) did not throw an exception. | PASS |
| Linear+Expo: setValueAtTime(99, 0.015625) did not throw an exception. | PASS |
| Linear+SetTarget: At time 0.01556396484375 (frame 255) output is 2.9921875 within an error of 0. | PASS |
| 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}. | PASS |
| Linear+SetTarget: At time 0.015625 (frame 256) output is equal to 100. | PASS |
| Linear+SetTarget: Context length is long enough for the test is true. | PASS |
| Linear+SetTarget: linearRampToValueAtTime(3, 0.015625) did not throw an exception. | PASS |
| Linear+SetTarget: setTargetAtTime(0, 0.015625, 0.1) did not throw an exception. | PASS |
| Linear+SetTarget: setValueAtTime(100, 0.015625) did not throw an exception. | PASS |
| Output at frame 128 (time 0.0078125) is equal to 1. | PASS |
| Output at frame 256 (time 0.015625) is equal to 2. | PASS |
| Output at frame 384 (time 0.0234375) is equal to 3. | PASS |
| Output at frame 512 (time 0.03125) is equal to 4. | PASS |
| Output at frame 640 (time 0.0390625) is equal to 5. | PASS |
| exponentialRampToValueAtTime(3, 0.0234375) did not throw an exception. | PASS |
| exponentialRampToValueAtTime(99, 0.0234375) did not throw an exception. | PASS |
| linearRampToValueAtTime(2, 0.015625) did not throw an exception. | PASS |
| linearRampToValueAtTime(99, 0.015625) did not throw an exception. | PASS |
| setValueAtTime(1, 0.0078125) did not throw an exception. | PASS |
| setValueAtTime(1, 0.03900146484375) did not throw an exception. | PASS |
| setValueAtTime(5, 0.03900146484375) did not throw an exception. | PASS |
| setValueAtTime(99, 0.0078125) did not throw an exception. | PASS |
| setValueAtTime(99, 0.03900146484375) did not throw an exception. | PASS |
| setValueCurveAtTime([3,4], 0.0234375, 0.0078125) did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Expo + Linear] All assertions passed. (total 6 assertions) | PASS |
| < [Insert same event at same time] All assertions passed. (total 15 assertions) | PASS |
| < [Linear + Expo] All assertions passed. (total 6 assertions) | PASS |
| < [Linear + SetTarget] All assertions passed. (total 7 assertions) | PASS |
| > [Expo + Linear] Different events at same time | PASS |
| > [Insert same event at same time] | PASS |
| > [Linear + Expo] Different events at same time | PASS |
| > [Linear + SetTarget] Different events at same time | PASS |
| /webaudio/the-audio-api/the-iirfilternode-interface/iirfilter.html (54/54, 100.00%, 0.94% of total) | OK |
| 4-th order IIRFilter (biquad ref) equals [0.000004181719305051956,0.000032965795980999246,0.00012939768203068525,0.0003477365826256573,0.0007387272780761123,0.0013446896336972713,0.0021993760019540787,0.0033279552590101957,0.004747116006910801,0.006465280428528786,0.008482920937240124,0.010792967863380909,0.013381300494074821,0.01622730866074562,0.019304513931274414,0.02258124388754368...] with an element-wise tolerance of {"absoluteThreshold":1.59e-7,"relativeThreshold":0.0000211}. | PASS |
| 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}. | PASS |
| 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}. | PASS |
| IIRFilter for Biquad allpass equals [0.9908915162086487,0.9728335738182068,0.9551669955253601,0.938035786151886,0.9215781092643738,0.9059253334999084,0.891200840473175,0.8775191307067871,0.8649849891662598,0.8536926507949829,0.8437251448631287,0.8351536393165588,0.8280369639396667,0.8224213123321533,0.8183399438858032,0.8158129453659058...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000431}. | PASS |
| IIRFilter for Biquad bandpass equals [0.004554244689643383,0.013583214953541756,0.022416498512029648,0.03098210319876671,0.03921092674136162,0.047037310898303986,0.054399557411670685,0.06124040484428406,0.06750746816396713,0.07315362989902496,0.07813739031553268,0.08242315798997879,0.08598149567842484,0.08878931403160095,0.090829998254776,0.09209349006414413...] with an element-wise tolerance of {"absoluteThreshold":2e-7,"relativeThreshold":0.00087}. | PASS |
| IIRFilter for Biquad highpass equals [0.9836710095405579,0.9474785923957825,0.904482364654541,0.8552320003509521,0.8003131747245789,0.7403417825698853,0.6759579181671143,0.6078199744224548,0.5365985631942749,0.46297064423561096,0.38761380314826965,0.3112005889415741,0.23439310491085052,0.15783783793449402,0.08216073364019394,0.007962634786963463...] with an element-wise tolerance of {"absoluteThreshold":0.0000029,"relativeThreshold":0.00003}. | PASS |
| IIRFilter for Biquad highshelf equals [3.0451014041900635,2.816114902496338,2.5985426902770996,2.3935580253601074,2.2019755840301514,2.024296998977661,1.8607536554336548,1.7113463878631592,1.5758819580078125,1.4540066719055176,1.3452364206314087,1.2489843368530273,1.164584755897522,1.0913151502609253,1.0284149646759033,0.9751021265983582...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000124}. | PASS |
| IIRFilter for Biquad lowpass equals [0.002067622495815158,0.010262038558721542,0.026408346369862556,0.0501461997628212,0.08106274157762527,0.11869752407073975,0.16254766285419464,0.2120732218027115,0.26670271158218384,0.32583874464035034,0.3888637125492096,0.4551454484462738,0.5240428447723389,0.594911515712738,0.6671090722084045,0.7400005459785461...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.000049834}. | PASS |
| IIRFilter for Biquad lowshelf equals [1.038480281829834,1.1165722608566284,1.1966439485549927,1.2781513929367065,1.3605945110321045,1.4435153007507324,1.5264960527420044,1.6091575622558594,1.6911571025848389,1.7721866369247437,1.8519710302352905,1.9302663803100586,2.0068578720092773,2.0815584659576416,2.1542069911956787,2.224666118621826...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000298}. | PASS |
| IIRFilter for Biquad notch equals [0.995445728302002,0.986416757106781,0.9775834679603577,0.9690178632736206,0.9607890248298645,0.9529626369476318,0.9456003904342651,0.9387595653533936,0.9324925541877747,0.926846444606781,0.9218627214431763,0.9175769686698914,0.9140186309814453,0.911210834980011,0.9091701507568359,0.9079066514968872...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000422}. | PASS |
| IIRFilter for Biquad peaking equals [1.0055487155914307,1.016571283340454,1.0273985862731934,1.0379409790039062,1.0481117963790894,1.0578278303146362,1.0670100450515747,1.0755844116210938,1.083482265472412,1.090640902519226,1.0970042943954468,1.1025232076644897,1.1071557998657227,1.1108678579330444,1.1136330366134644,1.1154330968856812...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000505}. | PASS |
| Max difference between IIR and Biquad on channel 0 is less than or equal to 0.000037671. | PASS |
| Max difference between IIR and Biquad on channel 1 is less than or equal to 0.000030071. | PASS |
| Max difference between IIR and Biquad on channel 2 is less than or equal to 0.000026241. | PASS |
| 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}. | PASS |
| SNR for IIRFIlter for Biquad allpass is greater than or equal to 91.319. | PASS |
| SNR for IIRFIlter for Biquad bandpass is greater than or equal to 104.06. | PASS |
| SNR for IIRFIlter for Biquad highpass is greater than or equal to 105.459. | PASS |
| SNR for IIRFIlter for Biquad highshelf is greater than or equal to 103.159. | PASS |
| SNR for IIRFIlter for Biquad lowpass is greater than or equal to 91.221. | PASS |
| SNR for IIRFIlter for Biquad lowshelf is greater than or equal to 90.609. | PASS |
| SNR for IIRFIlter for Biquad notch is greater than or equal to 91.312. | PASS |
| SNR for IIRFIlter for Biquad peaking is greater than or equal to 91.504. | PASS |
| SNR of 4-th order IIRFilter (biquad ref) is greater than or equal to 108.947. | PASS |
| createIIRFilter with normalized coefficients did not throw an exception. | PASS |
| createIIRFilter with unnormalized coefficients did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 13 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [0: lowpass] All assertions passed. (total 2 assertions) | PASS |
| < [1: highpass] All assertions passed. (total 2 assertions) | PASS |
| < [2: bandpass] All assertions passed. (total 2 assertions) | PASS |
| < [3: notch] All assertions passed. (total 2 assertions) | PASS |
| < [4: allpass] All assertions passed. (total 2 assertions) | PASS |
| < [4th-order-iir] All assertions passed. (total 2 assertions) | PASS |
| < [5: lowshelf] All assertions passed. (total 2 assertions) | PASS |
| < [6: highshelf] All assertions passed. (total 2 assertions) | PASS |
| < [7: peaking] All assertions passed. (total 2 assertions) | PASS |
| < [coefficient-normalization] All assertions passed. (total 3 assertions) | PASS |
| < [multi-channel] All assertions passed. (total 3 assertions) | PASS |
| < [one-pole] All assertions passed. (total 1 assertions) | PASS |
| < [one-zero] All assertions passed. (total 1 assertions) | PASS |
| > [0: lowpass] | PASS |
| > [1: highpass] | PASS |
| > [2: bandpass] | PASS |
| > [3: notch] | PASS |
| > [4: allpass] | PASS |
| > [4th-order-iir] | PASS |
| > [5: lowshelf] | PASS |
| > [6: highshelf] | PASS |
| > [7: peaking] | PASS |
| > [coefficient-normalization] | PASS |
| > [multi-channel] | PASS |
| > [one-pole] | PASS |
| > [one-zero] | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html (14/14, 100.00%, 0.24% of total) | OK |
| Creating context for testing did not throw an exception. | PASS |
| Fetching expected audio resolved correctly. | PASS |
| Rendered audio for channel 0 equals [0,0.06262397766113281,0.12503433227539062,0.18695639073848724,0.24811547994613647,0.3083285093307495,0.3673207759857178,0.42487868666648865,0.48075807094573975,0.5347453355789185,0.5866267681121826,0.6362193822860718,0.6833094358444214,0.7277138829231262,0.7692495584487915,0.807763934135437...] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}. | PASS |
| Rendered audio for channel 1 equals [0,0.12503433227539062,0.24811547994613647,0.3673207759857178,0.48075807094573975,0.5866267681121826,0.6833094358444214,0.7692495584487915,0.843104362487793,0.903744637966156,0.9501937627792358,0.981719434261322,0.9978331923484802,0.9982604384422302,0.983031690120697,0.9523911476135254...] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}. | PASS |
| Rendered audio for channel 2 equals [0,0.18695639073848724,0.3673207759857178,0.5347453355789185,0.6833094358444214,0.807763934135437,0.903744637966156,0.9678640365600586,0.9978331923484802,0.9926145076751709,0.9523911476135254,0.8785668611526489,0.773766279220581,0.6417127251625061,0.48698386549949646,0.3151036202907562...] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}. | PASS |
| Rendered audio for channel 3 equals [0,0.24811547994613647,0.48075807094573975,0.6833094358444214,0.843104362487793,0.9501937627792358,0.9978331923484802,0.983031690120697,0.9067659378051758,0.773766279220581,0.5923947691917419,0.3739432990550995,0.13211463391780853,-0.11798095703125,-0.3607177734375,-0.58087158203125...] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}. | PASS |
| Rendered audio for channel 4 equals [0,0.3083285093307495,0.5866267681121826,0.807763934135437,0.9501937627792358,1,0.9523911476135254,0.8119449615478516,0.5923947691917419,0.3151036202907562,0.007110812701284885,-0.30157470703125,-0.58087158203125,-0.803558349609375,-0.94793701171875,-0.999969482421875...] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}. | PASS |
| Rendered audio for channel 5 equals [0,0.3673207759857178,0.6833094358444214,0.903744637966156,0.9978331923484802,0.9523911476135254,0.773766279220581,0.48698386549949646,0.13211463391780853,-0.241241455078125,-0.58087158203125,-0.839263916015625,-0.980316162109375,-0.98431396484375,-0.8507080078125,-0.598114013671875...] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [initialize] All assertions passed. (total 2 assertions) | PASS |
| < [test] All assertions passed. (total 6 assertions) | PASS |
| > [initialize] | PASS |
| > [test] AudioBufferSource with 5.1 buffer | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquadfilternode-basic.html (27/27, 100.00%, 0.47% of total) | OK |
| Default Q value is equal to 1. | PASS |
| Default filter type is equal to lowpass. | PASS |
| Default frequency value is equal to 350. | PASS |
| Default gain value is equal to 0. | PASS |
| Filter type is is equal to allpass. | PASS |
| Filter type is is equal to bandpass. | PASS |
| Filter type is is equal to highpass. | PASS |
| Filter type is is equal to highshelf. | PASS |
| Filter type is is equal to lowpass. | PASS |
| Filter type is is equal to lowshelf. | PASS |
| Filter type is is equal to notch. | PASS |
| Filter type is is equal to peaking. | PASS |
| Number of inputs is equal to 1. | PASS |
| Number of outputs is equal to 1. | PASS |
| Setting filter.type to (invalid) 99 is not equal to 99. | PASS |
| Setting filter.type to allpass did not throw an exception. | PASS |
| Setting filter.type to bandpass did not throw an exception. | PASS |
| Setting filter.type to highpass did not throw an exception. | PASS |
| Setting filter.type to highshelf did not throw an exception. | PASS |
| Setting filter.type to lowpass did not throw an exception. | PASS |
| Setting filter.type to lowshelf did not throw an exception. | PASS |
| Setting filter.type to notch did not throw an exception. | PASS |
| Setting filter.type to peaking did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 23 assertions) | PASS |
| > [test] Basic tests for BiquadFilterNode | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html (7/7, 100.00%, 0.12% of total) | OK |
| Reference[0:127] contains only the constant 1. | PASS |
| Test[0:127] contains only the constant 1. | PASS |
| Test[128:] is identical to the array [1,0.9999450445175171,0.999890148639679,0.999835193157196,0.9997802972793579,0.999725341796875,0.9996703863143921,0.999615490436554,0.999560534954071,0.9995056390762329,0.99945068359375,0.9993957281112671,0.999340832233429,0.999285876750946,0.9992309808731079,0.999176025390625...]. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Test SetValueCurve with start time in the past | PASS |
| /webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html (10/10, 100.00%, 0.17% of total) | OK |
| Set buffer a second time did not throw an exception. | PASS |
| Set buffer first normally did not throw an exception. | PASS |
| Set buffer to non-null to verify it is set did not throw an exception. | PASS |
| Set buffer to null again, to make sure did not throw an exception. | PASS |
| Set buffer to null before set non-null did not throw an exception. | PASS |
| Set buffer to null did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 6 assertions) | PASS |
| > [test] | PASS |
| /webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-sizing.html (41/41, 100.00%, 0.71% of total) | OK |
| Setting fftSize to -1 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (4294967295) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 0 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (0) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 1 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (1) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 1024 did not throw an exception. | PASS |
| Setting fftSize to 1025 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (1025) is not a power of two.". | PASS |
| Setting fftSize to 128 did not throw an exception. | PASS |
| Setting fftSize to 129 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (129) is not a power of two.". | PASS |
| Setting fftSize to 131072 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (131072) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 131073 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (131073) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 16 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (16) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 16384 did not throw an exception. | PASS |
| Setting fftSize to 16385 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (16385) is not a power of two.". | PASS |
| Setting fftSize to 17 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (17) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 2 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (2) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 2048 did not throw an exception. | PASS |
| Setting fftSize to 2049 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (2049) is not a power of two.". | PASS |
| Setting fftSize to 256 did not throw an exception. | PASS |
| Setting fftSize to 257 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (257) is not a power of two.". | PASS |
| Setting fftSize to 3 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (3) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 32 did not throw an exception. | PASS |
| Setting fftSize to 32768 did not throw an exception. | PASS |
| Setting fftSize to 32769 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (32769) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 33 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (33) is not a power of two.". | PASS |
| Setting fftSize to 4 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (4) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 4096 did not throw an exception. | PASS |
| Setting fftSize to 4097 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (4097) is not a power of two.". | PASS |
| Setting fftSize to 5 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (5) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 512 did not throw an exception. | PASS |
| Setting fftSize to 513 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (513) is not a power of two.". | PASS |
| Setting fftSize to 64 did not throw an exception. | PASS |
| Setting fftSize to 65 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (65) is not a power of two.". | PASS |
| Setting fftSize to 65536 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (65536) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 65537 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (65537) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 8 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (8) is outside the range [32, 32768].". | PASS |
| Setting fftSize to 8192 did not throw an exception. | PASS |
| Setting fftSize to 8193 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (8193) is not a power of two.". | PASS |
| Setting fftSize to 9 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (9) is outside the range [32, 32768].". | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [FFT size test] All assertions passed. (total 37 assertions) | PASS |
| > [FFT size test] Test that re-sizing the FFT arrays does not fail. | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html (8/8, 100.00%, 0.14% of total) | OK |
| The expected output channel count is equal to 17. | PASS |
| The expected output channel count is equal to 2. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Dynamically change the channel count to if unspecified.] All assertions passed. (total 1 assertions) | PASS |
| < [Givien outputChannelCount must be honored.] All assertions passed. (total 1 assertions) | PASS |
| > [Dynamically change the channel count to if unspecified.] | PASS |
| > [Givien outputChannelCount must be honored.] | PASS |
| /webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https.html (10/10, 100.00%, 0.17% of total) | OK |
| Recorded channel #0 contains only the constant 0. | PASS |
| Recorded channel #1 contains only the constant 0. | PASS |
| Recorded channel #2 contains only the constant 0. | PASS |
| Recorded channel #3 contains only the constant 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [setting-up-graph] All assertions passed. (total 0 assertions) | PASS |
| < [start-playback-and-capture] All assertions passed. (total 4 assertions) | PASS |
| > [setting-up-graph] | PASS |
| > [start-playback-and-capture] | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html (7/7, 100.00%, 0.12% of total) | OK |
| Max error in Notch filter response is less than or equal to 1.9669e-8. | PASS |
| Number of filters tested is equal to 4. | PASS |
| Number of non-finite values in the rendered output is equal to 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Biquad notch filter | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html (1/1, 100.00%, 0.02% of total) | OK |
| PannerNode AudioParam automation works properly | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/audioparam-exponentialRampToValueAtTime.html (106/106, 100.00%, 1.84% of total) | OK |
| Max error for test 0 at offset 126 is less than or equal to 0.00001222. | PASS |
| Max error for test 1 at offset 1535 is less than or equal to 0.00001222. | PASS |
| Max error for test 10 at offset 14462 is less than or equal to 0.00001222. | PASS |
| Max error for test 11 at offset 14719 is less than or equal to 0.00001222. | PASS |
| Max error for test 12 at offset 15999 is less than or equal to 0.00001222. | PASS |
| Max error for test 13 at offset 17919 is less than or equal to 0.00001222. | PASS |
| Max error for test 14 at offset 18686 is less than or equal to 0.00001222. | PASS |
| Max error for test 15 at offset 21119 is less than or equal to 0.00001222. | PASS |
| Max error for test 16 at offset 21375 is less than or equal to 0.00001222. | PASS |
| Max error for test 17 at offset 23807 is less than or equal to 0.00001222. | PASS |
| Max error for test 18 at offset 23935 is less than or equal to 0.00001222. | PASS |
| Max error for test 19 at offset 26367 is less than or equal to 0.00001222. | PASS |
| Max error for test 2 at offset 3967 is less than or equal to 0.00001222. | PASS |
| Max error for test 20 at offset 26623 is less than or equal to 0.00001222. | PASS |
| Max error for test 21 at offset 29055 is less than or equal to 0.00001222. | PASS |
| Max error for test 22 at offset 29311 is less than or equal to 0.00001222. | PASS |
| Max error for test 23 at offset 31743 is less than or equal to 0.00001222. | PASS |
| Max error for test 24 at offset 31998 is less than or equal to 0.00001222. | PASS |
| Max error for test 25 at offset 34175 is less than or equal to 0.00001222. | PASS |
| Max error for test 26 at offset 34558 is less than or equal to 0.00001222. | PASS |
| Max error for test 27 at offset 36351 is less than or equal to 0.00001222. | PASS |
| Max error for test 28 at offset 37247 is less than or equal to 0.00001222. | PASS |
| Max error for test 29 at offset 39679 is less than or equal to 0.00001222. | PASS |
| Max error for test 3 at offset 5247 is less than or equal to 0.00001222. | PASS |
| Max error for test 30 at offset 40703 is less than or equal to 0.00001222. | PASS |
| Max error for test 31 at offset 41599 is less than or equal to 0.00001222. | PASS |
| Max error for test 32 at offset 43646 is less than or equal to 0.00001222. | PASS |
| Max error for test 33 at offset 44415 is less than or equal to 0.00001222. | PASS |
| Max error for test 34 at offset 45183 is less than or equal to 0.00001222. | PASS |
| Max error for test 35 at offset 47103 is less than or equal to 0.00001222. | PASS |
| Max error for test 36 at offset 48895 is less than or equal to 0.00001222. | PASS |
| Max error for test 37 at offset 49151 is less than or equal to 0.00001222. | PASS |
| Max error for test 38 at offset 51583 is less than or equal to 0.00001222. | PASS |
| Max error for test 39 at offset 52735 is less than or equal to 0.00001222. | PASS |
| Max error for test 4 at offset 5503 is less than or equal to 0.00001222. | PASS |
| Max error for test 40 at offset 53247 is less than or equal to 0.00001222. | PASS |
| Max error for test 41 at offset 54527 is less than or equal to 0.00001222. | PASS |
| Max error for test 42 at offset 56447 is less than or equal to 0.00001222. | PASS |
| Max error for test 43 at offset 57215 is less than or equal to 0.00001222. | PASS |
| Max error for test 44 at offset 58879 is less than or equal to 0.00001222. | PASS |
| Max error for test 45 at offset 59775 is less than or equal to 0.00001222. | PASS |
| Max error for test 46 at offset 61695 is less than or equal to 0.00001222. | PASS |
| Max error for test 47 at offset 62335 is less than or equal to 0.00001222. | PASS |
| Max error for test 48 at offset 64255 is less than or equal to 0.00001222. | PASS |
| Max error for test 49 at offset 65151 is less than or equal to 0.00001222. | PASS |
| Max error for test 5 at offset 7679 is less than or equal to 0.00001222. | PASS |
| Max error for test 50 at offset 67455 is less than or equal to 0.00001222. | PASS |
| Max error for test 51 at offset 67711 is less than or equal to 0.00001222. | PASS |
| Max error for test 52 at offset 69630 is less than or equal to 0.00001222. | PASS |
| Max error for test 53 at offset 70527 is less than or equal to 0.00001222. | PASS |
| Max error for test 54 at offset 72063 is less than or equal to 0.00001222. | PASS |
| Max error for test 55 at offset 73087 is less than or equal to 0.00001222. | PASS |
| Max error for test 56 at offset 74879 is less than or equal to 0.00001222. | PASS |
| Max error for test 57 at offset 76671 is less than or equal to 0.00001222. | PASS |
| Max error for test 58 at offset 77935 is less than or equal to 0.00001222. | PASS |
| Max error for test 59 at offset 78463 is less than or equal to 0.00001222. | PASS |
| Max error for test 6 at offset 8063 is less than or equal to 0.00001222. | PASS |
| Max error for test 60 at offset 80382 is less than or equal to 0.00001222. | PASS |
| Max error for test 61 at offset 81151 is less than or equal to 0.00001222. | PASS |
| Max error for test 62 at offset 82175 is less than or equal to 0.00001222. | PASS |
| Max error for test 63 at offset 83839 is less than or equal to 0.00001222. | PASS |
| Max error for test 64 at offset 85247 is less than or equal to 0.00001222. | PASS |
| Max error for test 65 at offset 86143 is less than or equal to 0.00001222. | PASS |
| Max error for test 66 at offset 88063 is less than or equal to 0.00001222. | PASS |
| Max error for test 67 at offset 89087 is less than or equal to 0.00001222. | PASS |
| Max error for test 68 at offset 91262 is less than or equal to 0.00001222. | PASS |
| Max error for test 69 at offset 92287 is less than or equal to 0.00001222. | PASS |
| Max error for test 7 at offset 9471 is less than or equal to 0.00001222. | PASS |
| Max error for test 70 at offset 93822 is less than or equal to 0.00001222. | PASS |
| Max error for test 71 at offset 94975 is less than or equal to 0.00001222. | PASS |
| Max error for test 72 at offset 95448 is less than or equal to 0.00001222. | PASS |
| Max error for test 73 at offset 96891 is less than or equal to 0.00001222. | PASS |
| Max error for test 74 at offset 98687 is less than or equal to 0.00001222. | PASS |
| Max error for test 75 at offset 99839 is less than or equal to 0.00001222. | PASS |
| Max error for test 76 at offset 100990 is less than or equal to 0.00001222. | PASS |
| Max error for test 77 at offset 102782 is less than or equal to 0.00001222. | PASS |
| Max error for test 78 at offset 104447 is less than or equal to 0.00001222. | PASS |
| Max error for test 79 at offset 105710 is less than or equal to 0.00001222. | PASS |
| Max error for test 8 at offset 11902 is less than or equal to 0.00001222. | PASS |
| Max error for test 80 at offset 107132 is less than or equal to 0.00001222. | PASS |
| Max error for test 81 at offset 107363 is less than or equal to 0.00001222. | PASS |
| Max error for test 82 at offset 108799 is less than or equal to 0.00001222. | PASS |
| Max error for test 83 at offset 110438 is less than or equal to 0.00001222. | PASS |
| Max error for test 84 at offset 112112 is less than or equal to 0.00001222. | PASS |
| Max error for test 85 at offset 113201 is less than or equal to 0.00001222. | PASS |
| Max error for test 86 at offset 115071 is less than or equal to 0.00001222. | PASS |
| Max error for test 87 at offset 115839 is less than or equal to 0.00001222. | PASS |
| Max error for test 88 at offset 117375 is less than or equal to 0.00001222. | PASS |
| Max error for test 89 at offset 118902 is less than or equal to 0.00001222. | PASS |
| Max error for test 9 at offset 13183 is less than or equal to 0.00001222. | PASS |
| Max error for test 90 at offset 120188 is less than or equal to 0.00001222. | PASS |
| Max error for test 91 at offset 121215 is less than or equal to 0.00001222. | PASS |
| Max error for test 92 at offset 123007 is less than or equal to 0.00001222. | PASS |
| Max error for test 93 at offset 123390 is less than or equal to 0.00001222. | PASS |
| Max error for test 94 at offset 124923 is less than or equal to 0.00001222. | PASS |
| Max error for test 95 at offset 125943 is less than or equal to 0.00001222. | PASS |
| Max error for test 96 at offset 127861 is less than or equal to 0.00001222. | PASS |
| Max error for test 97 at offset 129532 is less than or equal to 0.00001222. | PASS |
| Max error for test 98 at offset 130551 is less than or equal to 0.00001222. | PASS |
| Max error for test 99 at offset 131322 is less than or equal to 0.00001222. | PASS |
| Number of failed tests with an acceptable relative tolerance of 0.00001222 is equal to 0. | PASS |
| Number of tests started and ended at the correct time is equal to 100. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 102 assertions) | PASS |
| > [test] AudioParam exponentialRampToValueAtTime() functionality | PASS |
| /webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-null.html (6/6, 100.00%, 0.10% of total) | OK |
| Setting ConvolverNode impulse response buffer to null did not throw an exception. | PASS |
| conv.buffer === null is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 2 assertions) | PASS |
| > [test] | PASS |
| /webaudio/the-audio-api/the-convolvernode-interface/convolver-cascade.html (5/5, 100.00%, 0.09% of total) | OK |
| Output of cascaded mono convolvers is not constantly 0 (contains 1996 different values). | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [cascade-mono] All assertions passed. (total 1 assertions) | PASS |
| > [cascade-mono] Cascaded mono convolvers | PASS |
| /webaudio/the-audio-api/the-dynamicscompressornode-interface/dynamicscompressor-basic.html (11/11, 100.00%, 0.19% of total) | OK |
| compressor.attack.value is equal to 0.003000000026077032. | PASS |
| compressor.knee.value is equal to 30. | PASS |
| compressor.ratio.value is equal to 12. | PASS |
| compressor.reduction is equal to 0. | PASS |
| compressor.release.value is equal to 0.25. | PASS |
| compressor.threshold.value is equal to -24. | PASS |
| typeof compressor.reduction is equal to number. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 7 assertions) | PASS |
| > [test] Basic tests for DynamicsCompressorNode API | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html (24/24, 100.00%, 0.42% of total) | OK |
| Initialize context for testing did not throw an exception. | PASS |
| channelCountMode is equal to max. | PASS |
| channelInterpretation is equal to speakers. | PASS |
| context.createBiquadFilter does exist. | PASS |
| createBiquadFilter() did not throw an exception. | PASS |
| getFrequencyResponse(new Float32Array(1), new Float32Array(1), null) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': parameter 3 is not of type 'Float32Array'.". | PASS |
| getFrequencyResponse(new Float32Array(1), null, new Float32Array(1)) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': parameter 2 is not of type 'Float32Array'.". | PASS |
| getFrequencyResponse(new Float32Array(10), new Float32Array(1), new Float32Array(20)) threw InvalidAccessError: "Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': The magResponse length provided (1) is outside the range [10, 10].". | PASS |
| getFrequencyResponse(new Float32Array(10), new Float32Array(20), new Float32Array(1)) threw InvalidAccessError: "Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': The magResponse length provided (20) is outside the range [10, 10].". | PASS |
| getFrequencyResponse(null, new Float32Array(1), new Float32Array(1)) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': parameter 1 is not of type 'Float32Array'.". | PASS |
| numberOfInputs is equal to 1. | PASS |
| numberOfOutputs is equal to 1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [exceptions-createBiquadFilter] All assertions passed. (total 1 assertions) | PASS |
| < [exceptions-getFrequencyData] All assertions passed. (total 5 assertions) | PASS |
| < [existence] All assertions passed. (total 1 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [parameters] All assertions passed. (total 4 assertions) | PASS |
| > [exceptions-createBiquadFilter] | PASS |
| > [exceptions-getFrequencyData] | PASS |
| > [existence] | PASS |
| > [initialize] | PASS |
| > [parameters] | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-ended.html (5/5, 100.00%, 0.09% of total) | OK |
| source.onended called is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [AudioBufferSourceNode calls its onended EventListener] All assertions passed. (total 1 assertions) | PASS |
| > [AudioBufferSourceNode calls its onended EventListener] | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html (6/6, 100.00%, 0.10% of total) | OK |
| event.data from main thread is an instance of SharedArrayBuffer is true. | PASS |
| event.data.sab from worklet is an instance of SharedArrayBuffer is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Test postMessage from AudioWorkletProcessor to AudioWorkletNode] All assertions passed. (total 2 assertions) | PASS |
| > [Test postMessage from AudioWorkletProcessor to AudioWorkletNode] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html (8/8, 100.00%, 0.14% of total) | OK |
| k-rate detune: Difference between a-rate and k-rate outputs is not constantly 0 (contains 510 different values). | PASS |
| k-rate frequency: Difference between a-rate and k-rate outputs is not constantly 0 (contains 510 different values). | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Oscillator k-rate detune] All assertions passed. (total 1 assertions) | PASS |
| < [Oscillator k-rate frequency] All assertions passed. (total 1 assertions) | PASS |
| > [Oscillator k-rate detune] | PASS |
| > [Oscillator k-rate frequency] | PASS |
| /webaudio/the-audio-api/the-constantsourcenode-interface/constant-source-onended.html (1/1, 100.00%, 0.02% of total) | OK |
| ConstantSourceNode onended event fired | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-peaking.html (7/7, 100.00%, 0.12% of total) | OK |
| Max error in Peaking filter response is less than or equal to 5.8234e-8. | PASS |
| Number of filters tested is equal to 4. | PASS |
| Number of non-finite values in the rendered output is equal to 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Biquad peaking filter | PASS |
| /webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input-non-default.html (29/29, 100.00%, 0.50% of total) | OK |
| 1-channel source: Channel #0 contains only the constant 0. | PASS |
| 1-channel source: Channel #1 contains only the constant 0. | PASS |
| 1-channel source: Channel #2 contains only the constant 0. | PASS |
| 1-channel source: Channel #3 contains only the constant 0. | PASS |
| 1-channel source: Channel #4 contains only the constant 0. | PASS |
| 1-channel source: Channel #5 contains only the constant 0. | PASS |
| 1-channel source: Channel #6 contains only the constant 1. | PASS |
| 2-channel source: Channel #0 contains only the constant 0. | PASS |
| 2-channel source: Channel #1 contains only the constant 0. | PASS |
| 2-channel source: Channel #2 contains only the constant 0. | PASS |
| 2-channel source: Channel #3 contains only the constant 0. | PASS |
| 2-channel source: Channel #4 contains only the constant 0. | PASS |
| 2-channel source: Channel #5 contains only the constant 0. | PASS |
| 2-channel source: Channel #6 contains only the constant 1.5. | PASS |
| 3-channel source: Channel #0 contains only the constant 0. | PASS |
| 3-channel source: Channel #1 contains only the constant 0. | PASS |
| 3-channel source: Channel #2 contains only the constant 0. | PASS |
| 3-channel source: Channel #3 contains only the constant 0. | PASS |
| 3-channel source: Channel #4 contains only the constant 0. | PASS |
| 3-channel source: Channel #5 contains only the constant 0. | PASS |
| 3-channel source: Channel #6 contains only the constant 1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [silent-channel] All assertions passed. (total 7 assertions) | PASS |
| < [stereo-down-mixing] All assertions passed. (total 7 assertions) | PASS |
| < [undefined-channel-layout] All assertions passed. (total 7 assertions) | PASS |
| > [silent-channel] | PASS |
| > [stereo-down-mixing] | PASS |
| > [undefined-channel-layout] | PASS |
| /webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html (48/48, 100.00%, 0.84% of total) | OK |
| Output of filter using new IIRFilter(...) is identical to the array [0,0.05756402015686035,0.1437191516160965,0.21500658988952637,0.29277655482292175,0.36597785353660583,0.4397642910480499,0.511192798614502,0.5813756585121155,0.6494057774543762,0.7153944969177246,0.7789546847343445,0.8399595618247986,0.8981648087501526,0.9533984661102295,1.0054665803909302...]. | PASS |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new IIRFilterNode() threw TypeError: "Failed to construct 'IIRFilterNode': 2 arguments required, but only 0 present.". | PASS |
| new IIRFilterNode(1) threw TypeError: "Failed to construct 'IIRFilterNode': 2 arguments required, but only 1 present.". | PASS |
| new IIRFilterNode(c, {channelCount: 0}) threw NotSupportedError: "Failed to construct 'IIRFilterNode': The channel count provided (0) is outside the range [1, 32].". | PASS |
| new IIRFilterNode(c, {channelCount: 17}} did not throw an exception. | PASS |
| new IIRFilterNode(c, {channelCount: 99}) threw NotSupportedError: "Failed to construct 'IIRFilterNode': The channel count provided (99) is outside the range [1, 32].". | PASS |
| new IIRFilterNode(c, {channelCountMode: "clamped-max"}) did not throw an exception. | PASS |
| new IIRFilterNode(c, {channelCountMode: "explicit"}) did not throw an exception. | PASS |
| new IIRFilterNode(c, {channelCountMode: "foobar"} threw TypeError: "Failed to construct 'IIRFilterNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS |
| new IIRFilterNode(c, {channelCountMode: "max"} did not throw an exception. | PASS |
| new IIRFilterNode(c, {channelCountMode: "max"}) did not throw an exception. | PASS |
| new IIRFilterNode(c, {channelInterpretation: "discrete"}) did not throw an exception. | PASS |
| new IIRFilterNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Failed to construct 'IIRFilterNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new IIRFilterNode(c, {channelInterpretation: "speakers"}) did not throw an exception. | PASS |
| new IIRFilterNode(context, 42) threw TypeError: "Failed to construct 'IIRFilterNode': parameter 2 ('options') is not an object.". | PASS |
| node = new IIRFilterNode(, {"feedback":[1,0.5]}) threw TypeError: "Failed to construct 'IIRFilterNode': required member feedforward is undefined.". | PASS |
| node = new IIRFilterNode(c, {"feedforward":[1,0.5]}) threw TypeError: "Failed to construct 'IIRFilterNode': required member feedback is undefined.". | PASS |
| node.channelCount is equal to 17. | PASS |
| node.channelCountMode after invalid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to clamped-max. | PASS |
| node.channelCountMode after valid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to max. | PASS |
| node.channelCountMode is equal to max. | PASS |
| node.channelInterpretation after invalid setter is equal to discrete. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node0 = new IIRFilterNode(context, {"feedforward":[1],"feedback":[1,-0.9]}) did not throw an exception. | PASS |
| node0 instanceof IIRFilterNode is equal to true. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.numberOfInputs is equal to 1. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [constructor options] All assertions passed. (total 2 assertions) | PASS |
| < [default constructor] All assertions passed. (total 7 assertions) | PASS |
| < [functionality] All assertions passed. (total 1 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 20 assertions) | PASS |
| > [constructor options] | PASS |
| > [default constructor] | PASS |
| > [functionality] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html (130/130, 100.00%, 2.26% of total) | OK |
| Mono listener.positionX.value frame [0, 128) channel 0 contains only the constant 0.7071067690849304. | PASS |
| Mono listener.positionX.value frame [0, 128) channel 1 contains only the constant 0.7071067690849304. | PASS |
| Mono listener.positionX.value frame [128, 256) channel 0 contains only the constant 0.00010001000191550702. | PASS |
| Mono listener.positionX.value frame [128, 256) channel 1 contains only the constant 0. | PASS |
| Mono listener.positionX: Output at frame 128 channel 0 is not equal to 0.7071067690849304. | PASS |
| Mono listener.positionX: Output at frame 128 channel 1 is not equal to 0.7071067690849304. | PASS |
| Mono listener.positionY.value frame [0, 128) channel 0 contains only the constant 0.22094237804412842. | PASS |
| Mono listener.positionY.value frame [0, 128) channel 1 contains only the constant 0.5334020853042603. | PASS |
| Mono listener.positionY.value frame [128, 256) channel 0 contains only the constant 0.00003826833926723339. | PASS |
| Mono listener.positionY.value frame [128, 256) channel 1 contains only the constant 0.00009238795610144734. | PASS |
| Mono listener.positionY: Output at frame 128 channel 0 is not equal to 0.22094237804412842. | PASS |
| Mono listener.positionY: Output at frame 128 channel 1 is not equal to 0.5334020853042603. | PASS |
| Mono listener.positionZ.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17. | PASS |
| Mono listener.positionZ.value frame [0, 128) channel 1 contains only the constant 1. | PASS |
| Mono listener.positionZ.value frame [128, 256) channel 0 contains only the constant 0.00007071421714499593. | PASS |
| Mono listener.positionZ.value frame [128, 256) channel 1 contains only the constant 0.0000707212820998393. | PASS |
| Mono listener.positionZ: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17. | PASS |
| Mono listener.positionZ: Output at frame 128 channel 1 is not equal to 1. | PASS |
| Mono panner.positionX.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17. | PASS |
| Mono panner.positionX.value frame [0, 128) channel 1 contains only the constant 1. | PASS |
| Mono panner.positionX.value frame [128, 256) channel 0 contains only the constant 6.123233968888981e-21. | PASS |
| Mono panner.positionX.value frame [128, 256) channel 1 contains only the constant 0.00009999999747378752. | PASS |
| Mono panner.positionX: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17. | PASS |
| Mono panner.positionX: Output at frame 128 channel 1 is not equal to 1. | PASS |
| Mono panner.positionY.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17. | PASS |
| Mono panner.positionY.value frame [0, 128) channel 1 contains only the constant 1. | PASS |
| Mono panner.positionY.value frame [128, 256) channel 0 contains only the constant 6.123233968888981e-21. | PASS |
| Mono panner.positionY.value frame [128, 256) channel 1 contains only the constant 0.00009999999747378752. | PASS |
| Mono panner.positionY: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17. | PASS |
| Mono panner.positionY: Output at frame 128 channel 1 is not equal to 1. | PASS |
| Mono panner.positionZ.value frame [0, 128) channel 0 contains only the constant 0.7071067690849304. | PASS |
| Mono panner.positionZ.value frame [0, 128) channel 1 contains only the constant 0.7071067690849304. | PASS |
| Mono panner.positionZ.value frame [128, 256) channel 0 contains only the constant 0.00007071067375363782. | PASS |
| Mono panner.positionZ.value frame [128, 256) channel 1 contains only the constant 0.00007071067375363782. | PASS |
| Mono panner.positionZ: Output at frame 128 channel 0 is not equal to 0.7071067690849304. | PASS |
| Mono panner.positionZ: Output at frame 128 channel 1 is not equal to 0.7071067690849304. | PASS |
| Stereo listener.positionX.value frame [0, 128) channel 0 contains only the constant 1. | PASS |
| Stereo listener.positionX.value frame [0, 128) channel 1 contains only the constant 2. | PASS |
| Stereo listener.positionX.value frame [128, 256) channel 0 contains only the constant 0.00030002999119460583. | PASS |
| Stereo listener.positionX.value frame [128, 256) channel 1 contains only the constant 0. | PASS |
| Stereo listener.positionX: Output at frame 128 channel 0 is not equal to 1. | PASS |
| Stereo listener.positionX: Output at frame 128 channel 1 is not equal to 2. | PASS |
| Stereo listener.positionY.value frame [0, 128) channel 0 contains only the constant 0.40824827551841736. | PASS |
| Stereo listener.positionY.value frame [0, 128) channel 1 contains only the constant 1.5629488229751587. | PASS |
| Stereo listener.positionY.value frame [128, 256) channel 0 contains only the constant 0.0000707106664776802. | PASS |
| Stereo listener.positionY.value frame [128, 256) channel 1 contains only the constant 0.00027071067597717047. | PASS |
| Stereo listener.positionY: Output at frame 128 channel 0 is not equal to 0.40824827551841736. | PASS |
| Stereo listener.positionY: Output at frame 128 channel 1 is not equal to 1.5629488229751587. | PASS |
| Stereo listener.positionZ.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17. | PASS |
| Stereo listener.positionZ.value frame [0, 128) channel 1 contains only the constant 3. | PASS |
| Stereo listener.positionZ.value frame [128, 256) channel 0 contains only the constant 0.00010001000191550702. | PASS |
| Stereo listener.positionZ.value frame [128, 256) channel 1 contains only the constant 0.00020003000099677593. | PASS |
| Stereo listener.positionZ: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17. | PASS |
| Stereo listener.positionZ: Output at frame 128 channel 1 is not equal to 3. | PASS |
| Stereo panner.positionX.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17. | PASS |
| Stereo panner.positionX.value frame [0, 128) channel 1 contains only the constant 3. | PASS |
| Stereo panner.positionX.value frame [128, 256) channel 0 contains only the constant 6.123233968888981e-21. | PASS |
| Stereo panner.positionX.value frame [128, 256) channel 1 contains only the constant 0.00029999998514540493. | PASS |
| Stereo panner.positionX: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17. | PASS |
| Stereo panner.positionX: Output at frame 128 channel 1 is not equal to 3. | PASS |
| Stereo panner.positionY.value frame [0, 128) channel 0 contains only the constant 6.123234262925839e-17. | PASS |
| Stereo panner.positionY.value frame [0, 128) channel 1 contains only the constant 3. | PASS |
| Stereo panner.positionY.value frame [128, 256) channel 0 contains only the constant 6.123233968888981e-21. | PASS |
| Stereo panner.positionY.value frame [128, 256) channel 1 contains only the constant 0.00029999998514540493. | PASS |
| Stereo panner.positionY: Output at frame 128 channel 0 is not equal to 6.123234262925839e-17. | PASS |
| Stereo panner.positionY: Output at frame 128 channel 1 is not equal to 3. | PASS |
| Stereo panner.positionZ.value frame [0, 128) channel 0 contains only the constant 1. | PASS |
| Stereo panner.positionZ.value frame [0, 128) channel 1 contains only the constant 2. | PASS |
| Stereo panner.positionZ.value frame [128, 256) channel 0 contains only the constant 0.00009999999747378752. | PASS |
| Stereo panner.positionZ.value frame [128, 256) channel 1 contains only the constant 0.00019999999494757503. | PASS |
| Stereo panner.positionZ: Output at frame 128 channel 0 is not equal to 1. | PASS |
| Stereo panner.positionZ: Output at frame 128 channel 1 is not equal to 2. | PASS |
| listener.forward{XYZ}.value frame [0, 128) channel 0 contains only the constant 0.5005000233650208. | PASS |
| listener.forward{XYZ}.value frame [0, 128) channel 1 contains only the constant 1.0010000467300415. | PASS |
| listener.forward{XYZ}.value frame [128, 256) channel 0 contains only the constant 0.5133963823318481. | PASS |
| listener.forward{XYZ}.value frame [128, 256) channel 1 contains only the constant 1.0009169578552246. | PASS |
| listener.forward{XYZ}: Output at frame 128 channel 0 is not equal to 0.5005000233650208. | PASS |
| listener.forward{XYZ}: Output at frame 128 channel 1 is not equal to 1.0010000467300415. | PASS |
| listener.up{XYZ}.value frame [0, 128) channel 0 contains only the constant 0.12537498772144318. | PASS |
| listener.up{XYZ}.value frame [0, 128) channel 1 contains only the constant 0.47998905181884766. | PASS |
| listener.up{XYZ}.value frame [128, 256) channel 0 contains only the constant 0.1447705775499344. | PASS |
| listener.up{XYZ}.value frame [128, 256) channel 1 contains only the constant 0.4569823145866394. | PASS |
| listener.up{XYZ}: Output at frame 128 channel 0 is not equal to 0.12537498772144318. | PASS |
| listener.up{XYZ}: Output at frame 128 channel 1 is not equal to 0.47998905181884766. | PASS |
| panner.orientation{XYZ}.value frame [0, 128) channel 0 contains only the constant 0.5005000233650208. | PASS |
| panner.orientation{XYZ}.value frame [0, 128) channel 1 contains only the constant 1.0010000467300415. | PASS |
| panner.orientation{XYZ}.value frame [128, 256) channel 0 contains only the constant 0.07899462431669235. | PASS |
| panner.orientation{XYZ}.value frame [128, 256) channel 1 contains only the constant 0.1579892486333847. | PASS |
| panner.orientation{XYZ}: Output at frame 128 channel 0 is not equal to 0.5005000233650208. | PASS |
| panner.orientation{XYZ}: Output at frame 128 channel 1 is not equal to 1.0010000467300415. | PASS |
| setPosition.value frame [0, 128) channel 0 contains only the constant 0.40824827551841736. | PASS |
| setPosition.value frame [0, 128) channel 1 contains only the constant 1.5629488229751587. | PASS |
| setPosition.value frame [128, 256) channel 0 contains only the constant 0.000124290119856596. | PASS |
| setPosition.value frame [128, 256) channel 1 contains only the constant 0.0002424988488201052. | PASS |
| setPosition: Output at frame 128 channel 0 is not equal to 0.40824827551841736. | PASS |
| setPosition: Output at frame 128 channel 1 is not equal to 1.5629488229751587. | PASS |
| # AUDIT TASK RUNNER FINISHED: 16 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Mono listener.positionX] All assertions passed. (total 6 assertions) | PASS |
| < [Mono listener.positionY] All assertions passed. (total 6 assertions) | PASS |
| < [Mono listener.positionZ] All assertions passed. (total 6 assertions) | PASS |
| < [Mono panner.positionX] All assertions passed. (total 6 assertions) | PASS |
| < [Mono panner.positionY] All assertions passed. (total 6 assertions) | PASS |
| < [Mono panner.positionZ] All assertions passed. (total 6 assertions) | PASS |
| < [Stereo listener.positionX] All assertions passed. (total 6 assertions) | PASS |
| < [Stereo listener.positionY] All assertions passed. (total 6 assertions) | PASS |
| < [Stereo listener.positionZ] All assertions passed. (total 6 assertions) | PASS |
| < [Stereo panner.positionX] All assertions passed. (total 6 assertions) | PASS |
| < [Stereo panner.positionY] All assertions passed. (total 6 assertions) | PASS |
| < [Stereo panner.positionZ] All assertions passed. (total 6 assertions) | PASS |
| < [forward setter] All assertions passed. (total 6 assertions) | PASS |
| < [orientation setter] All assertions passed. (total 6 assertions) | PASS |
| < [setPosition] All assertions passed. (total 6 assertions) | PASS |
| < [up setter] All assertions passed. (total 6 assertions) | PASS |
| > [Mono listener.positionX] | PASS |
| > [Mono listener.positionY] | PASS |
| > [Mono listener.positionZ] | PASS |
| > [Mono panner.positionX] | PASS |
| > [Mono panner.positionY] | PASS |
| > [Mono panner.positionZ] | PASS |
| > [Stereo listener.positionX] | PASS |
| > [Stereo listener.positionY] | PASS |
| > [Stereo listener.positionZ] | PASS |
| > [Stereo panner.positionX] | PASS |
| > [Stereo panner.positionY] | PASS |
| > [Stereo panner.positionZ] | PASS |
| > [forward setter] | PASS |
| > [orientation setter] | PASS |
| > [setPosition] | PASS |
| > [up setter] | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-grain.html (5/5, 100.00%, 0.09% of total) | OK |
| Buffer was played is true. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Test setting the source buffer after starting the grain] All assertions passed. (total 1 assertions) | PASS |
| > [Test setting the source buffer after starting the grain] | PASS |
| /webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html (17/17, 100.00%, 0.30% of total) | OK |
| Channel #0 contains all the expected values in the correct order: [2.25,1.5]. | PASS |
| Channel #0 contains all the expected values in the correct order: [3,1.5]. | PASS |
| Channel #1 contains all the expected values in the correct order: [6,3]. | PASS |
| The index of value change in channel #0 is equal to 11008. | PASS |
| The index of value change in channel #1 is equal to 11008. | PASS |
| The index of value change is equal to 11008. | PASS |
| gain1.disconnect(gain3.gain) threw InvalidAccessError: "Failed to execute 'disconnect' on 'AudioNode': the given AudioParam is not connected.". | PASS |
| splitter.disconnect(gain1.gain, 1) threw InvalidAccessError: "Failed to execute 'disconnect' on 'AudioNode': specified destination AudioParam and node output (1) are not connected.". | PASS |
| splitter.disconnect(gain1.gain, 2) threw IndexSizeError: "Failed to execute 'disconnect' on 'AudioNode': The output index provided (2) is outside the range [0, 1].". | PASS |
| # AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [disconnect(AudioParam)] All assertions passed. (total 2 assertions) | PASS |
| < [disconnect(AudioParam, output)] All assertions passed. (total 4 assertions) | PASS |
| < [exceptions] All assertions passed. (total 3 assertions) | PASS |
| > [disconnect(AudioParam)] | PASS |
| > [disconnect(AudioParam, output)] | PASS |
| > [exceptions] | PASS |
| /webaudio/the-audio-api/the-audionode-interface/channel-mode-interp-basic.html (10/10, 100.00%, 0.17% of total) | OK |
| After rendering node.channelCountMode is equal to explicit. | PASS |
| After rendering node.channelInterpretation is equal to discrete. | PASS |
| node.channelCountMode is equal to explicit. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [interp] All assertions passed. (total 2 assertions) | PASS |
| < [mode] All assertions passed. (total 2 assertions) | PASS |
| > [interp] | PASS |
| > [mode] | PASS |
| /webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html (7/7, 100.00%, 0.12% of total) | OK |
| WaveShaperNode - Testing a 2-element curve (does not have a middle element) | PASS |
| WaveShaperNode - Testing a 4-element curve (does not have a middle element) | PASS |
| WaveShaperNode - Testing a huge curve | PASS |
| WaveShaperNode - Testing interpolation (where inputs don't correlate directly to curve elements) | PASS |
| WaveShaperNode - Testing null curve (should return input values) | PASS |
| WaveShaperNode - Testing out-of-range inputs (should be mapped to the first/last elements of the curve) | PASS |
| WaveShaperNode - Testing that -1, 0 and +1 map correctly to curve (with 1:1 correlation) | PASS |
| /webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html (1/1, 100.00%, 0.02% of total) | TIMEOUT |
| Element Source tests completed | NOTRUN |
| /webaudio/the-audio-api/the-constantsourcenode-interface/ctor-constantsource.html (20/20, 100.00%, 0.35% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new ConstantSourceNode() threw TypeError: "Failed to construct 'ConstantSourceNode': 1 argument required, but only 0 present.". | PASS |
| new ConstantSourceNode(1) threw TypeError: "Failed to construct 'ConstantSourceNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new ConstantSourceNode(context, 42) threw TypeError: "Failed to construct 'ConstantSourceNode': parameter 2 ('options') is not an object.". | PASS |
| node0 = new ConstantSourceNode(context) did not throw an exception. | PASS |
| node0 instanceof ConstantSourceNode is equal to true. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.numberOfInputs is equal to 0. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node0.offset.value is equal to 1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 3 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [default constructor] All assertions passed. (total 8 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-playbackrate-zero.html (5/5, 100.00%, 0.09% of total) | OK |
| The zero playbackRate held the sample value correctly | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [synthesize-verify] All assertions passed. (total 1 assertions) | PASS |
| > [synthesize-verify] | PASS |
| /webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-basic.html (11/11, 100.00%, 0.19% of total) | OK |
| Default maxDecibels value is equal to -30. | PASS |
| Default minDecibels value is equal to -100. | PASS |
| Default smoothingTimeConstant value is equal to 0.8. | PASS |
| Number of inputs for AnalyserNode is equal to 1. | PASS |
| Number of outputs for AnalyserNode is equal to 1. | PASS |
| node.maxDecibels = -40.333333333333336 is equal to -40.333333333333336. | PASS |
| node.minDecibels = -50.333333333333336 is equal to -50.333333333333336. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Basic AnalyserNode test] All assertions passed. (total 7 assertions) | PASS |
| > [Basic AnalyserNode test] | PASS |
| /webaudio/the-audio-api/the-channelsplitternode-interface/ctor-channelsplitter.html (38/38, 100.00%, 0.66% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new ChannelSplitterNode() threw TypeError: "Failed to construct 'ChannelSplitterNode': 1 argument required, but only 0 present.". | PASS |
| new ChannelSplitterNode(1) threw TypeError: "Failed to construct 'ChannelSplitterNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new ChannelSplitterNode(c, {"channelCount":3}) threw InvalidStateError: "Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelCount cannot be changed from 6". | PASS |
| new ChannelSplitterNode(c, {"channelCountMode":"max"}) threw InvalidStateError: "Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelCountMode cannot be changed from 'explicit'". | PASS |
| new ChannelSplitterNode(c, {"numberOfOutputs":99}) threw IndexSizeError: "Failed to construct 'ChannelSplitterNode': The number of outputs provided (99) is outside the range [1, 32].". | PASS |
| new ChannelSplitterNode(c, {channelCount: 6}} did not throw an exception. | PASS |
| new ChannelSplitterNode(c, {channelCount: 7}} threw InvalidStateError: "Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelCount cannot be changed from 6". | PASS |
| new ChannelSplitterNode(c, {channelCountMode: "clamped-max"}) threw InvalidStateError: "Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelCountMode cannot be changed from 'explicit'". | PASS |
| new ChannelSplitterNode(c, {channelCountMode: "explicit"} did not throw an exception. | PASS |
| new ChannelSplitterNode(c, {channelCountMode: "max"}) threw InvalidStateError: "Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelCountMode cannot be changed from 'explicit'". | PASS |
| new ChannelSplitterNode(c, {channelInterpretation: "speakers"}) threw InvalidStateError: "Failed to construct 'ChannelSplitterNode': ChannelSplitter: channelInterpretation cannot be changed from 'discrete'". | PASS |
| new ChannelSplitterNode(context, 42) threw TypeError: "Failed to construct 'ChannelSplitterNode': parameter 2 ('options') is not an object.". | PASS |
| node.channelCount is equal to 6. | PASS |
| node.channelCountMode is equal to explicit. | PASS |
| node0 = new ChannelSplitterNode(context) did not throw an exception. | PASS |
| node0 instanceof ChannelSplitterNode is equal to true. | PASS |
| node0.channelCount is equal to 6. | PASS |
| node0.channelCountMode is equal to explicit. | PASS |
| node0.channelInterpretation is equal to discrete. | PASS |
| node0.numberOfInputs is equal to 1. | PASS |
| node0.numberOfOutputs is equal to 6. | PASS |
| node1 = new ChannelSplitterNode(context, {"numberOfInputs":3,"numberOfOutputs":9,"channelInterpretation":"discrete"}) did not throw an exception. | PASS |
| node1.channelInterpretation is equal to discrete. | PASS |
| node1.numberOfInputs is equal to 1. | PASS |
| node1.numberOfOutputs is equal to 9. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [constructor options] All assertions passed. (total 7 assertions) | PASS |
| < [default constructor] All assertions passed. (total 7 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 8 assertions) | PASS |
| > [constructor options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/the-audio-api/the-waveshapernode-interface/ctor-waveshaper.html (48/48, 100.00%, 0.84% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| new WaveShaperNode() threw TypeError: "Failed to construct 'WaveShaperNode': 1 argument required, but only 0 present.". | PASS |
| new WaveShaperNode(1) threw TypeError: "Failed to construct 'WaveShaperNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new WaveShaperNode(c, {channelCount: 0}) threw NotSupportedError: "Failed to construct 'WaveShaperNode': The channel count provided (0) is outside the range [1, 32].". | PASS |
| new WaveShaperNode(c, {channelCount: 17}} did not throw an exception. | PASS |
| new WaveShaperNode(c, {channelCount: 99}) threw NotSupportedError: "Failed to construct 'WaveShaperNode': The channel count provided (99) is outside the range [1, 32].". | PASS |
| new WaveShaperNode(c, {channelCountMode: "clamped-max"}) did not throw an exception. | PASS |
| new WaveShaperNode(c, {channelCountMode: "explicit"}) did not throw an exception. | PASS |
| new WaveShaperNode(c, {channelCountMode: "foobar"} threw TypeError: "Failed to construct 'WaveShaperNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS |
| new WaveShaperNode(c, {channelCountMode: "max"} did not throw an exception. | PASS |
| new WaveShaperNode(c, {channelCountMode: "max"}) did not throw an exception. | PASS |
| new WaveShaperNode(c, {channelInterpretation: "discrete"}) did not throw an exception. | PASS |
| new WaveShaperNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Failed to construct 'WaveShaperNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new WaveShaperNode(c, {channelInterpretation: "speakers"}) did not throw an exception. | PASS |
| new WaveShaperNode(context, 42) threw TypeError: "Failed to construct 'WaveShaperNode': parameter 2 ('options') is not an object.". | PASS |
| node.channelCount is equal to 17. | PASS |
| node.channelCountMode after invalid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to clamped-max. | PASS |
| node.channelCountMode after valid setter is equal to explicit. | PASS |
| node.channelCountMode after valid setter is equal to max. | PASS |
| node.channelCountMode is equal to max. | PASS |
| node.channelInterpretation after invalid setter is equal to discrete. | PASS |
| node.channelInterpretation is equal to discrete. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node0 = new WaveShaperNode(context) did not throw an exception. | PASS |
| node0 instanceof WaveShaperNode is equal to true. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.curve is equal to null. | PASS |
| node0.numberOfInputs is equal to 1. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node0.oversample is equal to none. | PASS |
| node1 = new WaveShaperNode(, {"curve":{"0":1,"1":2,"2":3},"oversample":"4x"}) did not throw an exception. | PASS |
| node1.curve is identical to the array [1,2,3]. | PASS |
| node1.oversample is equal to 4x. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [incorrect construction] All assertions passed. (total 3 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 20 assertions) | PASS |
| < [valid default construction] All assertions passed. (total 9 assertions) | PASS |
| < [valid non-default] All assertions passed. (total 3 assertions) | PASS |
| > [incorrect construction] | PASS |
| > [initialize] | PASS |
| > [test AudioNodeOptions] | PASS |
| > [valid default construction] | PASS |
| > [valid non-default] | PASS |
| /webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html (27/27, 100.00%, 0.47% of total) | OK |
| After close, offlineContext.state is equal to closed. | PASS |
| After resume, offlineContext.state is equal to suspended. | PASS |
| Create online context did not throw an exception. | PASS |
| context.resume resolved correctly. | PASS |
| context.state after resume is equal to running. | PASS |
| context.state is equal to running. | PASS |
| offlineContext = new OfflineAudioContext(1, 44100, 44100) did not throw an exception. | PASS |
| offlineContext.resume() rejected correctly with InvalidStateError: cannot resume an offline context that has not started. | PASS |
| offlineContext.state is equal to suspended. | PASS |
| offlineContext.suspend() rejected correctly with TypeError: Failed to execute 'suspend' on 'OfflineAudioContext': 1 argument required, but only 0 present.. | PASS |
| p1 = offlineContext.suspend() did not throw an exception. | PASS |
| p1 instanceof Promise is true. | PASS |
| p1 rejected correctly with TypeError: Failed to execute 'suspend' on 'OfflineAudioContext': 1 argument required, but only 0 present.. | PASS |
| p2 = offlineContext.resume() did not throw an exception. | PASS |
| p2 instanceof Promise is true. | PASS |
| p2 rejected correctly with InvalidStateError: cannot resume an offline context that has not started. | PASS |
| p3 = offlineContext.startRendering() did not throw an exception. | PASS |
| # AUDIT TASK RUNNER FINISHED: 4 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [resume-running-context] All assertions passed. (total 4 assertions) | PASS |
| < [test-after-close] All assertions passed. (total 4 assertions) | PASS |
| < [test-resume] All assertions passed. (total 4 assertions) | PASS |
| < [test-suspend] All assertions passed. (total 5 assertions) | PASS |
| > [resume-running-context] Test resuming a running context | PASS |
| > [test-after-close] Test state after context closed | PASS |
| > [test-resume] Test resume() for offline context | PASS |
| > [test-suspend] Test suspend() for offline context | PASS |
| /webaudio/the-audio-api/the-stereopanner-interface/no-dezippering.html (32/32, 100.00%, 0.56% of total) | OK |
| Modulated Stereo Left .value setter output is identical to the array [0,0.3402526378631592,0.6413129568099976,0.8772034645080566,1.0272915363311768,1.0782092809677124,1.0251129865646362,0.8721681237220764,0.634390115737915,0.3706442713737488,0.07306596636772156,-0.2276521474123001,-0.500984787940979,-0.7199963927268982,-0.8642349243164062,-0.9217721223831177...]. | PASS |
| Modulated Stereo Left .value setter output matches setValueAtTime output is true. | PASS |
| Modulated Stereo Right .value setter output is identical to the array [0,0.08775438368320465,0.1789630502462387,0.27175208926200867,0.36420613527297974,0.4544224739074707,0.5405690670013428,0.6209331750869751,0.695970356464386,0.7820523977279663,0.8270168304443359,0.8301812410354614,0.7975679039955139,0.7409225106239319,0.6758685111999512,0.6194734573364258...]. | PASS |
| Modulated Stereo Right .value setter output matches setValueAtTime output is true. | PASS |
| Mono Left .value setter output is identical to the array [0,0.1431909054517746,0.2823145389556885,0.41341903805732727,0.5327803492546082,0.6370079517364502,0.7231414914131165,0.7887340784072876,0.8319228291511536,0.8514807224273682,0.8468523621559143,0.8181691765785217,0.76624596118927,0.6925574541091919,0.5991969108581543,0.48881617188453674...]. | PASS |
| Mono Left .value setter output matches setValueAtTime output is true. | PASS |
| Mono Right .value setter output is identical to the array [0,0.0877474993467331,0.17300257086753845,0.25334352254867554,0.3264882266521454,0.39035898447036743,0.4431416392326355,0.483336865901947,0.5098029375076294,0.5217880606651306,0.5189517736434937,0.5013747215270996,0.46955612301826477,0.424399733543396,0.36718833446502686,0.2995469272136688...]. | PASS |
| Mono Right .value setter output matches setValueAtTime output is true. | PASS |
| Mono: Left channel, pan = -1: contains only the constant 1. | PASS |
| Mono: Left channel, pan = 1: equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {"absoluteThreshold":6.1233e-17,"relativeThreshold":0}. | PASS |
| Mono: Right channel, pan = -1: contains only the constant 0. | PASS |
| Mono: Right channel, pan = 1: contains only the constant 1. | PASS |
| Stereo Left .value setter output is identical to the array [0,0.3454650640487671,0.662327229976654,0.9246212840080261,1.1114109754562378,1.2087113857269287,1.2107640504837036,1.120543360710144,0.9494497179985046,0.7162171602249146,0.4451404809951782,0.1637810319662094,-0.09962651878595352,-0.31883078813552856,-0.4720267355442047,-0.5439075827598572...]. | PASS |
| Stereo Left .value setter output matches setValueAtTime output is true. | PASS |
| Stereo Right .value setter output is identical to the array [0,0.08529330044984818,0.16980315744876862,0.25275346636772156,0.33338260650634766,0.41094908118247986,0.4847412407398224,0.5540815591812134,0.618333101272583,0.6769042611122131,0.7292587161064148,0.7749154567718506,0.8134552836418152,0.84452223777771,0.8678330779075623,0.8831735253334045...]. | PASS |
| Stereo Right .value setter output matches setValueAtTime output is true. | PASS |
| Stereo: Left channel, pan = -1: contains only the constant 3. | PASS |
| Stereo: Left channel, pan = 1: equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {"absoluteThreshold":6.1233e-17,"relativeThreshold":0}. | PASS |
| Stereo: Right channel, pan = -1: contains only the constant 0. | PASS |
| Stereo: Right channel, pan = 1: contains only the constant 3. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test mono input automation] All assertions passed. (total 4 assertions) | PASS |
| < [test mono input setValue] All assertions passed. (total 4 assertions) | PASS |
| < [test mono input] All assertions passed. (total 4 assertions) | PASS |
| < [test stereo input setValue] All assertions passed. (total 4 assertions) | PASS |
| < [test stereo input] All assertions passed. (total 4 assertions) | PASS |
| > [test mono input automation] Test StereoPanner with mono input and automation | PASS |
| > [test mono input setValue] Test StereoPanner with mono input value setter vs setValueAtTime | PASS |
| > [test mono input] Test StereoPanner with mono input has no dezippering | PASS |
| > [test stereo input setValue] Test StereoPanner with mono input value setter vs setValueAtTime | PASS |
| > [test stereo input] Test StereoPanner with stereo input has no dezippering | PASS |
| /webaudio/the-audio-api/the-audionode-interface/audionode-connect-return-value.html (1/1, 100.00%, 0.02% of total) | OK |
| connect should return the node connected to. | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/panner-rolloff-clamping.html (5/5, 100.00%, 0.09% of total) | OK |
| Panner distanceModel: "linear", rolloffFactor: 2 is identical to the array [0,0.009021542966365814,0.026864444836974144,0.03272818773984909,0.04710530489683151,0.05850887671113014,0.0714946985244751,0.07767147570848465,0.09869713336229324,0.10140510648488998,0.1164083331823349,0.1324559450149536,0.13525457680225372,0.15394212305545807,0.1645830273628235,0.17470026016235352...]. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [linear-clamp-high] All assertions passed. (total 1 assertions) | PASS |
| > [linear-clamp-high] rolloffFactor clamping for linear distance model | PASS |
| /webaudio/the-audio-api/the-audiocontext-interface/audiocontext-getoutputtimestamp.html (8/8, 100.00%, 0.14% of total) | OK |
| timestamp.contextTime does exist. | PASS |
| timestamp.contextTime is greater than or equal to 0. | PASS |
| timestamp.performanceTime does exist. | PASS |
| timestamp.performanceTime is greater than or equal to 0. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [getoutputtimestamp-initial-values] All assertions passed. (total 4 assertions) | PASS |
| > [getoutputtimestamp-initial-values] | PASS |
| /webaudio/the-audio-api/the-analysernode-interface/test-analyser-gain.html (1/1, 100.00%, 0.02% of total) | OK |
| Test effect of AnalyserNode on GainNode output | PASS |
| /webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html (101/101, 100.00%, 1.76% of total) | OK |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS |
| context.listener.forwardX.value is equal to 0. | PASS |
| context.listener.forwardY.value is equal to 0. | PASS |
| context.listener.forwardZ.value is equal to -1. | PASS |
| context.listener.positionX.value is equal to 0. | PASS |
| context.listener.positionY.value is equal to 0. | PASS |
| context.listener.positionZ.value is equal to 0. | PASS |
| context.listener.upX.value is equal to 0. | PASS |
| context.listener.upY.value is equal to 1. | PASS |
| context.listener.upZ.value is equal to 0. | PASS |
| new PannerNode() threw TypeError: "Failed to construct 'PannerNode': 1 argument required, but only 0 present.". | PASS |
| new PannerNode(1) threw TypeError: "Failed to construct 'PannerNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS |
| new PannerNode(c, " + JSON.stringify(options) + ") threw TypeError: "Failed to construct 'PannerNode': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS |
| new PannerNode(c, {"channelCount":0}) threw NotSupportedError: "Failed to construct 'PannerNode': The channelCount provided (0) is outside the range [1, 2].". | PASS |
| new PannerNode(c, {"channelCount":3}) threw NotSupportedError: "Failed to construct 'PannerNode': The channelCount provided (3) is outside the range [1, 2].". | PASS |
| new PannerNode(c, {"channelCount":99}) threw NotSupportedError: "Failed to construct 'PannerNode': The channelCount provided (99) is outside the range [1, 2].". | PASS |
| new PannerNode(c, {"channelCountMode":"max"}) threw NotSupportedError: "Failed to construct 'PannerNode': Panner: 'max' is not allowed". | PASS |
| new PannerNode(c, {"channelInterpretation":"foobar"}) threw TypeError: "Failed to construct 'PannerNode': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS |
| new PannerNode(c, {"coneOuterGain":-1}) threw InvalidStateError: "Failed to construct 'PannerNode': The coneOuterGain provided (-1) is outside the range [0, 1].". | PASS |
| new PannerNode(c, {"coneOuterGain":1.1}) threw InvalidStateError: "Failed to construct 'PannerNode': The coneOuterGain provided (1.1) is outside the range [0, 1].". | PASS |
| new PannerNode(c, {"maxDistance":-1}) threw RangeError: "Failed to construct 'PannerNode': The maxDistance provided (-1) is less than the minimum bound (0).". | PASS |
| new PannerNode(c, {"rolloffFactor":-1}) threw RangeError: "Failed to construct 'PannerNode': The rolloffFactor provided (-1) is less than the minimum bound (0).". | PASS |
| new PannerNode(context, 42) threw TypeError: "Failed to construct 'PannerNode': parameter 2 ('options') is not an object.". | PASS |
| node = new PannerNode(c, {"panningModel":"HRTF","positionX":1.4142135623730951,"positionY":2.8284271247461903,"positionZ":4.242640687119286,"orientationX":-1.4142135623730951,"orientationY":-2.8284271247461903,"orientationZ":-4.242640687119286,"distanceModel":"linear","refDistance":3.141592653589793,"maxDistance":6.283185307179586,"rolloffFactor":9.42477796076938,"coneInnerAngle":12.566370614359172,"coneOuterAngle":15.707963267948966,"coneOuterGain":0.3141592653589793}) did not throw an exception. | PASS |
| node instanceof PannerNode is equal to true. | PASS |
| node.channelCount is equal to 2. | PASS |
| node.channelCountMode is equal to clamped-max. | PASS |
| node.channelInterpretation is equal to speakers. | PASS |
| node.coneInnerAngle is equal to 12.566370614359172. | PASS |
| node.coneOuterAngle is equal to 15.707963267948966. | PASS |
| node.coneOuterGain is equal to 0.3141592653589793. | PASS |
| node.distanceModel is equal to linear. | PASS |
| node.maxDistance is equal to 6.283185307179586. | PASS |
| node.orientationX.value is equal to -1.4142135381698608. | PASS |
| node.orientationY.value is equal to -2.8284270763397217. | PASS |
| node.orientationZ.value is equal to -4.242640495300293. | PASS |
| node.panningModel is equal to HRTF. | PASS |
| node.positionX.value is equal to 1.4142135381698608. | PASS |
| node.positionY.value is equal to 2.8284270763397217. | PASS |
| node.positionZ.value is equal to 4.242640495300293. | PASS |
| node.refDistance is equal to 3.141592653589793. | PASS |
| node.rolloffFactor is equal to 9.42477796076938. | PASS |
| node0 = new PannerNode(context) did not throw an exception. | PASS |
| node0 instanceof PannerNode is equal to true. | PASS |
| node0.channelCount is equal to 2. | PASS |
| node0.channelCountMode is equal to clamped-max. | PASS |
| node0.channelInterpretation is equal to speakers. | PASS |
| node0.coneInnerAngle is equal to 360. | PASS |
| node0.coneOuterAngle is equal to 360. | PASS |
| node0.coneOuterGain is equal to 0. | PASS |
| node0.distanceModel is equal to inverse. | PASS |
| node0.maxDistance is equal to 10000. | PASS |
| node0.numberOfInputs is equal to 1. | PASS |
| node0.numberOfOutputs is equal to 1. | PASS |
| node0.orientationX.value is equal to 1. | PASS |
| node0.orientationY.value is equal to 0. | PASS |
| node0.orientationZ.value is equal to 0. | PASS |
| node0.panningModel is equal to equalpower. | PASS |
| node0.positionX.value is equal to 0. | PASS |
| node0.positionY.value is equal to 0. | PASS |
| node0.positionZ.value is equal to 0. | PASS |
| node0.refDistance is equal to 1. | PASS |
| node0.rolloffFactor is equal to 1. | PASS |
| node1 = new PannerNode(c, {"channelCount":1}) did not throw an exception. | PASS |
| node1.channelCount is equal to 1. | PASS |
| node2 = new PannerNode(c, {"channelCount":2}) did not throw an exception. | PASS |
| node2.channelCount is equal to 2. | PASS |
| node3 = new PannerNode(c, {"channelCountMode":"clamped-max"}) did not throw an exception. | PASS |
| node3.channelCountMode is equal to clamped-max. | PASS |
| node4 = new PannerNode(c, {"channelCountMode":"explicit"}) did not throw an exception. | PASS |
| node4.channelCountMode is equal to explicit. | PASS |
| node5 = new PannerNode(c, {"channelInterpretation":"speakers"}) did not throw an exception. | PASS |
| node5.channelInterpretation is equal to speakers. | PASS |
| node6 = new PannerNode(c, {"channelInterpretation":"discrete"}) did not throw an exception. | PASS |
| node6.channelInterpretation is equal to discrete. | PASS |
| node7 = new PannerNode(c, {"maxDistance":100}) did not throw an exception. | PASS |
| node7.maxDistance is equal to 100. | PASS |
| node8 = new PannerNode(c, {"rolloffFactor":0.5}) did not throw an exception. | PASS |
| node8 = new PannerNode(c, {"rolloffFactor":0}) did not throw an exception. | PASS |
| node8 = new PannerNode(c, {"rolloffFactor":100}) did not throw an exception. | PASS |
| node8.rolloffFactor is equal to 0. | PASS |
| node8.rolloffFactor is equal to 0.5. | PASS |
| node8.rolloffFactor is equal to 100. | PASS |
| node9 = new PannerNode(c, {"coneOuterGain":0.5}) did not throw an exception. | PASS |
| node9 = new PannerNode(c, {"coneOuterGain":0}) did not throw an exception. | PASS |
| node9 = new PannerNode(c, {"coneOuterGain":1}) did not throw an exception. | PASS |
| node9.coneOuterGain is equal to 0. | PASS |
| node9.coneOuterGain is equal to 0.5. | PASS |
| node9.coneOuterGain is equal to 1. | PASS |
| # AUDIT TASK RUNNER FINISHED: 5 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [constructor with options] All assertions passed. (total 19 assertions) | PASS |
| < [default constructor] All assertions passed. (total 30 assertions) | PASS |
| < [initialize] All assertions passed. (total 1 assertions) | PASS |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS |
| < [test AudioNodeOptions] All assertions passed. (total 36 assertions) | PASS |
| > [constructor with options] | PASS |
| > [default constructor] | PASS |
| > [initialize] | PASS |
| > [invalid constructor] | PASS |
| > [test AudioNodeOptions] | PASS |
| /webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation.html (20/20, 100.00%, 0.35% of total) | OK |
| Output of bandpass filter with Q automation equals [0,0.013114781118929386,0.047823384404182434,0.09765293449163437,0.15657125413417816,0.21899054944515228,0.27981746196746826,0.3345244824886322,0.379226952791214,0.4107542335987091,0.4267079830169678,0.42550167441368103,0.40637844800949097,0.3694050908088684,0.31544122099876404,0.24608469009399414...] with an element-wise tolerance of {"absoluteThreshold":9.8348e-7,"relativeThreshold":0}. | PASS |
| Output of bandpass filter with detune automation equals [0,0.0008383856620639563,0.00141120795160532,0.00036609364906325936,0.0001000093761831522,0.0012290297308936715,0.001128630479797721,0.0000010075401633002912,0.0004436193557921797,0.0014331036945804954,0.00065815937705338,-0.00011537729005794972,0.0008997227996587753,0.0013498960761353374,0.00016446926747448742,0.00006718232179991901...] with an element-wise tolerance of {"absoluteThreshold":0.000031471,"relativeThreshold":0}. | PASS |
| Output of bandpass filter with frequency automation equals [0,0.27222275733947754,0.1703483760356903,-0.4806261956691742,-0.2788437604904175,0.3957056999206543,0.10840324312448502,-0.39677220582962036,0.06871235370635986,0.41004475951194763,-0.1897629052400589,-0.3590146601200104,0.29248547554016113,0.2614542245864868,-0.376722127199173,-0.14195005595684052...] with an element-wise tolerance of {"absoluteThreshold":0.0000046455,"relativeThreshold":0}. | PASS |
| Output of bandpass filter with sinusoidal modulation of bandpass center frequency equals [0,0.0018003738950937986,0.00716581242159009,0.015862563624978065,0.027496544644236565,0.04151911661028862,0.05723972246050835,0.07384545356035233,0.09042731672525406,0.10601259768009186,0.11960244923830032,0.13021349906921387,0.13692189753055573,0.13890819251537323,0.13550083339214325,0.12621651589870453...] with an element-wise tolerance of {"absoluteThreshold":0.000039787,"relativeThreshold":0}. | PASS |
| Output of lowshelf filter with gain automation equals [0,0.4781356751918793,1.5511385202407837,3.0428154468536377,4.649440288543701,6.148099899291992,7.424892902374268,8.436473846435547,9.169538497924805,9.61856460571289,9.779438972473145,9.650873184204102,9.237476348876953,8.551753997802734,7.614615440368652,6.454819679260254...] with an element-wise tolerance of {"absoluteThreshold":0.000027657,"relativeThreshold":0}. | PASS |
| Output of peaking filter with automation of all parameters equals [0,0.9876883625984192,-0.30901700258255005,-0.8910065293312073,0.5877852439880371,0.7071067690849304,-0.80901700258255,-0.45399048924446106,0.9510565400123596,0.15643446147441864,-1,0.15643446147441864,0.9510565400123596,-0.45399048924446106,-0.80901700258255,0.7071067690849304...] with an element-wise tolerance of {"absoluteThreshold":0.00062907,"relativeThreshold":0}. | PASS |
| # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [automate-all] All assertions passed. (total 1 assertions) | PASS |
| < [automate-detune] All assertions passed. (total 1 assertions) | PASS |
| < [automate-freq] All assertions passed. (total 1 assertions) | PASS |
| < [automate-gain] All assertions passed. (total 1 assertions) | PASS |
| < [automate-q] All assertions passed. (total 1 assertions) | PASS |
| < [modulation] All assertions passed. (total 1 assertions) | PASS |
| > [automate-all] | PASS |
| > [automate-detune] | PASS |
| > [automate-freq] | PASS |
| > [automate-gain] | PASS |
| > [automate-q] | PASS |
| > [modulation] | PASS |
| /webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-simple.html (16/16, 100.00%, 0.28% of total) | OK |
| Initial WaveShaper.curve is equal to null. | PASS |
| Initial WaveShaper.oversample is equal to none. | PASS |
| Setting curve back to null did not throw an exception. | PASS |
| Setting curve to [-1,0.25,0.75] did not throw an exception. | PASS |
| Setting oversample to "2x" did not throw an exception. | PASS |
| Setting oversample to "4x" did not throw an exception. | PASS |
| Setting oversample to "invalid" did not throw an exception. | PASS |
| WaveShaper.curve is identical to the array [-1,0.25,0.75]. | PASS |
| Waveshaper.curve = null is equal to null. | PASS |
| Waveshaper.oversample = "2x" is equal to 2x. | PASS |
| Waveshaper.oversample = "4x" is equal to 4x. | PASS |
| Waveshaper.oversample = "invalid" is equal to 4x. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [simple] All assertions passed. (total 12 assertions) | PASS |
| > [simple] | PASS |
| /webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html (5/5, 100.00%, 0.09% of total) | OK |
| frequencyParam.maxValue is equal to 24000. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [Query |sampleRate| upon AudioWorkletGlobalScope construction] All assertions passed. (total 1 assertions) | PASS |
| > [Query |sampleRate| upon AudioWorkletGlobalScope construction] | PASS |
| /webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html (7/7, 100.00%, 0.12% of total) | OK |
| Reference[0:127] contains only the constant 1. | PASS |
| Test[0:127] contains only the constant 1. | PASS |
| Test[128:] is identical to the array [0.10000000149011612,0.1000492125749588,0.10009842365980148,0.10014764219522476,0.10019685328006744,0.10024606436491013,0.10029527544975281,0.10034449398517609,0.10039370507001877,0.10044291615486145,0.10049212723970413,0.10054134577512741,0.10059055685997009,0.10063976794481277,0.10068897902965546,0.10073819756507874...]. | PASS |
| # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. | PASS |
| # AUDIT TASK RUNNER STARTED. | PASS |
| < [test] All assertions passed. (total 3 assertions) | PASS |
| > [test] Test linearRampToValue with end time in the past | PASS |