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,210 +0,0 @@
1
- const root = '../../';
2
- const utils = require('../testing-utils.js');
3
-
4
- beforeEach(function(){
5
- require(root + 'jspsych.js');
6
- require(root + 'plugins/jspsych-html-keyboard-response.js');
7
- require(root + 'plugins/jspsych-survey-text.js');
8
- });
9
-
10
- describe('standard use of function as parameter', function(){
11
- test('function value is used as parameter', function(){
12
- var trial = {
13
- type: 'html-keyboard-response',
14
- stimulus: function(){
15
- return 'foo'
16
- }
17
- }
18
-
19
- jsPsych.init({
20
- timeline: [trial]
21
- })
22
-
23
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
24
- utils.pressKey('a');
25
- });
26
-
27
- test('function evaluates at runtime', function(){
28
- var x = 'foo';
29
-
30
- var trial = {
31
- type: 'html-keyboard-response',
32
- stimulus: function(){
33
- return x;
34
- }
35
- }
36
-
37
- x = 'bar';
38
-
39
- jsPsych.init({
40
- timeline: [trial]
41
- })
42
-
43
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('bar');
44
- utils.pressKey('a');
45
- })
46
-
47
- test('parameters can be protected from early evaluation using jsPsych.plugins.parameterType.FUNCTION', function(){
48
- require(root + 'plugins/jspsych-cloze.js');
49
-
50
- var mock = jest.fn();
51
-
52
- var trial = {
53
- type: 'cloze',
54
- text: '%foo%',
55
- check_answers: true,
56
- mistake_fn: mock
57
- }
58
-
59
- jsPsych.init({timeline: [trial]});
60
-
61
- expect(mock).not.toHaveBeenCalled();
62
- utils.clickTarget(document.querySelector('#finish_cloze_button'));
63
- expect(mock).toHaveBeenCalledTimes(1);
64
- })
65
- })
66
-
67
- describe('data as function', function(){
68
- test('entire data object can be function', function(){
69
-
70
- var trial = {
71
- type: 'html-keyboard-response',
72
- stimulus: 'foo',
73
- data: function(){
74
- return {x:1}
75
- }
76
- }
77
-
78
- jsPsych.init({
79
- timeline: [trial]
80
- })
81
-
82
- utils.pressKey('a');
83
- expect(jsPsych.data.get().values()[0].x).toBe(1)
84
- })
85
-
86
- test('single parameter of data object can be function', function(){
87
-
88
- var trial = {
89
- type: 'html-keyboard-response',
90
- stimulus: 'foo',
91
- data: {
92
- x: function() { return 1; }
93
- }
94
- }
95
-
96
- jsPsych.init({
97
- timeline: [trial]
98
- })
99
-
100
- utils.pressKey('a');
101
- expect(jsPsych.data.get().values()[0].x).toBe(1)
102
- })
103
- })
104
-
105
- describe('nested parameters as functions', function(){
106
-
107
- test('entire parameter can be a function', function(){
108
-
109
- var trial = {
110
- type: 'survey-text',
111
- questions: function(){
112
- return [{prompt: "How old are you?"}, {prompt: "Where were you born?"}]
113
- }
114
- }
115
-
116
- jsPsych.init({
117
- timeline: [trial]
118
- });
119
-
120
- expect(jsPsych.getDisplayElement().querySelectorAll('p.jspsych-survey-text').length).toBe(2);
121
-
122
- utils.clickTarget(document.querySelector('#jspsych-survey-text-next'));
123
-
124
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
125
- })
126
-
127
- test('nested parameter can be a function', function(){
128
-
129
- var trial = {
130
- type: 'survey-text',
131
- questions: [{prompt: function(){ return "foo"; }}, {prompt: "bar"}]
132
- }
133
-
134
- jsPsych.init({
135
- timeline: [trial]
136
- });
137
-
138
- expect(document.querySelector('#jspsych-survey-text-0 p.jspsych-survey-text').innerHTML).toBe('foo');
139
- expect(document.querySelector('#jspsych-survey-text-1 p.jspsych-survey-text').innerHTML).toBe('bar');
140
- utils.clickTarget(document.querySelector('#jspsych-survey-text-next'));
141
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
142
- })
143
-
144
- test('multiple nested parameters can be functions', function(){
145
- require(root + 'plugins/jspsych-survey-multi-choice.js');
146
-
147
- var trial = {
148
- type: 'survey-multi-choice',
149
- questions: [
150
- {prompt: function(){ return "foo"; }, options: function() { return ['buzz','fizz']; }},
151
- {prompt: "bar", options: function() { return ['one','two']; }}
152
- ]
153
- }
154
-
155
- jsPsych.init({
156
- timeline: [trial]
157
- });
158
-
159
- expect(document.querySelector('#jspsych-survey-multi-choice-0').innerHTML).toMatch('foo');
160
- expect(document.querySelector('#jspsych-survey-multi-choice-0').innerHTML).toMatch('buzz');
161
- expect(document.querySelector('#jspsych-survey-multi-choice-1').innerHTML).toMatch('bar');
162
- expect(document.querySelector('#jspsych-survey-multi-choice-1').innerHTML).toMatch('one');
163
- utils.clickTarget(document.querySelector('#jspsych-survey-multi-choice-next'));
164
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
165
- })
166
-
167
- test('nested parameters can be protected from early evaluation using jsPsych.plugins.parameterType.FUNCTION', function(){
168
- // currently no plugins that use this feature (Jan. 2021), so here's a simple placeholder plugin.
169
- jsPsych.plugins['fn-test'] = {};
170
- jsPsych.plugins['fn-test'].info = {
171
- parameters: {
172
- foo: {
173
- type: jsPsych.plugins.parameterType.COMPLEX,
174
- default: null,
175
- nested: {
176
- not_protected: {
177
- type: jsPsych.plugins.parameterType.STRING,
178
- default: null
179
- },
180
- protected: {
181
- type: jsPsych.plugins.parameterType.FUNCTION,
182
- default: null
183
- }
184
- }
185
- }
186
- }
187
- }
188
- jsPsych.plugins['fn-test'].trial = function(display_element, trial){
189
- jsPsych.finishTrial({
190
- not_protected: trial.foo[0].not_protected,
191
- protected: trial.foo[0].protected
192
- })
193
- }
194
-
195
- var trial = {
196
- type: 'fn-test',
197
- foo: [{
198
- not_protected: function(){ return 'x';},
199
- protected: function() { return 'y';}
200
- }]
201
- }
202
-
203
- jsPsych.init({timeline: [trial]});
204
-
205
- var data = jsPsych.data.get().values()[0];
206
- expect(data.not_protected).toBe('x');
207
- expect(data.protected).not.toBe('y');
208
- expect(data.protected()).toBe('y');
209
- })
210
- })
@@ -1,48 +0,0 @@
1
- require("../../jspsych");
2
- require("../../plugins/jspsych-html-keyboard-response");
3
-
4
- describe("jsPsych init", () => {
5
- beforeEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
-
9
- function setReadyState(targetState) {
10
- jest
11
- .spyOn(document, "readyState", "get")
12
- .mockImplementation(() => targetState);
13
- }
14
-
15
- function getBodyHTML() {
16
- return document.body.innerHTML;
17
- }
18
-
19
- function init() {
20
- jsPsych.init({
21
- timeline: [
22
- {
23
- type: "html-keyboard-response",
24
- stimulus: "foo",
25
- },
26
- ],
27
- });
28
- }
29
-
30
- it("should delay execution until the document is ready", () => {
31
- expect(getBodyHTML()).toBe("");
32
-
33
- setReadyState("loading");
34
- init();
35
- expect(getBodyHTML()).toBe("");
36
-
37
- // Simulate the document getting ready
38
- setReadyState("complete");
39
- window.dispatchEvent(new Event("load"));
40
- expect(getBodyHTML()).not.toBe("");
41
- });
42
-
43
- it("should execute immediately when the document is ready", () => {
44
- // The document is ready by default in jsdom
45
- init();
46
- expect(getBodyHTML()).not.toBe("");
47
- });
48
- });
@@ -1,7 +0,0 @@
1
- const root = '../../';
2
-
3
- require(root + 'jspsych.js');
4
-
5
- test('jsPsych should be in the window object', function(){
6
- expect(typeof window.jsPsych).not.toBe('undefined');
7
- });
@@ -1,58 +0,0 @@
1
- const root = '../../';
2
- const utils = require('../testing-utils.js');
3
-
4
- // ideally, use fake timers for this test, but 'modern' timers that work
5
- // with performance.now() break something in the first test. wait for fix?
6
- //jest.useFakeTimers('modern');
7
- //jest.useFakeTimers();
8
-
9
- beforeEach(function(){
10
- require(root + 'jspsych.js');
11
- require(root + 'plugins/jspsych-html-keyboard-response.js');
12
- });
13
-
14
- describe('minimum_valid_rt parameter', function(){
15
- test('has a default value of 0', function(){
16
- var t = {
17
- type: 'html-keyboard-response',
18
- stimulus: 'foo'
19
- }
20
-
21
- var t2 = {
22
- type: 'html-keyboard-response',
23
- stimulus: 'bar'
24
- }
25
-
26
- jsPsych.init({timeline: [t,t2]});
27
-
28
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
29
- utils.pressKey('a');
30
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('bar');
31
- utils.pressKey('a');
32
- });
33
-
34
- test('correctly prevents fast responses when set', function(done){
35
- var t = {
36
- type: 'html-keyboard-response',
37
- stimulus: 'foo'
38
- }
39
-
40
- var t2 = {
41
- type: 'html-keyboard-response',
42
- stimulus: 'bar'
43
- }
44
-
45
- jsPsych.init({timeline: [t,t2], minimum_valid_rt: 100});
46
-
47
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
48
- utils.pressKey('a');
49
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
50
- setTimeout(function(){
51
- utils.pressKey('a');
52
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('bar');
53
- utils.pressKey('a');
54
- done();
55
- }, 100)
56
-
57
- });
58
- });
@@ -1,202 +0,0 @@
1
- const root = '../../';
2
- const utils = require('../testing-utils.js');
3
-
4
- beforeEach(function(){
5
- require(root + 'jspsych.js');
6
- require(root + 'plugins/jspsych-html-keyboard-response.js');
7
- });
8
-
9
- describe('automatic progress bar', function(){
10
-
11
- test('progress bar does not display by default', function(){
12
- var trial = {
13
- type: 'html-keyboard-response',
14
- stimulus: 'foo'
15
- }
16
-
17
- jsPsych.init({
18
- timeline: [trial]
19
- });
20
-
21
- expect(document.querySelector('#jspsych-progressbar-container')).toBe(null);
22
-
23
- utils.pressKey('a');
24
- });
25
-
26
- test('progress bar displays when show_progress_bar is true', function(){
27
- var trial = {
28
- type: 'html-keyboard-response',
29
- stimulus: 'foo'
30
- }
31
-
32
- jsPsych.init({
33
- timeline: [trial],
34
- show_progress_bar: true
35
- });
36
-
37
- expect(document.querySelector('#jspsych-progressbar-container').innerHTML).toMatch('<span>Completion Progress</span><div id="jspsych-progressbar-outer"><div id="jspsych-progressbar-inner"></div></div>');
38
-
39
- utils.pressKey('a');
40
- });
41
-
42
- test('progress bar automatically updates by default', function(){
43
- var trial = {
44
- type: 'html-keyboard-response',
45
- stimulus: 'foo'
46
- }
47
-
48
- jsPsych.init({
49
- timeline: [trial, trial, trial, trial],
50
- show_progress_bar: true
51
- });
52
-
53
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
54
-
55
- utils.pressKey('a');
56
-
57
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('25%');
58
-
59
- utils.pressKey('a');
60
-
61
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('50%');
62
-
63
- utils.pressKey('a');
64
-
65
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('75%');
66
-
67
- utils.pressKey('a');
68
-
69
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('100%');
70
-
71
- });
72
-
73
- test('progress bar does not automatically update when auto_update_progress_bar is false', function(){
74
- var trial = {
75
- type: 'html-keyboard-response',
76
- stimulus: 'foo'
77
- }
78
-
79
- jsPsych.init({
80
- timeline: [trial, trial, trial, trial],
81
- show_progress_bar: true,
82
- auto_update_progress_bar: false
83
- });
84
-
85
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
86
-
87
- utils.pressKey('a');
88
-
89
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
90
-
91
- utils.pressKey('a');
92
-
93
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
94
-
95
- utils.pressKey('a');
96
-
97
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
98
-
99
- utils.pressKey('a');
100
-
101
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
102
-
103
- });
104
-
105
- test('setProgressBar() manually', function(){
106
- var trial = {
107
- type: 'html-keyboard-response',
108
- stimulus: 'foo',
109
- on_finish: function(){
110
- jsPsych.setProgressBar(0.2);
111
- }
112
- }
113
-
114
- var trial_2 = {
115
- type: 'html-keyboard-response',
116
- stimulus: 'foo',
117
- on_finish: function(){
118
- jsPsych.setProgressBar(0.8);
119
- }
120
- }
121
-
122
- jsPsych.init({
123
- timeline: [trial, trial_2],
124
- show_progress_bar: true,
125
- auto_update_progress_bar: false
126
- });
127
-
128
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
129
-
130
- utils.pressKey('a');
131
-
132
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('20%');
133
-
134
- utils.pressKey('a');
135
-
136
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('80%');
137
-
138
- });
139
-
140
- test('getProgressBarCompleted() -- manual updates', function(){
141
- var trial = {
142
- type: 'html-keyboard-response',
143
- stimulus: 'foo',
144
- on_finish: function(){
145
- jsPsych.setProgressBar(0.2);
146
- }
147
- }
148
-
149
- var trial_2 = {
150
- type: 'html-keyboard-response',
151
- stimulus: 'foo',
152
- on_finish: function(){
153
- jsPsych.setProgressBar(0.8);
154
- }
155
- }
156
-
157
- jsPsych.init({
158
- timeline: [trial, trial_2],
159
- show_progress_bar: true,
160
- auto_update_progress_bar: false
161
- });
162
-
163
- utils.pressKey('a');
164
-
165
- expect(jsPsych.getProgressBarCompleted()).toBe(0.2);
166
-
167
- utils.pressKey('a');
168
-
169
- expect(jsPsych.getProgressBarCompleted()).toBe(0.8);
170
-
171
- });
172
-
173
- test('getProgressBarCompleted() -- automatic updates', function(){
174
- var trial = {
175
- type: 'html-keyboard-response',
176
- stimulus: 'foo'
177
- }
178
-
179
- jsPsych.init({
180
- timeline: [trial, trial, trial, trial],
181
- show_progress_bar: true
182
- });
183
-
184
- utils.pressKey('a');
185
-
186
- expect(jsPsych.getProgressBarCompleted()).toBe(0.25);
187
-
188
- utils.pressKey('a');
189
-
190
- expect(jsPsych.getProgressBarCompleted()).toBe(0.50);
191
-
192
- utils.pressKey('a');
193
-
194
- expect(jsPsych.getProgressBarCompleted()).toBe(0.75);
195
-
196
- utils.pressKey('a');
197
-
198
- expect(jsPsych.getProgressBarCompleted()).toBe(1);
199
-
200
- });
201
-
202
- });