Study behaving completely different online

URL of experiment: Pavlovia

Description of the problem:
The experiment works fine locally when executing the Python code from within PsychoPy, but there are many issues running it on Pavlovia and locally - I’ve tried Google Chrome and Microsoft Edge. The experiment is very simple, basically just presenting 3 images per trial in random locations on an imaginary circle. The task is to select the odd one out by clicking on it. Each set of images should be on the screen for no longer than 5 s, and if one of the images is clicked on, it should move to the fixation cross and the next trial.

There is a fixation cross of 1s before each trial, and there are currently 2024 trials. The timing of the fixation cross is off (sometimes shorter than 1s, sometimes this routine seems to be skipped completely) and after a while, the experiment seems to stop completely (screen just stays grey). I am new to PsychoPy/Javascript, I am coming from Matlab/Psychtoolbox. But I created all the code using the PsychoPy Builder and added only a couple of lines of custom code, making sure to not call any Python libraries.

Okay, I just found this thread: Online timing issue with 2024.2.3 -- upgrade to 2024.2.4 today
This fixed most of the issues described above - I was programming under 2024.2.3, and updated to 2024.2.4.
HOWEVER, with the new version, a timing issue still persists - the trial should end after a valid click. After a valid click on an image is made, the images disappear, but the trial is not interrupted as it should - it seems to wait for the remainder of the 5 s before the next fixation cross appears. The trial is interrupted as expected upon a valid click when the experiment is executed in python, but not when it’s run locally or online as JS.

Downgrade to 2024.1.4 as suggested here: Routines Not Displaying In Order - #2 by wakecarter has fixed all timing issues described above. This seems like a bug.

Here is the result of my investigation. nonslip-duation [PsychoPy]

The issue occurs when all of the routines in a loop are non-slip (green) and the trial is ended with a mouse press (or button).

One fix is to use routine settings to give the trial a duration and make sure you don’t tick non-slip timing