jspsych 6.3.0 → 7.1.1

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 (397) 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 +3164 -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 +3158 -0
  10. package/dist/index.cjs.map +1 -0
  11. package/dist/index.d.ts +11 -0
  12. package/dist/index.js +3152 -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 +129 -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 +158 -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 -734
  59. package/docs/core_library/jspsych-data.md +0 -589
  60. package/docs/core_library/jspsych-pluginAPI.md +0 -610
  61. package/docs/core_library/jspsych-randomization.md +0 -397
  62. package/docs/core_library/jspsych-turk.md +0 -102
  63. package/docs/extensions/extensions.md +0 -83
  64. package/docs/extensions/jspsych-ext-webgazer.md +0 -106
  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 -184
  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 -237
  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 -60
  145. package/docs/plugins/jspsych-webgazer-init-camera.md +0 -31
  146. package/docs/plugins/jspsych-webgazer-validate.md +0 -43
  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.js +0 -88886
  216. package/examples/jspsych-RDK.html +0 -58
  217. package/examples/jspsych-animation.html +0 -39
  218. package/examples/jspsych-audio-button-response.html +0 -58
  219. package/examples/jspsych-audio-keyboard-response.html +0 -68
  220. package/examples/jspsych-audio-slider-response.html +0 -61
  221. package/examples/jspsych-call-function.html +0 -32
  222. package/examples/jspsych-canvas-button-response.html +0 -95
  223. package/examples/jspsych-canvas-keyboard-response.html +0 -78
  224. package/examples/jspsych-canvas-slider-response.html +0 -67
  225. package/examples/jspsych-categorize-animation.html +0 -49
  226. package/examples/jspsych-categorize-html.html +0 -33
  227. package/examples/jspsych-categorize-image.html +0 -44
  228. package/examples/jspsych-cloze.html +0 -37
  229. package/examples/jspsych-free-sort.html +0 -109
  230. package/examples/jspsych-fullscreen.html +0 -45
  231. package/examples/jspsych-html-button-response.html +0 -43
  232. package/examples/jspsych-html-keyboard-response.html +0 -42
  233. package/examples/jspsych-html-slider-response.html +0 -53
  234. package/examples/jspsych-iat.html +0 -520
  235. package/examples/jspsych-image-button-response.html +0 -91
  236. package/examples/jspsych-image-keyboard-response.html +0 -85
  237. package/examples/jspsych-image-slider-response.html +0 -85
  238. package/examples/jspsych-instructions.html +0 -37
  239. package/examples/jspsych-maxdiff.html +0 -33
  240. package/examples/jspsych-preload.html +0 -140
  241. package/examples/jspsych-reconstruction.html +0 -43
  242. package/examples/jspsych-resize.html +0 -34
  243. package/examples/jspsych-same-different-html.html +0 -28
  244. package/examples/jspsych-same-different-image.html +0 -39
  245. package/examples/jspsych-serial-reaction-time-mouse.html +0 -98
  246. package/examples/jspsych-serial-reaction-time.html +0 -54
  247. package/examples/jspsych-survey-html-form.html +0 -33
  248. package/examples/jspsych-survey-likert.html +0 -42
  249. package/examples/jspsych-survey-multi-choice.html +0 -40
  250. package/examples/jspsych-survey-multi-select.html +0 -42
  251. package/examples/jspsych-survey-text.html +0 -34
  252. package/examples/jspsych-video-button-response.html +0 -65
  253. package/examples/jspsych-video-keyboard-response.html +0 -61
  254. package/examples/jspsych-video-slider-response.html +0 -63
  255. package/examples/jspsych-virtual-chinrest.html +0 -69
  256. package/examples/jspsych-visual-search-circle.html +0 -64
  257. package/examples/jspsych-vsl-animate-occlusion.html +0 -35
  258. package/examples/jspsych-vsl-grid-scene.html +0 -47
  259. package/examples/lexical-decision.html +0 -134
  260. package/examples/manual-preloading.html +0 -59
  261. package/examples/pause-unpause.html +0 -33
  262. package/examples/progress-bar.html +0 -68
  263. package/examples/save-trial-parameters.html +0 -98
  264. package/examples/sound/hammer.mp3 +0 -0
  265. package/examples/sound/sound.mp3 +0 -0
  266. package/examples/sound/speech_blue.mp3 +0 -0
  267. package/examples/sound/speech_green.mp3 +0 -0
  268. package/examples/sound/speech_joke.mp3 +0 -0
  269. package/examples/sound/speech_red.mp3 +0 -0
  270. package/examples/sound/tone.mp3 +0 -0
  271. package/examples/timeline-variables-sampling.html +0 -50
  272. package/examples/timeline-variables.html +0 -64
  273. package/examples/video/sample_video.mp4 +0 -0
  274. package/examples/webgazer.html +0 -162
  275. package/examples/webgazer_image.html +0 -60
  276. package/extensions/jspsych-ext-webgazer.js +0 -185
  277. package/jspsych.js +0 -3015
  278. package/license.txt +0 -21
  279. package/mkdocs.yml +0 -118
  280. package/plugins/jspsych-animation.js +0 -189
  281. package/plugins/jspsych-audio-button-response.js +0 -269
  282. package/plugins/jspsych-audio-keyboard-response.js +0 -212
  283. package/plugins/jspsych-audio-slider-response.js +0 -278
  284. package/plugins/jspsych-call-function.js +0 -58
  285. package/plugins/jspsych-canvas-button-response.js +0 -199
  286. package/plugins/jspsych-canvas-keyboard-response.js +0 -155
  287. package/plugins/jspsych-canvas-slider-response.js +0 -207
  288. package/plugins/jspsych-categorize-animation.js +0 -266
  289. package/plugins/jspsych-categorize-html.js +0 -220
  290. package/plugins/jspsych-categorize-image.js +0 -222
  291. package/plugins/jspsych-cloze.js +0 -112
  292. package/plugins/jspsych-external-html.js +0 -112
  293. package/plugins/jspsych-free-sort.js +0 -478
  294. package/plugins/jspsych-fullscreen.js +0 -106
  295. package/plugins/jspsych-html-button-response.js +0 -188
  296. package/plugins/jspsych-html-keyboard-response.js +0 -149
  297. package/plugins/jspsych-html-slider-response.js +0 -202
  298. package/plugins/jspsych-iat-html.js +0 -284
  299. package/plugins/jspsych-iat-image.js +0 -286
  300. package/plugins/jspsych-image-button-response.js +0 -327
  301. package/plugins/jspsych-image-keyboard-response.js +0 -263
  302. package/plugins/jspsych-image-slider-response.js +0 -369
  303. package/plugins/jspsych-instructions.js +0 -237
  304. package/plugins/jspsych-maxdiff.js +0 -173
  305. package/plugins/jspsych-preload.js +0 -345
  306. package/plugins/jspsych-rdk.js +0 -1373
  307. package/plugins/jspsych-reconstruction.js +0 -134
  308. package/plugins/jspsych-resize.js +0 -166
  309. package/plugins/jspsych-same-different-html.js +0 -168
  310. package/plugins/jspsych-same-different-image.js +0 -169
  311. package/plugins/jspsych-serial-reaction-time-mouse.js +0 -212
  312. package/plugins/jspsych-serial-reaction-time.js +0 -247
  313. package/plugins/jspsych-survey-html-form.js +0 -171
  314. package/plugins/jspsych-survey-likert.js +0 -195
  315. package/plugins/jspsych-survey-multi-choice.js +0 -208
  316. package/plugins/jspsych-survey-multi-select.js +0 -232
  317. package/plugins/jspsych-survey-text.js +0 -185
  318. package/plugins/jspsych-video-button-response.js +0 -335
  319. package/plugins/jspsych-video-keyboard-response.js +0 -279
  320. package/plugins/jspsych-video-slider-response.js +0 -351
  321. package/plugins/jspsych-virtual-chinrest.js +0 -471
  322. package/plugins/jspsych-visual-search-circle.js +0 -259
  323. package/plugins/jspsych-vsl-animate-occlusion.js +0 -196
  324. package/plugins/jspsych-vsl-grid-scene.js +0 -103
  325. package/plugins/jspsych-webgazer-calibrate.js +0 -166
  326. package/plugins/jspsych-webgazer-init-camera.js +0 -95
  327. package/plugins/jspsych-webgazer-validate.js +0 -304
  328. package/plugins/template/jspsych-plugin-template.js +0 -35
  329. package/tests/README.md +0 -7
  330. package/tests/jsPsych/case-sensitive-responses.test.js +0 -53
  331. package/tests/jsPsych/css-classes-parameter.test.js +0 -107
  332. package/tests/jsPsych/default-iti.test.js +0 -51
  333. package/tests/jsPsych/default-parameters.test.js +0 -58
  334. package/tests/jsPsych/endexperiment.test.js +0 -49
  335. package/tests/jsPsych/events.test.js +0 -606
  336. package/tests/jsPsych/functions-as-parameters.test.js +0 -210
  337. package/tests/jsPsych/init.test.js +0 -48
  338. package/tests/jsPsych/loads.test.js +0 -7
  339. package/tests/jsPsych/min-rt.test.js +0 -58
  340. package/tests/jsPsych/progressbar.test.js +0 -202
  341. package/tests/jsPsych/timeline-variables.test.js +0 -531
  342. package/tests/jsPsych/timelines.test.js +0 -569
  343. package/tests/jsPsych.data/data-csv-conversion.test.js +0 -85
  344. package/tests/jsPsych.data/data-json-conversion.test.js +0 -120
  345. package/tests/jsPsych.data/datacollection.test.js +0 -117
  346. package/tests/jsPsych.data/datacolumn.test.js +0 -50
  347. package/tests/jsPsych.data/datamodule.test.js +0 -152
  348. package/tests/jsPsych.data/dataparameter.test.js +0 -251
  349. package/tests/jsPsych.data/interactions.test.js +0 -109
  350. package/tests/jsPsych.data/trialparameters.test.js +0 -175
  351. package/tests/jsPsych.extensions/extensions.test.js +0 -207
  352. package/tests/jsPsych.extensions/test-extension.js +0 -42
  353. package/tests/jsPsych.pluginAPI/pluginapi.test.js +0 -341
  354. package/tests/jsPsych.pluginAPI/preloads.test.js +0 -43
  355. package/tests/jsPsych.randomization/randomziation.test.js +0 -27
  356. package/tests/jsPsych.utils/utils.test.js +0 -58
  357. package/tests/plugins/plugin-animation.test.js +0 -34
  358. package/tests/plugins/plugin-audio-button-response.test.js +0 -15
  359. package/tests/plugins/plugin-audio-keyboard-response.test.js +0 -15
  360. package/tests/plugins/plugin-audio-slider-response.test.js +0 -15
  361. package/tests/plugins/plugin-call-function.test.js +0 -49
  362. package/tests/plugins/plugin-categorize-animation.test.js +0 -263
  363. package/tests/plugins/plugin-categorize-html.test.js +0 -17
  364. package/tests/plugins/plugin-categorize-image.test.js +0 -17
  365. package/tests/plugins/plugin-cloze.test.js +0 -157
  366. package/tests/plugins/plugin-free-sort.test.js +0 -106
  367. package/tests/plugins/plugin-fullscreen.test.js +0 -41
  368. package/tests/plugins/plugin-html-button-response.test.js +0 -161
  369. package/tests/plugins/plugin-html-keyboard-response.test.js +0 -139
  370. package/tests/plugins/plugin-html-slider-response.test.js +0 -155
  371. package/tests/plugins/plugin-iat-html.test.js +0 -299
  372. package/tests/plugins/plugin-iat-image.test.js +0 -298
  373. package/tests/plugins/plugin-image-button-response.test.js +0 -174
  374. package/tests/plugins/plugin-image-keyboard-response.test.js +0 -147
  375. package/tests/plugins/plugin-image-slider-response.test.js +0 -174
  376. package/tests/plugins/plugin-instructions.test.js +0 -85
  377. package/tests/plugins/plugin-maxdiff.test.js +0 -39
  378. package/tests/plugins/plugin-preload.test.js +0 -916
  379. package/tests/plugins/plugin-rdk.test.js +0 -61
  380. package/tests/plugins/plugin-reconstruction.test.js +0 -16
  381. package/tests/plugins/plugin-resize.test.js +0 -16
  382. package/tests/plugins/plugin-same-different-html.test.js +0 -17
  383. package/tests/plugins/plugin-same-different-image.test.js +0 -17
  384. package/tests/plugins/plugin-serial-reaction-time-mouse.test.js +0 -42
  385. package/tests/plugins/plugin-serial-reaction-time.test.js +0 -109
  386. package/tests/plugins/plugin-survey-html-form.test.js +0 -44
  387. package/tests/plugins/plugin-survey-likert.test.js +0 -48
  388. package/tests/plugins/plugin-survey-multi-choice.test.js +0 -47
  389. package/tests/plugins/plugin-survey-multi-select.test.js +0 -71
  390. package/tests/plugins/plugin-survey-text.test.js +0 -115
  391. package/tests/plugins/plugin-video-button-response.test.js +0 -32
  392. package/tests/plugins/plugin-video-keyboard-response.test.js +0 -32
  393. package/tests/plugins/plugin-video-slider-response.test.js +0 -31
  394. package/tests/plugins/plugin-visual-search-circle.test.js +0 -16
  395. package/tests/plugins/plugin-vsl-animate-occlusion.test.js +0 -16
  396. package/tests/plugins/plugin-vsl-grid-scene.test.js +0 -16
  397. package/tests/testing-utils.js +0 -13
