Click here to download the Blitz Browser!

WPT

wpt / webaudio / the-audio-api / the-audioparam-interface / audioparam-setValueCurve-exceptions.html

Spec: Web Audio API ↗

Runs: Chrome 155.0.8041.0 (wpt@4a01b83e3, 2026-09-04) | Firefox 157.0a1 (wpt@e7122b73f, 2026-09-04) | Safari 251 preview (wpt@2c385f65e, 2026-09-04) | Ladybird 1.0-70fb3 (wpt@4a01b83e3, 2026-09-04) | Servo Servo 0.6 (wpt@7e3d005d7, 2026-09-03) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)

View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi

ChromeFirefoxSafariLadybirdServoBlitz
Total66/6666/6666/6666/6642/66NOT RUN
SubtestChromeFirefoxSafariLadybirdServoBlitz
# AUDIT TASK RUNNER STARTED.PASSPASSPASSPASSPASS
Executing "setValueCurve"PASSPASSPASSPASSPASS
Executing "value setter"PASSPASSPASSPASSPASS
Executing "automations"PASSPASSPASSPASSFAIL
Executing "catch-exception"PASSPASSPASSPASSPASS
Executing "start-end"PASSPASSPASSPASSPASS
Executing "curve overlap"PASSPASSPASSPASSPASS
Executing "curve lengths"PASSPASSPASSPASSPASS
Audit reportPASSPASSPASSPASSPASS
> [setValueCurve] PASSPASSPASSPASSPASS
setValueCurveAtTime(curve, 0.0125, 0.0125) did not throw an exception.PASSPASSPASSPASSPASS
setValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Failed to execute 'setValueAtTime' on 'AudioParam': setValueAtTime(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)".PASS
linearRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': linearRampToValueAtTime(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)".PASS
exponentialRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': exponentialRampToValue(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)".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
setValueAtTime(1, 0.026250000000000002) did not throw an exception.PASSPASSPASSPASSPASS
< [setValueCurve] All assertions passed. (total 6 assertions)PASSPASSPASSPASS
> [value setter] PASSPASSPASSPASSPASS
setValueCurveAtTime(curve, 0, 0.025) did not throw an exception.PASSPASSPASSPASSPASS
value setter threw NotSupportedError: "Failed to set the 'value' property on 'AudioParam': setValueAtTime(0, 0) overlaps setValueCurveAtTime(..., 0, 0.025)".PASS
< [value setter] All assertions passed. (total 2 assertions)PASSPASSPASSPASS
> [automations] PASSPASSPASSPASSPASS
linearRampToValueAtTime(1, 0.0125) did not throw an exception.PASSPASSPASSPASSPASS
exponentialRampToValueAtTime(1, 0.025) did not throw an exception.PASSPASSPASSPASSPASS
setTargetAtTime(1, 0.037500000000000006, 0.1) did not throw an exception.PASSPASSPASSPASSPASS
setValueCurveAtTime(curve, 0.05, 0.1) did not throw an exception.PASSPASSPASSPASSPASS
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.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.043750000000000004, 0.01) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.04375, 0.01) overlaps setValueCurveAtTime(..., 0.05, 0.1)".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([1, 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.PASSPASSPASSPASS
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
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
< [automations] All assertions passed. (total 13 assertions)PASSPASSPASSPASS
> [catch-exception] PASSPASSPASSPASSPASS
Handled setValueCurve exception so output contains only the constant 1.PASSPASSPASSPASSPASS
< [catch-exception] All assertions passed. (total 1 assertions)PASSPASSPASSPASSPASS
> [start-end] PASSPASSPASSPASSPASS
setValueAtTime(1, 0) did not throw an exception.PASSPASSPASSPASSPASS
linearRampToValueAtTime(0, 0.0025) did not throw an exception.PASSPASSPASSPASSPASS
setValueCurveAtTime(..., 0.0025, 0.0025) did not throw an exception.PASSPASSPASSPASSPASS
exponentialRampToValueAtTime(1, 0.0075) did not throw an exception.PASSPASSPASSPASSPASS
setValueCurveAtTime(..., 0.0075, 0.0025) did not throw an exception.PASSPASSPASSPASSPASS
setValueCurveAtTime(..., 0.01, 0.0025) did not throw an exception.PASSPASSPASSPASSPASS
setValueAtTime(0, 0.0125) did not throw an exception.PASSPASSPASSPASSPASS
setValueCurveAtTime(..., 0.0125, 0.0025) did not throw an exception.PASSPASSPASSPASSPASS
setTargetAtTime(1, 0.015000000000000001, 1) did not throw an exception.PASSPASSPASSPASSPASS
< [start-end] All assertions passed. (total 9 assertions)PASSPASSPASSPASSPASS
> [curve overlap] PASSPASSPASSPASSPASS
g.gain.setValueCurveAtTime([1,2,3], 5, 10) did not throw an exception.PASSPASSPASSPASSPASS
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
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], 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], 10, 10) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 10, 10) 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
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.setValueAtTime(1.0, 15) did not throw an exception.PASSPASSPASSPASSPASS
< [curve overlap] All assertions passed. (total 8 assertions)PASSPASSPASSPASS
> [curve lengths] PASSPASSPASSPASSPASS
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([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([1,2], 0, 0.01) did not throw an exception.PASSPASSPASSPASSPASS
< [curve lengths] All assertions passed. (total 3 assertions)PASSPASSPASSPASSPASS
# AUDIT TASK RUNNER FINISHED: 7 tasks ran successfully.PASSPASSPASSPASS
setValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "AudioParam.setValueAtTime: Can't add events during a curve event".PASS
linearRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "AudioParam.linearRampToValueAtTime: Can't add events during a curve event".PASS
exponentialRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "AudioParam.exponentialRampToValueAtTime: Can't add events during a curve event".PASS
setTargetAtTime(1, 0.018750000000000003, 1) threw NotSupportedError: "AudioParam.setTargetAtTime: Can't add events during a curve event".PASS
value setter threw NotSupportedError: "AudioParam.value setter: Can't add events during a curve event".PASS
setValueCurveAtTime(curve, 0.00625, 0.01) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events".PASS
setValueCurveAtTime(curve, 0.018750000000000003, 0.01) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events".PASS
setValueCurveAtTime(curve, 0.03125, 0.01) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events".PASS
setValueCurveAtTime(curve, 0.043750000000000004, 0.01) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events".PASS
setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: "AudioParam.setValueCurveAtTime: Element of argument 1 is not a finite floating-point value.".PASS
setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: "AudioParam.setValueCurveAtTime: Element of argument 1 is not a finite floating-point value.".PASS
delayTime.setValueCurveAtTime([1, 5, Infinity], 0.043750000000000004, 0.01) threw TypeError: "AudioParam.setValueCurveAtTime: Element of argument 1 is not a finite floating-point value.".PASS
setValueCurveAtTime(curve, 0.031415926535897934, 0.01) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events".PASS
second g.gain.setValueCurveAtTime([1,2,3], 5, 10) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add events during a curve event".PASS
g.gain.setValueCurveAtTime([1,2,3], 5, 5) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add events during a curve event".PASS
g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events".PASS
g.gain.setValueCurveAtTime([1,2,3], 10, 10) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add events during a curve event".PASS
g.gain.setValueCurveAtTime([1,2,3], 6, 9) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add events during a curve event".PASS
g.gain.setValueCurveAtTime([1,2,3], 4, 11) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events".PASS
setValueCurveAtTime([], 0, 0.01) threw InvalidStateError: "AudioParam.setValueCurveAtTime: Curve length must be at least 2".PASS
setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: "AudioParam.setValueCurveAtTime: Curve length must be at least 2".PASS
setValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Events are overlapping".PASS
linearRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Events are overlapping".PASS
exponentialRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Events are overlapping".PASS
setTargetAtTime(1, 0.018750000000000003, 1) threw NotSupportedError: "Events are overlapping".PASS
value setter threw NotSupportedError: "Events are overlapping".PASS
setValueCurveAtTime(curve, 0.00625, 0.01) threw NotSupportedError: "Events are overlapping".PASS
setValueCurveAtTime(curve, 0.018750000000000003, 0.01) threw NotSupportedError: "Events are overlapping".PASS
setValueCurveAtTime(curve, 0.03125, 0.01) threw NotSupportedError: "Events are overlapping".PASS
setValueCurveAtTime(curve, 0.043750000000000004, 0.01) threw NotSupportedError: "Events are overlapping".PASS
setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: "The provided value is non-finite".PASS
setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: "The provided value is non-finite".PASS
delayTime.setValueCurveAtTime([1, 5, Infinity], 0.043750000000000004, 0.01) threw TypeError: "The provided value is non-finite".PASS
setValueCurveAtTime(curve, 0.031415926535897934, 0.01) threw NotSupportedError: "Events are overlapping".PASS
second g.gain.setValueCurveAtTime([1,2,3], 5, 10) threw NotSupportedError: "Events are overlapping".PASS
g.gain.setValueCurveAtTime([1,2,3], 5, 5) threw NotSupportedError: "Events are overlapping".PASS
g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) threw NotSupportedError: "Events are overlapping".PASS
g.gain.setValueCurveAtTime([1,2,3], 10, 10) threw NotSupportedError: "Events are overlapping".PASS
g.gain.setValueCurveAtTime([1,2,3], 6, 9) threw NotSupportedError: "Events are overlapping".PASS
g.gain.setValueCurveAtTime([1,2,3], 4, 11) threw NotSupportedError: "Events are overlapping".PASS
setValueCurveAtTime([], 0, 0.01) threw InvalidStateError: "Array must have a length of at least 2".PASS
setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: "Array must have a length of at least 2".PASS
X setValueAtTime(1, 0.018750000000000003) did not throw an exception.FAIL
X linearRampToValueAtTime(1, 0.018750000000000003) did not throw an exception.FAIL
X exponentialRampToValueAtTime(1, 0.018750000000000003) did not throw an exception.FAIL
X setTargetAtTime(1, 0.018750000000000003, 1) did not throw an exception.FAIL
< [setValueCurve] 4 out of 6 assertions were failed.FAIL
X value setter did not throw an exception.FAIL
< [value setter] 1 out of 2 assertions were failed.FAIL
X setValueCurveAtTime(curve, 0.00625, 0.01) did not throw an exception.FAIL
X setValueCurveAtTime(curve, 0.018750000000000003, 0.01) did not throw an exception.FAIL
X setValueCurveAtTime(curve, 0.03125, 0.01) did not throw an exception.FAIL
X setValueCurveAtTime(curve, 0.043750000000000004, 0.01) did not throw an exception.FAIL
setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: "this argument is not a finite floating-point value".PASS
setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: "this argument is not a finite floating-point value".PASS
X second g.gain.setValueCurveAtTime([1,2,3], 5, 10) did not throw an exception.FAIL
X g.gain.setValueCurveAtTime([1,2,3], 5, 5) did not throw an exception.FAIL
X g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) did not throw an exception.FAIL
X g.gain.setValueCurveAtTime([1,2,3], 10, 10) did not throw an exception.FAIL
X g.gain.setValueCurveAtTime([1,2,3], 6, 9) did not throw an exception.FAIL
X g.gain.setValueCurveAtTime([1,2,3], 4, 11) did not throw an exception.FAIL
< [curve overlap] 6 out of 8 assertions were failed.FAIL
setValueCurveAtTime([], 0, 0.01) threw InvalidStateError: "The object is in an invalid state.".PASS
setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: "The object is in an invalid state.".PASS
# AUDIT TASK RUNNER FINISHED: 4 out of 7 tasks were failed.FAIL
setValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Cannot schedule an automation event during a value curve".PASS
linearRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Cannot schedule an automation event during a value curve".PASS
exponentialRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Cannot schedule an automation event during a value curve".PASS
setTargetAtTime(1, 0.018750000000000003, 1) threw NotSupportedError: "Cannot schedule an automation event during a value curve".PASS
value setter threw NotSupportedError: "Cannot schedule an automation event during a value curve".PASS
setValueCurveAtTime(curve, 0.00625, 0.01) threw NotSupportedError: "Cannot schedule a value curve containing an automation event".PASS
setValueCurveAtTime(curve, 0.018750000000000003, 0.01) threw NotSupportedError: "Cannot schedule a value curve containing an automation event".PASS
setValueCurveAtTime(curve, 0.03125, 0.01) threw NotSupportedError: "Cannot schedule a value curve containing an automation event".PASS
setValueCurveAtTime(curve, 0.043750000000000004, 0.01) threw NotSupportedError: "Cannot schedule a value curve containing an automation event".PASS
setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: "Expected values to be a finite floating-point number".PASS
setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: "Expected values to be a finite floating-point number".PASS
delayTime.setValueCurveAtTime([1, 5, Infinity], 0.043750000000000004, 0.01) threw TypeError: "Expected values to be a finite floating-point number".PASS
setValueCurveAtTime(curve, 0.031415926535897934, 0.01) threw NotSupportedError: "Cannot schedule a value curve containing an automation event".PASS
second g.gain.setValueCurveAtTime([1,2,3], 5, 10) threw NotSupportedError: "Cannot schedule an automation event during a value curve".PASS
g.gain.setValueCurveAtTime([1,2,3], 5, 5) threw NotSupportedError: "Cannot schedule an automation event during a value curve".PASS
g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) threw NotSupportedError: "Cannot schedule a value curve containing an automation event".PASS
g.gain.setValueCurveAtTime([1,2,3], 10, 10) threw NotSupportedError: "Cannot schedule an automation event during a value curve".PASS
g.gain.setValueCurveAtTime([1,2,3], 6, 9) threw NotSupportedError: "Cannot schedule an automation event during a value curve".PASS
g.gain.setValueCurveAtTime([1,2,3], 4, 11) threw NotSupportedError: "Cannot schedule a value curve containing an automation event".PASS
setValueCurveAtTime([], 0, 0.01) threw InvalidStateError: "values must contain at least two elements".PASS
setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: "values must contain at least two elements".PASS