jspsych 6.3.1 → 7.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/README.md +36 -37
  2. package/css/jspsych.css +39 -39
  3. package/dist/JsPsych.d.ts +112 -0
  4. package/dist/TimelineNode.d.ts +34 -0
  5. package/dist/index.browser.js +3171 -0
  6. package/dist/index.browser.js.map +1 -0
  7. package/dist/index.browser.min.js +2 -0
  8. package/dist/index.browser.min.js.map +1 -0
  9. package/dist/index.cjs +3165 -0
  10. package/dist/index.cjs.map +1 -0
  11. package/dist/index.d.ts +11 -0
  12. package/dist/index.js +3159 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/migration.d.ts +3 -0
  15. package/dist/modules/data/DataCollection.d.ts +45 -0
  16. package/dist/modules/data/DataColumn.d.ts +15 -0
  17. package/dist/modules/data/index.d.ts +25 -0
  18. package/dist/modules/data/utils.d.ts +3 -0
  19. package/dist/modules/extensions.d.ts +22 -0
  20. package/dist/modules/plugin-api/HardwareAPI.d.ts +15 -0
  21. package/dist/modules/plugin-api/KeyboardListenerAPI.d.ts +34 -0
  22. package/dist/modules/plugin-api/MediaAPI.d.ts +27 -0
  23. package/dist/modules/plugin-api/SimulationAPI.d.ts +41 -0
  24. package/dist/modules/plugin-api/TimeoutAPI.d.ts +5 -0
  25. package/dist/modules/plugin-api/index.d.ts +8 -0
  26. package/dist/modules/plugins.d.ts +136 -0
  27. package/dist/modules/randomization.d.ts +35 -0
  28. package/dist/modules/turk.d.ts +40 -0
  29. package/dist/modules/utils.d.ts +7 -0
  30. package/package.json +32 -15
  31. package/src/JsPsych.ts +884 -0
  32. package/src/TimelineNode.ts +536 -0
  33. package/src/index.ts +71 -0
  34. package/src/migration.ts +37 -0
  35. package/src/modules/data/DataCollection.ts +198 -0
  36. package/src/modules/data/DataColumn.ts +86 -0
  37. package/src/modules/data/index.ts +174 -0
  38. package/src/modules/data/utils.ts +75 -0
  39. package/src/modules/extensions.ts +23 -0
  40. package/src/modules/plugin-api/HardwareAPI.ts +32 -0
  41. package/src/modules/plugin-api/KeyboardListenerAPI.ts +165 -0
  42. package/src/modules/plugin-api/MediaAPI.ts +337 -0
  43. package/src/modules/plugin-api/SimulationAPI.ts +181 -0
  44. package/src/modules/plugin-api/TimeoutAPI.ts +16 -0
  45. package/src/modules/plugin-api/index.ts +28 -0
  46. package/src/modules/plugins.ts +165 -0
  47. package/src/modules/randomization.ts +327 -0
  48. package/src/modules/turk.ts +99 -0
  49. package/src/modules/utils.ts +30 -0
  50. package/.github/workflows/jest.yml +0 -20
  51. package/code-of-conduct.md +0 -56
  52. package/contributors.md +0 -61
  53. package/docs/CNAME +0 -1
  54. package/docs/about/about.md +0 -18
  55. package/docs/about/contributing.md +0 -43
  56. package/docs/about/license.md +0 -25
  57. package/docs/about/support.md +0 -7
  58. package/docs/core_library/jspsych-core.md +0 -719
  59. package/docs/core_library/jspsych-data.md +0 -587
  60. package/docs/core_library/jspsych-pluginAPI.md +0 -624
  61. package/docs/core_library/jspsych-randomization.md +0 -389
  62. package/docs/core_library/jspsych-turk.md +0 -98
  63. package/docs/extensions/extensions.md +0 -83
  64. package/docs/extensions/jspsych-ext-webgazer.md +0 -137
  65. package/docs/img/blue.png +0 -0
  66. package/docs/img/devtools-change-css.png +0 -0
  67. package/docs/img/devtools-css-errors.png +0 -0
  68. package/docs/img/devtools-inspect-element.png +0 -0
  69. package/docs/img/folder-setup.png +0 -0
  70. package/docs/img/folder-with-html.png +0 -0
  71. package/docs/img/githubreleases.jpg +0 -0
  72. package/docs/img/jspsych-favicon.png +0 -0
  73. package/docs/img/jspsych-logo-no-text-mono.svg +0 -493
  74. package/docs/img/jspsych-logo.jpg +0 -0
  75. package/docs/img/orange.png +0 -0
  76. package/docs/img/palmer_stim.png +0 -0
  77. package/docs/img/progress_bar.png +0 -0
  78. package/docs/img/prolific-study-completion.png +0 -0
  79. package/docs/img/prolific-study-link.png +0 -0
  80. package/docs/img/visual_search_example.jpg +0 -0
  81. package/docs/index.md +0 -9
  82. package/docs/overview/browser-device-support.md +0 -35
  83. package/docs/overview/callbacks.md +0 -180
  84. package/docs/overview/data.md +0 -281
  85. package/docs/overview/dynamic-parameters.md +0 -147
  86. package/docs/overview/exclude-browser.md +0 -32
  87. package/docs/overview/experiment-options.md +0 -149
  88. package/docs/overview/eye-tracking.md +0 -271
  89. package/docs/overview/fullscreen.md +0 -36
  90. package/docs/overview/media-preloading.md +0 -369
  91. package/docs/overview/mturk.md +0 -77
  92. package/docs/overview/plugins.md +0 -320
  93. package/docs/overview/progress-bar.md +0 -110
  94. package/docs/overview/prolific.md +0 -78
  95. package/docs/overview/record-browser-interactions.md +0 -23
  96. package/docs/overview/running-experiments.md +0 -95
  97. package/docs/overview/style.md +0 -293
  98. package/docs/overview/timeline.md +0 -457
  99. package/docs/plugins/jspsych-animation.md +0 -40
  100. package/docs/plugins/jspsych-audio-button-response.md +0 -60
  101. package/docs/plugins/jspsych-audio-keyboard-response.md +0 -58
  102. package/docs/plugins/jspsych-audio-slider-response.md +0 -53
  103. package/docs/plugins/jspsych-call-function.md +0 -81
  104. package/docs/plugins/jspsych-canvas-button-response.md +0 -66
  105. package/docs/plugins/jspsych-canvas-keyboard-response.md +0 -68
  106. package/docs/plugins/jspsych-canvas-slider-response.md +0 -89
  107. package/docs/plugins/jspsych-categorize-animation.md +0 -60
  108. package/docs/plugins/jspsych-categorize-html.md +0 -53
  109. package/docs/plugins/jspsych-categorize-image.md +0 -53
  110. package/docs/plugins/jspsych-cloze.md +0 -45
  111. package/docs/plugins/jspsych-external-html.md +0 -70
  112. package/docs/plugins/jspsych-free-sort.md +0 -56
  113. package/docs/plugins/jspsych-fullscreen.md +0 -57
  114. package/docs/plugins/jspsych-html-button-response.md +0 -42
  115. package/docs/plugins/jspsych-html-keyboard-response.md +0 -51
  116. package/docs/plugins/jspsych-html-slider-response.md +0 -45
  117. package/docs/plugins/jspsych-iat-html.md +0 -64
  118. package/docs/plugins/jspsych-iat-image.md +0 -64
  119. package/docs/plugins/jspsych-image-button-response.md +0 -48
  120. package/docs/plugins/jspsych-image-keyboard-response.md +0 -58
  121. package/docs/plugins/jspsych-image-slider-response.md +0 -54
  122. package/docs/plugins/jspsych-instructions.md +0 -58
  123. package/docs/plugins/jspsych-maxdiff.md +0 -41
  124. package/docs/plugins/jspsych-preload.md +0 -128
  125. package/docs/plugins/jspsych-rdk.md +0 -119
  126. package/docs/plugins/jspsych-reconstruction.md +0 -48
  127. package/docs/plugins/jspsych-resize.md +0 -39
  128. package/docs/plugins/jspsych-same-different-html.md +0 -53
  129. package/docs/plugins/jspsych-same-different-image.md +0 -66
  130. package/docs/plugins/jspsych-serial-reaction-time-mouse.md +0 -52
  131. package/docs/plugins/jspsych-serial-reaction-time.md +0 -57
  132. package/docs/plugins/jspsych-survey-html-form.md +0 -50
  133. package/docs/plugins/jspsych-survey-likert.md +0 -70
  134. package/docs/plugins/jspsych-survey-multi-choice.md +0 -48
  135. package/docs/plugins/jspsych-survey-multi-select.md +0 -53
  136. package/docs/plugins/jspsych-survey-text.md +0 -63
  137. package/docs/plugins/jspsych-video-button-response.md +0 -54
  138. package/docs/plugins/jspsych-video-keyboard-response.md +0 -50
  139. package/docs/plugins/jspsych-video-slider-response.md +0 -60
  140. package/docs/plugins/jspsych-virtual-chinrest.md +0 -105
  141. package/docs/plugins/jspsych-visual-search-circle.md +0 -52
  142. package/docs/plugins/jspsych-vsl-animate-occlusion.md +0 -55
  143. package/docs/plugins/jspsych-vsl-grid-scene.md +0 -62
  144. package/docs/plugins/jspsych-webgazer-calibrate.md +0 -61
  145. package/docs/plugins/jspsych-webgazer-init-camera.md +0 -30
  146. package/docs/plugins/jspsych-webgazer-validate.md +0 -44
  147. package/docs/plugins/list-of-plugins.md +0 -54
  148. package/docs/tutorials/hello-world.md +0 -162
  149. package/docs/tutorials/rt-task.md +0 -1334
  150. package/docs/tutorials/video-tutorials.md +0 -11
  151. package/examples/add-to-end-of-timeline.html +0 -38
  152. package/examples/case-sensitive-responses.html +0 -45
  153. package/examples/conditional-and-loop-functions.html +0 -64
  154. package/examples/css/jquery-ui.css +0 -1225
  155. package/examples/css-classes-parameter.html +0 -145
  156. package/examples/data-add-properties.html +0 -44
  157. package/examples/data-as-function.html +0 -39
  158. package/examples/data-from-timeline.html +0 -52
  159. package/examples/data-from-url.html +0 -21
  160. package/examples/demo-flanker.html +0 -117
  161. package/examples/demo-simple-rt-task.html +0 -120
  162. package/examples/demos/demo_1.html +0 -35
  163. package/examples/demos/demo_2.html +0 -50
  164. package/examples/demos/demo_3.html +0 -63
  165. package/examples/display-element-to-embed-experiment.html +0 -79
  166. package/examples/end-active-node.html +0 -52
  167. package/examples/end-experiment.html +0 -45
  168. package/examples/exclusions.html +0 -32
  169. package/examples/external_html/simple_consent.html +0 -4
  170. package/examples/img/1.gif +0 -0
  171. package/examples/img/10.gif +0 -0
  172. package/examples/img/11.gif +0 -0
  173. package/examples/img/12.gif +0 -0
  174. package/examples/img/2.gif +0 -0
  175. package/examples/img/3.gif +0 -0
  176. package/examples/img/4.gif +0 -0
  177. package/examples/img/5.gif +0 -0
  178. package/examples/img/6.gif +0 -0
  179. package/examples/img/7.gif +0 -0
  180. package/examples/img/8.gif +0 -0
  181. package/examples/img/9.gif +0 -0
  182. package/examples/img/age/of1.jpg +0 -0
  183. package/examples/img/age/of2.jpg +0 -0
  184. package/examples/img/age/of3.jpg +0 -0
  185. package/examples/img/age/om1.jpg +0 -0
  186. package/examples/img/age/om2.jpg +0 -0
  187. package/examples/img/age/om3.jpg +0 -0
  188. package/examples/img/age/yf1.jpg +0 -0
  189. package/examples/img/age/yf4.jpg +0 -0
  190. package/examples/img/age/yf5.jpg +0 -0
  191. package/examples/img/age/ym2.jpg +0 -0
  192. package/examples/img/age/ym3.jpg +0 -0
  193. package/examples/img/age/ym5.jpg +0 -0
  194. package/examples/img/backwardN.gif +0 -0
  195. package/examples/img/blue.png +0 -0
  196. package/examples/img/card.png +0 -0
  197. package/examples/img/con1.png +0 -0
  198. package/examples/img/con2.png +0 -0
  199. package/examples/img/fixation.gif +0 -0
  200. package/examples/img/happy_face_1.jpg +0 -0
  201. package/examples/img/happy_face_2.jpg +0 -0
  202. package/examples/img/happy_face_3.jpg +0 -0
  203. package/examples/img/happy_face_4.jpg +0 -0
  204. package/examples/img/inc1.png +0 -0
  205. package/examples/img/inc2.png +0 -0
  206. package/examples/img/normalN.gif +0 -0
  207. package/examples/img/orange.png +0 -0
  208. package/examples/img/redX.png +0 -0
  209. package/examples/img/ribbon.jpg +0 -0
  210. package/examples/img/sad_face_1.jpg +0 -0
  211. package/examples/img/sad_face_2.jpg +0 -0
  212. package/examples/img/sad_face_3.jpg +0 -0
  213. package/examples/img/sad_face_4.jpg +0 -0
  214. package/examples/js/snap.svg-min.js +0 -21
  215. package/examples/js/webgazer/ridgeWorker.mjs +0 -135
  216. package/examples/js/webgazer/webgazer.js +0 -88909
  217. package/examples/js/webgazer/worker_scripts/mat.js +0 -306
  218. package/examples/js/webgazer/worker_scripts/util.js +0 -398
  219. package/examples/jspsych-RDK.html +0 -58
  220. package/examples/jspsych-animation.html +0 -39
  221. package/examples/jspsych-audio-button-response.html +0 -58
  222. package/examples/jspsych-audio-keyboard-response.html +0 -68
  223. package/examples/jspsych-audio-slider-response.html +0 -61
  224. package/examples/jspsych-call-function.html +0 -32
  225. package/examples/jspsych-canvas-button-response.html +0 -95
  226. package/examples/jspsych-canvas-keyboard-response.html +0 -78
  227. package/examples/jspsych-canvas-slider-response.html +0 -67
  228. package/examples/jspsych-categorize-animation.html +0 -49
  229. package/examples/jspsych-categorize-html.html +0 -33
  230. package/examples/jspsych-categorize-image.html +0 -44
  231. package/examples/jspsych-cloze.html +0 -37
  232. package/examples/jspsych-free-sort.html +0 -109
  233. package/examples/jspsych-fullscreen.html +0 -45
  234. package/examples/jspsych-html-button-response.html +0 -43
  235. package/examples/jspsych-html-keyboard-response.html +0 -42
  236. package/examples/jspsych-html-slider-response.html +0 -53
  237. package/examples/jspsych-iat.html +0 -520
  238. package/examples/jspsych-image-button-response.html +0 -91
  239. package/examples/jspsych-image-keyboard-response.html +0 -85
  240. package/examples/jspsych-image-slider-response.html +0 -85
  241. package/examples/jspsych-instructions.html +0 -37
  242. package/examples/jspsych-maxdiff.html +0 -33
  243. package/examples/jspsych-preload.html +0 -140
  244. package/examples/jspsych-reconstruction.html +0 -43
  245. package/examples/jspsych-resize.html +0 -34
  246. package/examples/jspsych-same-different-html.html +0 -28
  247. package/examples/jspsych-same-different-image.html +0 -39
  248. package/examples/jspsych-serial-reaction-time-mouse.html +0 -98
  249. package/examples/jspsych-serial-reaction-time.html +0 -54
  250. package/examples/jspsych-survey-html-form.html +0 -33
  251. package/examples/jspsych-survey-likert.html +0 -42
  252. package/examples/jspsych-survey-multi-choice.html +0 -40
  253. package/examples/jspsych-survey-multi-select.html +0 -42
  254. package/examples/jspsych-survey-text.html +0 -34
  255. package/examples/jspsych-video-button-response.html +0 -65
  256. package/examples/jspsych-video-keyboard-response.html +0 -61
  257. package/examples/jspsych-video-slider-response.html +0 -63
  258. package/examples/jspsych-virtual-chinrest.html +0 -69
  259. package/examples/jspsych-visual-search-circle.html +0 -64
  260. package/examples/jspsych-vsl-animate-occlusion.html +0 -35
  261. package/examples/jspsych-vsl-grid-scene.html +0 -47
  262. package/examples/lexical-decision.html +0 -134
  263. package/examples/manual-preloading.html +0 -59
  264. package/examples/pause-unpause.html +0 -33
  265. package/examples/progress-bar.html +0 -68
  266. package/examples/save-trial-parameters.html +0 -98
  267. package/examples/sound/hammer.mp3 +0 -0
  268. package/examples/sound/sound.mp3 +0 -0
  269. package/examples/sound/speech_blue.mp3 +0 -0
  270. package/examples/sound/speech_green.mp3 +0 -0
  271. package/examples/sound/speech_joke.mp3 +0 -0
  272. package/examples/sound/speech_red.mp3 +0 -0
  273. package/examples/sound/tone.mp3 +0 -0
  274. package/examples/timeline-variables-sampling.html +0 -50
  275. package/examples/timeline-variables.html +0 -64
  276. package/examples/video/sample_video.mp4 +0 -0
  277. package/examples/webgazer.html +0 -174
  278. package/examples/webgazer_audio.html +0 -90
  279. package/examples/webgazer_image.html +0 -60
  280. package/extensions/jspsych-ext-webgazer.js +0 -265
  281. package/jspsych.js +0 -3023
  282. package/license.txt +0 -21
  283. package/mkdocs.yml +0 -118
  284. package/plugins/jspsych-animation.js +0 -189
  285. package/plugins/jspsych-audio-button-response.js +0 -269
  286. package/plugins/jspsych-audio-keyboard-response.js +0 -209
  287. package/plugins/jspsych-audio-slider-response.js +0 -278
  288. package/plugins/jspsych-call-function.js +0 -58
  289. package/plugins/jspsych-canvas-button-response.js +0 -199
  290. package/plugins/jspsych-canvas-keyboard-response.js +0 -155
  291. package/plugins/jspsych-canvas-slider-response.js +0 -207
  292. package/plugins/jspsych-categorize-animation.js +0 -266
  293. package/plugins/jspsych-categorize-html.js +0 -220
  294. package/plugins/jspsych-categorize-image.js +0 -222
  295. package/plugins/jspsych-cloze.js +0 -112
  296. package/plugins/jspsych-external-html.js +0 -112
  297. package/plugins/jspsych-free-sort.js +0 -478
  298. package/plugins/jspsych-fullscreen.js +0 -106
  299. package/plugins/jspsych-html-button-response.js +0 -188
  300. package/plugins/jspsych-html-keyboard-response.js +0 -149
  301. package/plugins/jspsych-html-slider-response.js +0 -202
  302. package/plugins/jspsych-iat-html.js +0 -284
  303. package/plugins/jspsych-iat-image.js +0 -286
  304. package/plugins/jspsych-image-button-response.js +0 -327
  305. package/plugins/jspsych-image-keyboard-response.js +0 -263
  306. package/plugins/jspsych-image-slider-response.js +0 -369
  307. package/plugins/jspsych-instructions.js +0 -237
  308. package/plugins/jspsych-maxdiff.js +0 -173
  309. package/plugins/jspsych-preload.js +0 -345
  310. package/plugins/jspsych-rdk.js +0 -1373
  311. package/plugins/jspsych-reconstruction.js +0 -134
  312. package/plugins/jspsych-resize.js +0 -166
  313. package/plugins/jspsych-same-different-html.js +0 -168
  314. package/plugins/jspsych-same-different-image.js +0 -169
  315. package/plugins/jspsych-serial-reaction-time-mouse.js +0 -212
  316. package/plugins/jspsych-serial-reaction-time.js +0 -247
  317. package/plugins/jspsych-survey-html-form.js +0 -171
  318. package/plugins/jspsych-survey-likert.js +0 -195
  319. package/plugins/jspsych-survey-multi-choice.js +0 -208
  320. package/plugins/jspsych-survey-multi-select.js +0 -232
  321. package/plugins/jspsych-survey-text.js +0 -185
  322. package/plugins/jspsych-video-button-response.js +0 -335
  323. package/plugins/jspsych-video-keyboard-response.js +0 -279
  324. package/plugins/jspsych-video-slider-response.js +0 -351
  325. package/plugins/jspsych-virtual-chinrest.js +0 -471
  326. package/plugins/jspsych-visual-search-circle.js +0 -259
  327. package/plugins/jspsych-vsl-animate-occlusion.js +0 -196
  328. package/plugins/jspsych-vsl-grid-scene.js +0 -103
  329. package/plugins/jspsych-webgazer-calibrate.js +0 -161
  330. package/plugins/jspsych-webgazer-init-camera.js +0 -139
  331. package/plugins/jspsych-webgazer-validate.js +0 -314
  332. package/plugins/template/jspsych-plugin-template.js +0 -35
  333. package/tests/README.md +0 -7
  334. package/tests/jsPsych/case-sensitive-responses.test.js +0 -53
  335. package/tests/jsPsych/css-classes-parameter.test.js +0 -107
  336. package/tests/jsPsych/default-iti.test.js +0 -51
  337. package/tests/jsPsych/default-parameters.test.js +0 -58
  338. package/tests/jsPsych/endexperiment.test.js +0 -49
  339. package/tests/jsPsych/events.test.js +0 -606
  340. package/tests/jsPsych/functions-as-parameters.test.js +0 -210
  341. package/tests/jsPsych/init.test.js +0 -48
  342. package/tests/jsPsych/loads.test.js +0 -7
  343. package/tests/jsPsych/min-rt.test.js +0 -58
  344. package/tests/jsPsych/progressbar.test.js +0 -202
  345. package/tests/jsPsych/timeline-variables.test.js +0 -531
  346. package/tests/jsPsych/timelines.test.js +0 -569
  347. package/tests/jsPsych.data/data-csv-conversion.test.js +0 -85
  348. package/tests/jsPsych.data/data-json-conversion.test.js +0 -120
  349. package/tests/jsPsych.data/datacollection.test.js +0 -117
  350. package/tests/jsPsych.data/datacolumn.test.js +0 -50
  351. package/tests/jsPsych.data/datamodule.test.js +0 -152
  352. package/tests/jsPsych.data/dataparameter.test.js +0 -251
  353. package/tests/jsPsych.data/interactions.test.js +0 -109
  354. package/tests/jsPsych.data/trialparameters.test.js +0 -175
  355. package/tests/jsPsych.extensions/extensions.test.js +0 -207
  356. package/tests/jsPsych.extensions/test-extension.js +0 -42
  357. package/tests/jsPsych.pluginAPI/pluginapi.test.js +0 -365
  358. package/tests/jsPsych.pluginAPI/preloads.test.js +0 -43
  359. package/tests/jsPsych.randomization/randomziation.test.js +0 -27
  360. package/tests/jsPsych.utils/utils.test.js +0 -58
  361. package/tests/plugins/plugin-animation.test.js +0 -34
  362. package/tests/plugins/plugin-audio-button-response.test.js +0 -15
  363. package/tests/plugins/plugin-audio-keyboard-response.test.js +0 -15
  364. package/tests/plugins/plugin-audio-slider-response.test.js +0 -15
  365. package/tests/plugins/plugin-call-function.test.js +0 -49
  366. package/tests/plugins/plugin-categorize-animation.test.js +0 -263
  367. package/tests/plugins/plugin-categorize-html.test.js +0 -17
  368. package/tests/plugins/plugin-categorize-image.test.js +0 -17
  369. package/tests/plugins/plugin-cloze.test.js +0 -157
  370. package/tests/plugins/plugin-free-sort.test.js +0 -106
  371. package/tests/plugins/plugin-fullscreen.test.js +0 -41
  372. package/tests/plugins/plugin-html-button-response.test.js +0 -161
  373. package/tests/plugins/plugin-html-keyboard-response.test.js +0 -139
  374. package/tests/plugins/plugin-html-slider-response.test.js +0 -155
  375. package/tests/plugins/plugin-iat-html.test.js +0 -299
  376. package/tests/plugins/plugin-iat-image.test.js +0 -298
  377. package/tests/plugins/plugin-image-button-response.test.js +0 -174
  378. package/tests/plugins/plugin-image-keyboard-response.test.js +0 -147
  379. package/tests/plugins/plugin-image-slider-response.test.js +0 -174
  380. package/tests/plugins/plugin-instructions.test.js +0 -85
  381. package/tests/plugins/plugin-maxdiff.test.js +0 -39
  382. package/tests/plugins/plugin-preload.test.js +0 -916
  383. package/tests/plugins/plugin-rdk.test.js +0 -61
  384. package/tests/plugins/plugin-reconstruction.test.js +0 -16
  385. package/tests/plugins/plugin-resize.test.js +0 -16
  386. package/tests/plugins/plugin-same-different-html.test.js +0 -17
  387. package/tests/plugins/plugin-same-different-image.test.js +0 -17
  388. package/tests/plugins/plugin-serial-reaction-time-mouse.test.js +0 -42
  389. package/tests/plugins/plugin-serial-reaction-time.test.js +0 -109
  390. package/tests/plugins/plugin-survey-html-form.test.js +0 -44
  391. package/tests/plugins/plugin-survey-likert.test.js +0 -48
  392. package/tests/plugins/plugin-survey-multi-choice.test.js +0 -47
  393. package/tests/plugins/plugin-survey-multi-select.test.js +0 -71
  394. package/tests/plugins/plugin-survey-text.test.js +0 -115
  395. package/tests/plugins/plugin-video-button-response.test.js +0 -32
  396. package/tests/plugins/plugin-video-keyboard-response.test.js +0 -32
  397. package/tests/plugins/plugin-video-slider-response.test.js +0 -31
  398. package/tests/plugins/plugin-visual-search-circle.test.js +0 -16
  399. package/tests/plugins/plugin-vsl-animate-occlusion.test.js +0 -16
  400. package/tests/plugins/plugin-vsl-grid-scene.test.js +0 -16
  401. package/tests/testing-utils.js +0 -13