@@ -1,606 +0,0 @@
1
- const utils = require('../testing-utils.js');
2
-
3
- beforeEach(function(){
4
- require('../../jspsych.js');
5
- require('../../plugins/jspsych-html-keyboard-response.js');
6
- })
7
-
8
- describe('on_finish (trial)', function(){
9
- test('should get an object of data generated by the trial', function(){
10
-
11
- return (new Promise(function(resolve, reject){
12
-
13
- var key_data = null;
14
-
15
- var trial = {
16
- type: 'html-keyboard-response',
17
- stimulus: 'hello',
18
- on_finish: function(data){
19
- key_data = data.response;
20
- }
21
- }
22
-
23
- jsPsych.init({
24
- timeline: [trial],
25
- on_finish: function() {
26
- resolve({key_data});
27
- }
28
- });
29
-
30
- utils.pressKey('a');
31
-
32
- })).then(function(data) { expect(data.key_data).toBe('a') });
33
- });
34
-
35
- test('should be able to write to the data', function(){
36
-
37
- return (new Promise(function(resolve, reject){
38
-
39
- var promise_data = {};
40
-
41
- var trial = {
42
- type: 'html-keyboard-response',
43
- stimulus: 'hello',
44
- on_finish: function(data){
45
- data.response = 1;
46
- }
47
- }
48
-
49
- jsPsych.init({
50
- timeline: [trial],
51
- on_finish: function() {
52
- promise_data.final_key_press = jsPsych.data.get().values()[0].response;
53
- resolve(promise_data);
54
- }
55
- });
56
-
57
- utils.pressKey('a');
58
-
59
- //resolve();
60
- })).then(function(pd) {
61
- expect(pd.final_key_press).toBe(1);
62
- });
63
- });
64
- });
65
-
66
- describe('on_start (trial)', function(){
67
-
68
- test('should get trial data with function parameters evaluated', function(){
69
-
70
- return (new Promise(function(resolve, reject){
71
-
72
- var d = null;
73
-
74
- var trial = {
75
- type: 'html-keyboard-response',
76
- stimulus: function(){ return 'hello'; },
77
- on_start: function(trial){
78
- d = trial.stimulus;
79
- }
80
- }
81
-
82
- jsPsych.init({
83
- timeline: [trial],
84
- on_finish: function() {
85
- resolve(d);
86
- }
87
- });
88
-
89
- utils.pressKey('a');
90
-
91
- })).then(function(data) { expect(data).toBe('hello') });
92
- });
93
-
94
- test('should get trial data with timeline variables evaluated', function(){
95
-
96
- return (new Promise(function(resolve, reject){
97
-
98
- var d = null;
99
-
100
- var trial = {
101
- timeline: [{
102
- type: 'html-keyboard-response',
103
- stimulus: jsPsych.timelineVariable('stimulus'),
104
- on_start: function(trial){
105
- d = trial.stimulus;
106
- }
107
- }],
108
- timeline_variables: [{stimulus: 'hello'}]
109
- }
110
-
111
- jsPsych.init({
112
- timeline: [trial],
113
- on_finish: function() {
114
- resolve(d);
115
- }
116
- });
117
-
118
- utils.pressKey('a');
119
-
120
- })).then(function(data) { expect(data).toBe('hello') });
121
- });
122
- })
123
-
124
- describe('on_trial_finish (experiment level)', function(){
125
- test('should get an object containing the trial data', function(){
126
-
127
- return (new Promise(function(resolve, reject){
128
-
129
- var promise_data = {};
130
-
131
- var trial = {
132
- type: 'html-keyboard-response',
133
- stimulus: 'hello'
134
- }
135
-
136
- jsPsych.init({
137
- timeline: [trial],
138
- on_trial_finish: function(data){
139
- promise_data.key = data.response;
140
- },
141
- on_finish: function(){
142
- resolve(promise_data);
143
- }
144
- });
145
-
146
- utils.pressKey('a');
147
-
148
- //resolve();
149
- })).then(function(pd) {
150
- expect(pd.key).toBe('a');
151
- });
152
- });
153
-
154
- test('should allow writing to the data object', function(){
155
-
156
- return (new Promise(function(resolve, reject){
157
-
158
- var promise_data = {};
159
-
160
- var trial = {
161
- type: 'html-keyboard-response',
162
- stimulus: 'hello'
163
- }
164
-
165
- jsPsych.init({
166
- timeline: [trial],
167
- on_trial_finish: function(data){
168
- data.write = true;
169
- },
170
- on_finish: function(data){
171
- promise_data.write = data.values()[0].write;
172
- resolve(promise_data);
173
- }
174
- });
175
-
176
- utils.pressKey('a');
177
-
178
- //resolve();
179
- })).then(function(pd) {
180
- expect(pd.write).toBe(true);
181
- });
182
- });
183
- });
184
-
185
- describe('on_data_update', function(){
186
- test('should get an object containing the trial data', function(){
187
-
188
- return (new Promise(function(resolve, reject){
189
-
190
- var promise_data = {};
191
-
192
- var trial = {
193
- type: 'html-keyboard-response',
194
- stimulus: 'hello'
195
- }
196
-
197
- jsPsych.init({
198
- timeline: [trial],
199
- on_data_update: function(data){
200
- promise_data.key = data.response;
201
- },
202
- on_finish: function(){
203
- resolve(promise_data);
204
- }
205
- });
206
-
207
- utils.pressKey('a');
208
-
209
- //resolve();
210
- })).then(function(pd) {
211
- expect(pd.key).toBe('a');
212
- });
213
- });
214
-
215
- test('should contain data with null values', function(){
216
-
217
- require('../../plugins/jspsych-html-slider-response.js');
218
-
219
- return (new Promise(function(resolve, reject){
220
-
221
- var promise_data = [];
222
-
223
- var trial = {
224
- type: 'html-keyboard-response',
225
- stimulus: 'hello',
226
- trial_duration: 10
227
- }
228
-
229
- var trial_2 = {
230
- type: 'html-slider-response',
231
- stimulus: 'hello',
232
- trial_duration: 10
233
- }
234
-
235
- jsPsych.init({
236
- timeline: [trial, trial_2],
237
- on_data_update: function(data){
238
- promise_data.push(data);
239
- },
240
- on_finish: function(){
241
- resolve(promise_data);
242
- }
243
- });
244
-
245
- //resolve();
246
- })).then(function(pd) {
247
- expect(pd[0].response).not.toBeUndefined();
248
- expect(pd[0].response).toBeNull();
249
- expect(pd[1].response).toBeNull();
250
- expect(pd[1].rt).toBeNull();
251
- });
252
- });
253
-
254
- test('should contain data added with on_finish (trial level)', function(){
255
-
256
- return (new Promise(function(resolve, reject){
257
-
258
- var promise_data = {};
259
-
260
- var trial = {
261
- type: 'html-keyboard-response',
262
- stimulus: 'hello',
263
- on_finish: function(data){
264
- data.trial_level = true;
265
- }
266
- }
267
-
268
- jsPsych.init({
269
- timeline: [trial],
270
- on_data_update: function(data){
271
- promise_data.trial_level = data.trial_level;
272
- },
273
- on_finish: function(){
274
- resolve(promise_data);
275
- }
276
- });
277
-
278
- utils.pressKey('a');
279
-
280
- //resolve();
281
- })).then(function(pd) {
282
- expect(pd.trial_level).toBe(true);
283
- });
284
- });
285
-
286
- test('should contain data added with on_trial_finish (experiment level)', function(){
287
-
288
- return (new Promise(function(resolve, reject){
289
-
290
- var promise_data = {};
291
-
292
- var trial = {
293
- type: 'html-keyboard-response',
294
- stimulus: 'hello'
295
- }
296
-
297
- jsPsych.init({
298
- timeline: [trial],
299
- on_trial_finish: function(data){
300
- data.experiment_level = true;
301
- },
302
- on_data_update: function(data){
303
- promise_data.experiment_level = data.experiment_level;
304
- },
305
- on_finish: function(){
306
- resolve(promise_data);
307
- }
308
- });
309
-
310
- utils.pressKey('a');
311
-
312
- //resolve();
313
- })).then(function(pd) {
314
- expect(pd.experiment_level).toBe(true);
315
- });
316
- });
317
- });
318
-
319
- describe('on_trial_start', function(){
320
-
321
- test('should get an object containing the trial properties', function(){
322
-
323
- return (new Promise(function(resolve, reject){
324
-
325
- var promise_data = {};
326
-
327
- var trial = {
328
- type: 'html-keyboard-response',
329
- stimulus: 'hello'
330
- }
331
-
332
- jsPsych.init({
333
- timeline: [trial],
334
- on_trial_start: function(trial){
335
- promise_data.text = trial.stimulus;
336
- },
337
- on_finish: function(){
338
- resolve(promise_data);
339
- }
340
- });
341
-
342
- utils.pressKey('a');
343
-
344
- //resolve();
345
- })).then(function(pd) {
346
- expect(pd.text).toBe('hello');
347
- });
348
- });
349
-
350
- test('should allow modification of the trial properties', function(){
351
-
352
- var trial = {
353
- type: 'html-keyboard-response',
354
- stimulus: 'hello'
355
- }
356
-
357
- jsPsych.init({
358
- timeline: [trial],
359
- on_trial_start: function(trial){
360
- trial.stimulus = 'goodbye';
361
- }
362
- });
363
-
364
- var display_element = jsPsych.getDisplayElement();
365
- expect(display_element.innerHTML).toMatch('goodbye');
366
-
367
- utils.pressKey('a');
368
- });
369
- });
370
-
371
- describe('on_timeline_finish', function(){
372
- test('should fire once when timeline is complete', function(){
373
-
374
- var on_finish_fn = jest.fn();
375
-
376
- var mini_timeline = {
377
- timeline: [
378
- {
379
- type: 'html-keyboard-response',
380
- stimulus: 'foo'
381
- },
382
- {
383
- type: 'html-keyboard-response',
384
- stimulus: 'foo'
385
- },
386
- {
387
- type: 'html-keyboard-response',
388
- stimulus: 'foo'
389
- }
390
- ],
391
- on_timeline_finish: on_finish_fn
392
- }
393
-
394
- jsPsych.init({timeline: [mini_timeline]});
395
-
396
- utils.pressKey('a');
397
- expect(on_finish_fn).not.toHaveBeenCalled();
398
- utils.pressKey('a');
399
- expect(on_finish_fn).not.toHaveBeenCalled();
400
- utils.pressKey('a');
401
- expect(on_finish_fn).toHaveBeenCalled();
402
- });
403
-
404
- test('should fire once even with timeline variables', function(){
405
-
406
- var on_finish_fn = jest.fn();
407
-
408
- var tvs = [
409
- {x: 1},
410
- {x: 2},
411
- ]
412
-
413
- var mini_timeline = {
414
- timeline: [
415
- {
416
- type: 'html-keyboard-response',
417
- stimulus: 'foo'
418
- }
419
- ],
420
- on_timeline_finish: on_finish_fn,
421
- timeline_variables: tvs
422
- }
423
-
424
- jsPsych.init({timeline: [mini_timeline]});
425
-
426
- utils.pressKey('a');
427
- utils.pressKey('a');
428
- expect(on_finish_fn.mock.calls.length).toBe(1);
429
-
430
- })
431
-
432
- test('should fire on every repetition', function(){
433
-
434
- var on_finish_fn = jest.fn();
435
-
436
- var mini_timeline = {
437
- timeline: [
438
- {
439
- type: 'html-keyboard-response',
440
- stimulus: 'foo'
441
- }
442
- ],
443
- on_timeline_finish: on_finish_fn,
444
- repetitions: 2
445
- }
446
-
447
- jsPsych.init({timeline: [mini_timeline]});
448
-
449
- utils.pressKey('a');
450
- utils.pressKey('a');
451
- expect(on_finish_fn.mock.calls.length).toBe(2);
452
-
453
- })
454
-
455
- test('should fire before a loop function', function(){
456
-
457
- var callback = jest.fn().mockImplementation(function(str) {return str;});
458
- var count = 0;
459
-
460
- var mini_timeline = {
461
- timeline: [
462
- {
463
- type: 'html-keyboard-response',
464
- stimulus: 'foo'
465
- }
466
- ],
467
- on_timeline_finish: function() {callback('finish');},
468
- loop_function: function() {
469
- callback('loop');
470
- count++;
471
- if (count==2) {
472
- return false;
473
- } else {
474
- return true;
475
- }
476
- }
477
- }
478
-
479
- jsPsych.init({timeline: [mini_timeline]});
480
-
481
- utils.pressKey('a');
482
- utils.pressKey('a');
483
- expect(callback.mock.calls.length).toBe(4);
484
- expect(callback.mock.calls[0][0]).toBe('finish');
485
- expect(callback.mock.calls[1][0]).toBe('loop');
486
- expect(callback.mock.calls[2][0]).toBe('finish');
487
- expect(callback.mock.calls[3][0]).toBe('loop');
488
-
489
- })
490
-
491
- })
492
-
493
- describe('on_timeline_start', function(){
494
- test('should fire once when timeline starts', function(){
495
-
496
- var on_start_fn = jest.fn();
497
-
498
- var mini_timeline = {
499
- timeline: [
500
- {
501
- type: 'html-keyboard-response',
502
- stimulus: 'foo'
503
- },
504
- {
505
- type: 'html-keyboard-response',
506
- stimulus: 'foo'
507
- },
508
- {
509
- type: 'html-keyboard-response',
510
- stimulus: 'foo'
511
- }
512
- ],
513
- on_timeline_start: on_start_fn
514
- }
515
-
516
- jsPsych.init({timeline: [mini_timeline]});
517
-
518
- expect(on_start_fn).toHaveBeenCalled();
519
- utils.pressKey('a');
520
- utils.pressKey('a');
521
- utils.pressKey('a');
522
- expect(on_start_fn.mock.calls.length).toBe(1);
523
-
524
- })
525
-
526
- test('should fire once even with timeline variables', function(){
527
-
528
- var on_start_fn = jest.fn();
529
-
530
- var tvs = [
531
- {x: 1},
532
- {x: 2},
533
- ]
534
-
535
- var mini_timeline = {
536
- timeline: [
537
- {
538
- type: 'html-keyboard-response',
539
- stimulus: 'foo'
540
- }
541
- ],
542
- on_timeline_start: on_start_fn,
543
- timeline_variables: tvs
544
- }
545
-
546
- jsPsych.init({timeline: [mini_timeline]});
547
-
548
- expect(on_start_fn).toHaveBeenCalled();
549
- utils.pressKey('a');
550
- utils.pressKey('a');
551
- expect(on_start_fn.mock.calls.length).toBe(1);
552
-
553
- })
554
-
555
- test('should fire on every repetition', function(){
556
-
557
- var on_start_fn = jest.fn();
558
-
559
- var mini_timeline = {
560
- timeline: [
561
- {
562
- type: 'html-keyboard-response',
563
- stimulus: 'foo'
564
- }
565
- ],
566
- on_timeline_start: on_start_fn,
567
- repetitions: 2
568
- }
569
-
570
- jsPsych.init({timeline: [mini_timeline]});
571
-
572
- expect(on_start_fn).toHaveBeenCalled();
573
- utils.pressKey('a');
574
- utils.pressKey('a');
575
- expect(on_start_fn.mock.calls.length).toBe(2);
576
-
577
- })
578
-
579
- test('should fire after a conditional function', function(){
580
-
581
- var callback = jest.fn().mockImplementation(function(str) {return str;});
582
-
583
- var mini_timeline = {
584
- timeline: [
585
- {
586
- type: 'html-keyboard-response',
587
- stimulus: 'foo'
588
- }
589
- ],
590
- on_timeline_start: function() {callback('start');},
591
- conditional_function: function() {
592
- callback('conditional');
593
- return true;
594
- }
595
- }
596
-
597
- jsPsych.init({timeline: [mini_timeline]});
598
-
599
- expect(callback.mock.calls.length).toBe(2);
600
- expect(callback.mock.calls[0][0]).toBe("conditional");
601
- expect(callback.mock.calls[1][0]).toBe("start");
602
- utils.pressKey('a');
603
-
604
- })
605
-
606
- })