phetsims / expression-exchange

"Expression Exchange" is an educational simulation in HTML5, by PhET Interactive Simulations.
GNU General Public License v3.0
2 stars 2 forks source link

Assertion failed: hide button timer should be running if pop up buttons are visible #135

Closed pixelzoom closed 6 years ago

pixelzoom commented 6 years ago

From CT, occurs intermittently:

expression-exchange : xss-fuzz : run Uncaught Error: Assertion failed: hide button timer should be running if pop up buttons are visible Error: Assertion failed: hide button timer should be running if pop up buttons are visible at window.assertions.assertFunction (https://bayes.colorado.edu/continuous-testing/snapshot-1534826071900/assert/js/assert.js:22:13) at Object.enter (https://bayes.colorado.edu/continuous-testing/snapshot-1534826071900/expression-exchange/js/common/view/ExpressionOverlayNode.js?bust=1534832921935:96:21) at Input.dispatchToListeners (https://bayes.colorado.edu/continuous-testing/snapshot-1534826071900/scenery/js/input/Input.js?bust=1534832921935:1352:27) at Input.dispatchToTargets (https://bayes.colorado.edu/continuous-testing/snapshot-1534826071900/scenery/js/input/Input.js?bust=1534832921935:1382:14) at Input.dispatchEvent (https://bayes.colorado.edu/continuous-testing/snapshot-1534826071900/scenery/js/input/Input.js?bust=1534832921935:1312:12) at Input.enterEvents (https://bayes.colorado.edu/continuous-testing/snapshot-1534826071900/scenery/js/input/Input.js?bust=1534832921935:1247:16) at Input.branchChangeEvents (https://bayes.colorado.edu/continuous-testing/snapshot-1534826071900/scenery/js/input/Input.js?bust=1534832921935:1217:14) at Input.downEvent (https://bayes.colorado.edu/continuous-testing/snapshot-1534826071900/scenery/js/input/Input.js?bust=1534832921935:1097:29) at Input.touchStart (https://bayes.colorado.edu/continuous-testing/snapshot-1534826071900/scenery/js/input/Input.js?bust=1534832921935:643:12) at InputFuzzer.touchStart (https://bayes.colorado.edu/continuous-testing/snapshot-1534826071900/scenery/js/input/InputFuzzer.js?bust=1534832921935:218:27) Approximately 8/20/2018, 10:34:31 PM

jbphet commented 6 years ago

I looked at this for a while, and I believe that the assertion is firing because the timer is expiring in the same frame where a fuzz mouse event moves into the popup button. In that frame, the timer is being cleared, then the enter event is being processed, and it is finding that the timer isn't running. This is an extremely rare event, and it doesn't cause any erroneous behavior within the sim - it was there to make sure that the state sequence was correct. At this point, with the behavior having been fully debugged and the sim having been published for quite some time, I believe that the assertion has served its purpose and I'm comfortable with simply removing it, so that's what I've done. Closing.

jbphet commented 6 years ago

By the way, I ran the fuzz test (query params=?brand=phet&ea&fuzzMouse&fuzzTouch&stringTest=xss) for over an hour after removing the assertion and saw no problems.