from IPython.display import YouTubeVideo
YouTubeVideo('Og847HVwRSI')
Many tools exist, most are pretty recent. Some are builders (graphical point-and-click interface, wysiwyg), some also provide the coding libraries for more flexibility. Some are client-side only ('front-end'), others (usually commercial ones) provide integrated solutions (server space for deploying and storing data). Some 'natural selection' of the field still has to happen. New, more succesful tools may pop up.
This can be overwhelming, but it is intrinsic to working on new frontiers (+ competition is good in software). Don't take my choices as gospel. Choose based on your needs. For me the tool needs to be
Vanilla js from scratch: most flexible but time-consuming, technically challenging. Using "canvas": an html element that allows drawing anything (including complex, animated stimuli) using javascript (js). Only for experienced (or ambitious) web developers.
Integrated (commercial) frameworks with more limited experiment building capabilities (but they might be sufficient for your needs)
These are free, open source js libraries and all include a builder. They provide a timeline/scheduler and tools for controlling the flow of an experiment and an (extensible) set of stimuli.
Agnostic to frontend experiment building (js) tools.
jspsych: Modular structure.
adding js code: walkthrough (editor suggested vscode [ms, open source, many tools for web developers])
Github to host/serve (static) pages -> show + why (iterative development)?
sending data to server (https://psytests.be/tests/curimoon/admin/)
debugging in console (right-click, inspect, console)
Give explicit instructions and show warnings about closing the page, going back in the browsers, etc.
Consider measures to avoid bots (especially for Mturk)
Test your experiment on different browsers/screens.
Pilot extensively before moving to larger pools
https://www.wooji-juice.com/blog/javascript-article.html