@@ -1,174 +0,0 @@
1
- const utils = require('../testing-utils.js');
2
- const root = '../../';
3
-
4
- jest.useFakeTimers();
5
-
6
- describe('image-button-response', function(){
7
-
8
- beforeEach(function(){
9
- require(root + 'jspsych.js');
10
- require(root + 'plugins/jspsych-image-button-response');
11
- });
12
-
13
- test('loads correctly', function(){
14
- expect(typeof window.jsPsych.plugins['image-button-response']).not.toBe('undefined');
15
- });
16
-
17
- test('displays image stimulus', function(){
18
- var trial = {
19
- type: 'image-button-response',
20
- stimulus: '../media/blue.png',
21
- choices: ['button-choice'],
22
- render_on_canvas: false
23
- }
24
-
25
- jsPsych.init({
26
- timeline: [trial]
27
- });
28
-
29
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<img src="../media/blue.png"');
30
- });
31
-
32
- test('display button labels', function(){
33
- var trial = {
34
- type: 'image-button-response',
35
- stimulus: '../media/blue.png',
36
- choices: ['button-choice1', 'button-choice2'],
37
- render_on_canvas: false
38
- }
39
-
40
- jsPsych.init({
41
- timeline: [trial]
42
- });
43
-
44
- expect(jsPsych.getDisplayElement().innerHTML).toMatch(new RegExp('<button class=\"jspsych-btn\">button-choice1</button>'));
45
- expect(jsPsych.getDisplayElement().innerHTML).toMatch(new RegExp('<button class=\"jspsych-btn\">button-choice2</button>'));
46
- });
47
-
48
- test('display button html', function(){
49
- var trial = {
50
- type: 'image-button-response',
51
- stimulus: '../media/blue.png',
52
- choices: ['buttonChoice'],
53
- button_html: '<button class="jspsych-custom-button">%choice%</button>',
54
- render_on_canvas: false
55
- }
56
-
57
- jsPsych.init({
58
- timeline: [trial]
59
- });
60
-
61
- expect(jsPsych.getDisplayElement().innerHTML).toMatch(new RegExp('<button class="jspsych-custom-button">buttonChoice</button>'));
62
- });
63
-
64
- test('display should clear after button click', function(){
65
- var trial = {
66
- type: 'image-button-response',
67
- stimulus: '../media/blue.png',
68
- choices: ['button-choice'],
69
- render_on_canvas: false
70
- }
71
-
72
- jsPsych.init({
73
- timeline: [trial]
74
- });
75
-
76
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<img src="../media/blue.png" id="jspsych-image-button-response-stimulus"');
77
-
78
- utils.clickTarget(document.querySelector('#jspsych-image-button-response-button-0'));
79
-
80
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
81
- });
82
-
83
- test('prompt should append below button', function(){
84
- var trial = {
85
- type: 'image-button-response',
86
- stimulus: '../media/blue.png',
87
- choices: ['button-choice'],
88
- prompt: '<p>This is a prompt</p>',
89
- render_on_canvas: false
90
- }
91
-
92
- jsPsych.init({
93
- timeline: [trial]
94
- });
95
-
96
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<button class=\"jspsych-btn\">button-choice</button></div></div><p>This is a prompt</p>');
97
- });
98
-
99
- test('should hide stimulus if stimulus-duration is set', function(){
100
- var trial = {
101
- type: 'image-button-response',
102
- stimulus: '../media/blue.png',
103
- choices: ['button-choice'],
104
- stimulus_duration: 500,
105
- render_on_canvas: false
106
- }
107
-
108
- jsPsych.init({
109
- timeline: [trial]
110
- });
111
-
112
- expect(jsPsych.getDisplayElement().querySelector('#jspsych-image-button-response-stimulus').style.visibility).toMatch("");
113
- jest.runTimersToTime(500);
114
- expect(jsPsych.getDisplayElement().querySelector('#jspsych-image-button-response-stimulus').style.visibility).toMatch('hidden');
115
- });
116
-
117
- test('should end trial when trial duration is reached', function(){
118
- var trial = {
119
- type: 'image-button-response',
120
- stimulus: '../media/blue.png',
121
- choices: ['f','j'],
122
- trial_duration: 500,
123
- render_on_canvas: false
124
- }
125
-
126
- jsPsych.init({
127
- timeline: [trial]
128
- });
129
-
130
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<img src="../media/blue.png" id="jspsych-image-button-response-stimulus"');
131
- jest.runTimersToTime(500);
132
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
133
- });
134
-
135
- test('should end trial when button is clicked', function(){
136
- var trial = {
137
- type: 'image-button-response',
138
- stimulus: '../media/blue.png',
139
- choices: ['button-choice'],
140
- response_ends_trial: true,
141
- render_on_canvas: false
142
- }
143
-
144
- jsPsych.init({
145
- timeline: [trial]
146
- });
147
-
148
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<img src="../media/blue.png" id="jspsych-image-button-response-stimulus"');
149
-
150
- utils.clickTarget(document.querySelector('#jspsych-image-button-response-button-0'));
151
-
152
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
153
- });
154
-
155
- test('should show console warning when trial duration is null and response ends trial is false', function() {
156
- const spy = jest.spyOn(console, 'warn').mockImplementation();
157
-
158
- var trial = {
159
- type: 'image-button-response',
160
- stimulus: '../media/blue.png',
161
- choices: ['button-choice'],
162
- response_ends_trial: false,
163
- trial_duration: null,
164
- render_on_canvas: false
165
- };
166
-
167
- jsPsych.init({
168
- timeline: [trial]
169
- });
170
-
171
- expect(spy).toHaveBeenCalled();
172
- spy.mockRestore();
173
- });
174
- });
@@ -1,147 +0,0 @@
1
- const root = '../../';
2
- const utils = require('../testing-utils.js');
3
-
4
- jest.useFakeTimers();
5
-
6
- describe('image-keyboard-response', function(){
7
-
8
- beforeEach(function(){
9
- require(root + 'jspsych.js');
10
- require(root + 'plugins/jspsych-image-keyboard-response');
11
- });
12
-
13
- test('loads correctly', function(){
14
- expect(typeof window.jsPsych.plugins['image-keyboard-response']).not.toBe('undefined');
15
- });
16
-
17
- test('displays image stimulus', function(){
18
- var trial = {
19
- type: 'image-keyboard-response',
20
- stimulus: '../media/blue.png',
21
- render_on_canvas: false
22
- }
23
-
24
- jsPsych.init({
25
- timeline: [trial]
26
- });
27
-
28
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<img src=\"../media/blue.png\" id=\"jspsych-image-keyboard-response-stimulus\"');
29
-
30
- utils.pressKey('a');
31
- });
32
-
33
- test('display clears after key press', function(){
34
- var trial = {
35
- type: 'image-keyboard-response',
36
- stimulus: '../media/blue.png',
37
- choices: ['f','j'],
38
- render_on_canvas: false
39
- }
40
-
41
- jsPsych.init({
42
- timeline: [trial]
43
- });
44
-
45
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<img src="../media/blue.png" id="jspsych-image-keyboard-response-stimulus"');
46
-
47
- utils.pressKey('f');
48
-
49
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
50
- });
51
-
52
- test('prompt should append html', function(){
53
- var trial = {
54
- type: 'image-keyboard-response',
55
- stimulus: '../media/blue.png',
56
- choices: ['f','j'],
57
- prompt: '<div id="foo">this is a prompt</div>',
58
- render_on_canvas: false
59
- }
60
-
61
- jsPsych.init({
62
- timeline: [trial]
63
- });
64
-
65
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<div id="foo">this is a prompt</div>');
66
- utils.pressKey('f');
67
- });
68
-
69
- test('should hide stimulus if stimulus-duration is set', function(){
70
- var trial = {
71
- type: 'image-keyboard-response',
72
- stimulus: '../media/blue.png',
73
- choices:['f','j'],
74
- stimulus_duration: 500,
75
- render_on_canvas: false
76
- }
77
-
78
- jsPsych.init({
79
- timeline: [trial]
80
- });
81
-
82
- expect(jsPsych.getDisplayElement().querySelector('#jspsych-image-keyboard-response-stimulus').style.visibility).toMatch("");
83
- jest.runTimersToTime(500);
84
- expect(jsPsych.getDisplayElement().querySelector('#jspsych-image-keyboard-response-stimulus').style.visibility).toMatch("hidden");
85
- utils.pressKey('f');
86
-
87
- });
88
-
89
- test('should end trial when trial duration is reached', function(){
90
- var trial = {
91
- type: 'image-keyboard-response',
92
- stimulus: '../media/blue.png',
93
- choices: ['f','j'],
94
- trial_duration: 500,
95
- render_on_canvas: false
96
- }
97
-
98
- jsPsych.init({
99
- timeline: [trial]
100
- });
101
-
102
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<img src="../media/blue.png" id="jspsych-image-keyboard-response-stimulus"');
103
- jest.runTimersToTime(500);
104
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
105
- });
106
-
107
- test('should end trial when key is pressed', function(){
108
- var trial = {
109
- type:'image-keyboard-response',
110
- stimulus: '../media/blue.png',
111
- choices: ['f','j'],
112
- response_ends_trial: true,
113
- render_on_canvas: false
114
- }
115
-
116
- jsPsych.init({
117
- timeline: [trial]
118
- });
119
-
120
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<img src="../media/blue.png" id="jspsych-image-keyboard-response-stimulus"');
121
-
122
- utils.pressKey('f');
123
-
124
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
125
- });
126
-
127
-
128
- test('should show console warning when trial duration is null and response ends trial is false', function() {
129
- const spy = jest.spyOn(console, 'warn').mockImplementation();
130
-
131
- var trial = {
132
- type: 'image-keyboard-response',
133
- stimulus: '../media/blue.png',
134
- choices: ['f','j'],
135
- response_ends_trial: false,
136
- trial_duration: null,
137
- render_on_canvas: false
138
- };
139
-
140
- jsPsych.init({
141
- timeline: [trial]
142
- });
143
-
144
- expect(spy).toHaveBeenCalled();
145
- spy.mockRestore();
146
- });
147
- });
@@ -1,174 +0,0 @@
1
- const utils = require('../testing-utils.js');
2
- const root = '../../';
3
-
4
- jest.useFakeTimers();
5
-
6
- describe('image-slider-response', function(){
7
-
8
- beforeEach(function(){
9
- require(root + 'jspsych.js');
10
- require(root + 'plugins/jspsych-image-slider-response.js');
11
- });
12
-
13
- test('loads correctly', function(){
14
- expect(typeof window.jsPsych.plugins['image-slider-response']).not.toBe('undefined');
15
- });
16
-
17
- test('displays image stimulus', function(done){
18
- var trial = {
19
- type: 'image-slider-response',
20
- stimulus: '../media/blue.png',
21
- labels: ['left', 'right'],
22
- button_label: 'button',
23
- render_on_canvas: false,
24
- on_load: function(){
25
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<div id="jspsych-image-slider-response-stimulus"><img src="../media/blue.png"');
26
- utils.clickTarget(document.querySelector('#jspsych-image-slider-response-next'));
27
- done();
28
- }
29
- }
30
-
31
- jsPsych.init({
32
- timeline: [trial]
33
- });
34
- });
35
-
36
- test('displays labels', function(){
37
- var trial = {
38
- type: 'image-slider-response',
39
- stimulus: '../media/blue.png',
40
- labels: ['left', 'right'],
41
- button_label: 'button',
42
- render_on_canvas: false
43
- }
44
-
45
- jsPsych.init({
46
- timeline: [trial]
47
- });
48
-
49
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<span style=\"text-align: center; font-size: 80%;\">left</span>');
50
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<span style=\"text-align: center; font-size: 80%;\">right</span>');
51
-
52
- utils.clickTarget(document.querySelector('#jspsych-image-slider-response-next'));
53
- })
54
-
55
- test('displays button label', function(){
56
- var trial = {
57
- type: 'image-slider-response',
58
- stimulus: '../media/blue.png',
59
- labels: ['left', 'right'],
60
- button_label: 'button',
61
- render_on_canvas: false
62
- }
63
-
64
- jsPsych.init({
65
- timeline: [trial]
66
- });
67
-
68
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<button id=\"jspsych-image-slider-response-next\" class=\"jspsych-btn\">button</button>');
69
-
70
- utils.clickTarget(document.querySelector('#jspsych-image-slider-response-next'));
71
- });
72
-
73
- test('should set min, max and step', function(){
74
- var trial = {
75
- type: 'image-slider-response',
76
- stimulus: '../media/blue.png',
77
- labels: ['left', 'right'],
78
- button_label: 'button',
79
- min: 2,
80
- max: 10,
81
- step: 2,
82
- render_on_canvas: false
83
- }
84
-
85
- jsPsych.init({
86
- timeline: [trial]
87
- });
88
-
89
- expect(jsPsych.getDisplayElement().querySelector('#jspsych-image-slider-response-response').min).toBe('2');
90
- expect(jsPsych.getDisplayElement().querySelector('#jspsych-image-slider-response-response').max).toBe('10');
91
- expect(jsPsych.getDisplayElement().querySelector('#jspsych-image-slider-response-response').step).toBe('2');
92
-
93
- utils.clickTarget(document.querySelector('#jspsych-image-slider-response-next'));
94
- });
95
-
96
- test('prompt should append to bottom of stimulus', function(){
97
- var trial = {
98
- type: 'image-slider-response',
99
- stimulus: '../media/blue.png',
100
- labels: ['left', 'right'],
101
- button_label: 'button',
102
- prompt: '<p>This is a prompt</p>',
103
- render_on_canvas: false
104
- }
105
-
106
- jsPsych.init({
107
- timeline: [trial]
108
- });
109
-
110
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<p>This is a prompt</p>');
111
-
112
- utils.clickTarget(document.querySelector('#jspsych-image-slider-response-next'));
113
- });
114
-
115
- test('should hide stimulus if stimulus_duration is set', function(){
116
- var trial = {
117
- type: 'image-slider-response',
118
- stimulus: '../media/blue.png',
119
- labels: ['left', 'right'],
120
- button_label: 'button',
121
- stimulus_duration: 500,
122
- render_on_canvas: false
123
- }
124
-
125
- jsPsych.init({
126
- timeline: [trial]
127
- });
128
-
129
- expect(jsPsych.getDisplayElement().querySelector('#jspsych-image-slider-response-stimulus').style.visibility).toMatch("");
130
- jest.runTimersToTime(500);
131
- expect(jsPsych.getDisplayElement().querySelector('#jspsych-image-slider-response-stimulus').style.visibility).toMatch("hidden");
132
- utils.clickTarget(document.querySelector('#jspsych-image-slider-response-next'));
133
- });
134
-
135
- test('should end trial when trial duration is reached', function(){
136
- var trial = {
137
- type: 'image-slider-response',
138
- stimulus: '../media/blue.png',
139
- labels: ['left', 'right'],
140
- button_label: 'button',
141
- trial_duration: 500,
142
- render_on_canvas: false
143
- }
144
-
145
- jsPsych.init({
146
- timeline: [trial]
147
- });
148
-
149
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<div id="jspsych-image-slider-response-stimulus"><img src="../media/blue.png"');
150
- jest.runTimersToTime(500);
151
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
152
- });
153
-
154
- test('should end trial when button is clicked', function(){
155
- var trial = {
156
- type: 'image-slider-response',
157
- stimulus: '../media/blue.png',
158
- labels: ['left', 'right'],
159
- button_label: 'button',
160
- response_ends_trial: true,
161
- render_on_canvas: false
162
- }
163
-
164
- jsPsych.init({
165
- timeline: [trial]
166
- });
167
-
168
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<div id="jspsych-image-slider-response-stimulus"><img src="../media/blue.png"');
169
-
170
- utils.clickTarget(document.querySelector('#jspsych-image-slider-response-next'));
171
-
172
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
173
- });
174
- });
@@ -1,85 +0,0 @@
1
- const root = '../../';
2
- const utils = require('../testing-utils.js');
3
-
4
- jest.useFakeTimers();
5
-
6
- describe('instructions plugin', function(){
7
-
8
- beforeEach(function(){
9
- require(root + 'jspsych.js');
10
- require(root + 'plugins/jspsych-instructions.js');
11
- });
12
-
13
- test('loads correctly', function(){
14
- expect(typeof window.jsPsych.plugins['instructions']).not.toBe('undefined');
15
- });
16
-
17
- test('keys can be specified as strings', function(){
18
- var trial = {
19
- type: 'instructions',
20
- pages: ['page 1', 'page 2'],
21
- key_forward: 'a'
22
- }
23
-
24
- jsPsych.init({
25
- timeline: [trial]
26
- });
27
-
28
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('page 1');
29
-
30
- utils.pressKey('a');
31
-
32
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('page 2');
33
-
34
- utils.pressKey('a');
35
-
36
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
37
- });
38
-
39
- test('bug issue #544 reproduce', function(){
40
- var trial = {
41
- type: 'instructions',
42
- pages: ['page 1', 'page 2'],
43
- key_forward: 'a',
44
- allow_backward: false
45
- }
46
-
47
- jsPsych.init({
48
- timeline: [trial]
49
- });
50
-
51
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('page 1');
52
-
53
- utils.pressKey('a');
54
-
55
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('page 2');
56
-
57
- utils.pressKey('ArrowLeft');
58
-
59
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('page 2');
60
-
61
- utils.pressKey('a');
62
-
63
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
64
- })
65
-
66
- test('view history data is stored as array of objects', function(){
67
- var trial = {
68
- type: 'instructions',
69
- pages: ['page 1', 'page 2'],
70
- key_forward: 'a'
71
- }
72
-
73
- jsPsych.init({
74
- timeline: [trial]
75
- });
76
-
77
- utils.pressKey('a');
78
- utils.pressKey('a');
79
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
80
- var data = jsPsych.data.get().values()[0].view_history;
81
- expect(data[0].page_index).toBe(0);
82
- expect(data[1].page_index).toBe(1);
83
- })
84
-
85
- });
@@ -1,39 +0,0 @@
1
- const root = '../../';
2
- const utils = require('../testing-utils.js');
3
-
4
- jest.useFakeTimers();
5
-
6
- describe('maxdiff plugin', function(){
7
-
8
- beforeEach(function(){
9
- require(root + 'jspsych.js');
10
- require(root + 'plugins/jspsych-maxdiff.js');
11
- });
12
-
13
- test('loads correctly', function(){
14
- expect(typeof window.jsPsych.plugins['maxdiff']).not.toBe('undefined');
15
- });
16
-
17
- test('returns appropriate response with randomization', function(){
18
- var trial = {
19
- type: 'maxdiff',
20
- alternatives: ['a', 'b', 'c', 'd'],
21
- labels: ['Most', 'Least'],
22
- randomize_alternative_order: true
23
- }
24
-
25
- jsPsych.init({
26
- timeline: [trial]
27
- });
28
-
29
- document.querySelector('input[data-name="0"][name="left"]').checked = true;
30
- document.querySelector('input[data-name="1"][name="right"]').checked = true;
31
-
32
- utils.clickTarget(document.querySelector('#jspsych-maxdiff-next'));
33
-
34
- var maxdiff_data = jsPsych.data.get().values()[0];
35
- expect(maxdiff_data.response.left).toBe("a");
36
- expect(maxdiff_data.response.right).toBe("b");
37
- });
38
-
39
- });