phetsims/build-an-atom

Uncaught Error: Assertion failed: no sound found for provided value

Closed this issue · 2 comments

This is a bug that is caused by work done in phetsims/joist#602.

Over there we had to move around the creation of the screen button sound manager, but I think where it is currently can cause a race condition between the sim loading, and the first time that a screen button is pressed. When fuzzing the state wrapper for BAA, it is pretty easy to reproduce this, I think because of how long the load time is.

build-an-atom : phet-io-state-fuzz : require.js : run
Uncaught Error: Uncaught Error: Assertion failed: no sound found for provided value
Error: Assertion failed: no sound found for provided value
    at window.assertions.assertFunction (https://bayes.colorado.edu/continuous-testing/snapshot-1581727174873/assert/js/assert.js?bust=1581728122269:22:13)
    at ScreenSelectionSoundGenerator.playAssociatedSound (https://bayes.colorado.edu/continuous-testing/snapshot-1581727174873/tambo/js/sound-generators/MultiClip.js?bust=1581728122489:87:17)
    at https://bayes.colorado.edu/continuous-testing/snapshot-1581727174873/tambo/js/sound-generators/ScreenSelectionSoundGenerator.js?bust=1581728122489:56:14
    at TinyEmitter.emit (https://bayes.colorado.edu/continuous-testing/snapshot-1581727174873/axon/js/TinyEmitter.js?bust=1581728122489:68:55)
    at Property._notifyListeners (https://bayes.colorado.edu/continuous-testing/snapshot-1581727174873/axon/js/Property.js?bust=1581728122489:279:27)
    at Property.set (https://bayes.colorado.edu/continuous-testing/snapshot-1581727174873/axon/js/Property.js?bust=1581728122489:178:16)
    at Property.set value [as value] (https://bayes.colorado.edu/continuous-testing/snapshot-1581727174873/axon/js/Property.js?bust=1581728122489:349:34)
    at ScreenButton.model.selectedScreenProperty.value (https://bayes.colorado.edu/continuous-testing/snapshot-1581727174873/joist/js/ScreenButton.js?bust=1581728122489:111:59)
    at TinyEmitter.emit (https://bayes.colorado.edu/continuous-testing/snapshot-1581727174873/axon/js/TinyEmitter.js?bust=1581728122489:68:55)
    at https://bayes.colorado.edu/continuous-testing/snapshot-1581727174873/axon/js/Emitter.js?bust=1581728122489:36:31
id: Bayes Chrome
Approximately 2/14/2020, 3:39:34 PM

Honestly I was pretty surprised to see that it would be possible to start the sim before all sounds were loaded. Then investigating further I found SoundInfo.js so it looks like a lot is loaded lazily. @jbphet is it possible to load the nav bar sounds more eagerly because of their prevalence?

Saw an instance of this in Waves Intro in CT

waves-intro : fuzz : require.js : load
Query: brand=phet&ea&fuzz&memoryLimit=1000
Uncaught Error: Assertion failed: no sound found for provided value
Error: Assertion failed: no sound found for provided value
    at window.assertions.assertFunction (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/assert/js/assert.js?bust=1581979479665:22:13)
    at ScreenSelectionSoundGenerator.playAssociatedSound (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/tambo/js/sound-generators/MultiClip.js?bust=1581979480703:87:17)
    at https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/tambo/js/sound-generators/ScreenSelectionSoundGenerator.js?bust=1581979480703:48:16
    at TinyEmitter.emit (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/TinyEmitter.js?bust=1581979480703:68:55)
    at Property._notifyListeners (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:279:27)
    at Property.set (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:178:16)
    at Property.set value [as value] (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:349:34)
    at Object.over (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/joist/js/ScreenButton.js?bust=1581979480703:153:48)
    at Input.dispatchToListeners (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/scenery/js/input/Input.js?bust=1581979480703:1809:27)
    at Input.dispatchToTargets (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/scenery/js/input/Input.js?bust=1581979480703:1841:14)
id: Bayes Chrome
Approximately 2/17/2020, 2:04:10 PM
waves-intro : fuzz : require.js : load
Query: brand=phet&ea&fuzz&memoryLimit=1000
Uncaught Error: Assertion failed: no sound found for provided value
Error: Assertion failed: no sound found for provided value
    at window.assertions.assertFunction (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/assert/js/assert.js?bust=1581979479665:22:13)
    at ScreenSelectionSoundGenerator.playAssociatedSound (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/tambo/js/sound-generators/MultiClip.js?bust=1581979480703:87:17)
    at https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/tambo/js/sound-generators/ScreenSelectionSoundGenerator.js?bust=1581979480703:56:14
    at TinyEmitter.emit (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/TinyEmitter.js?bust=1581979480703:68:55)
    at Property._notifyListeners (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:279:27)
    at Property.set (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:178:16)
    at Property.set value [as value] (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:349:34)
    at ScreenButton.model.selectedScreenProperty.value (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/joist/js/ScreenButton.js?bust=1581979480703:111:59)
    at TinyEmitter.emit (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/TinyEmitter.js?bust=1581979480703:68:55)
    at https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Emitter.js?bust=1581979480703:36:31
id: Bayes Chrome
Approximately 2/17/2020, 2:04:10 PM
waves-intro : fuzz : require.js : run
Query: brand=phet&ea&fuzz&memoryLimit=1000
Uncaught Error: Assertion failed: no sound found for provided value
Error: Assertion failed: no sound found for provided value
    at window.assertions.assertFunction (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/assert/js/assert.js?bust=1581979479665:22:13)
    at ScreenSelectionSoundGenerator.playAssociatedSound (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/tambo/js/sound-generators/MultiClip.js?bust=1581979480703:87:17)
    at https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/tambo/js/sound-generators/ScreenSelectionSoundGenerator.js?bust=1581979480703:48:16
    at TinyEmitter.emit (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/TinyEmitter.js?bust=1581979480703:68:55)
    at Property._notifyListeners (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:279:27)
    at Property.set (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:178:16)
    at Property.set value [as value] (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:349:34)
    at Object.over (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/joist/js/ScreenButton.js?bust=1581979480703:153:48)
    at Input.dispatchToListeners (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/scenery/js/input/Input.js?bust=1581979480703:1809:27)
    at Input.dispatchToTargets (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/scenery/js/input/Input.js?bust=1581979480703:1841:14)
id: Bayes Chrome
Approximately 2/17/2020, 2:04:10 PM
waves-intro : fuzz : require.js : run
Query: brand=phet&ea&fuzz&memoryLimit=1000
Uncaught Error: Assertion failed: no sound found for provided value
Error: Assertion failed: no sound found for provided value
    at window.assertions.assertFunction (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/assert/js/assert.js?bust=1581979479665:22:13)
    at ScreenSelectionSoundGenerator.playAssociatedSound (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/tambo/js/sound-generators/MultiClip.js?bust=1581979480703:87:17)
    at https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/tambo/js/sound-generators/ScreenSelectionSoundGenerator.js?bust=1581979480703:56:14
    at TinyEmitter.emit (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/TinyEmitter.js?bust=1581979480703:68:55)
    at Property._notifyListeners (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:279:27)
    at Property.set (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:178:16)
    at Property.set value [as value] (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Property.js?bust=1581979480703:349:34)
    at ScreenButton.model.selectedScreenProperty.value (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/joist/js/ScreenButton.js?bust=1581979480703:111:59)
    at TinyEmitter.emit (https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/TinyEmitter.js?bust=1581979480703:68:55)
    at https://bayes.colorado.edu/continuous-testing/snapshot-1581973450278/axon/js/Emitter.js?bust=1581979480703:36:31
id: Bayes Chrome
Approximately 2/17/2020, 2:04:10 PM

Sounds are now assured to be loaded before they are used due to the changes to support ES6 modules, so this is no longer a problem. Build and Atom is showing all green on this morning's CT, which further supports this. Closing.