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,569 +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('loop function', function(){
10
-
11
- test('repeats a timeline when returns true', function(){
12
-
13
- var count = 0;
14
-
15
- var trial = {
16
- timeline: [{
17
- type: 'html-keyboard-response',
18
- stimulus: 'foo'
19
- }],
20
- loop_function: function(){
21
- if(count < 1){
22
- count++;
23
- return true;
24
- } else {
25
- return false;
26
- }
27
- }
28
- }
29
-
30
- jsPsych.init({
31
- timeline: [trial]
32
- });
33
-
34
- // first trial
35
- utils.pressKey('a');
36
- expect(jsPsych.data.get().count()).toBe(1);
37
-
38
- // second trial
39
- utils.pressKey('a');
40
- expect(jsPsych.data.get().count()).toBe(2);
41
-
42
- });
43
-
44
- test('does not repeat when returns false', function(){
45
-
46
- var count = 0;
47
-
48
- var trial = {
49
- timeline: [{
50
- type: 'html-keyboard-response',
51
- stimulus: 'foo'
52
- }],
53
- loop_function: function(){
54
- return false
55
- }
56
- }
57
-
58
- jsPsych.init({
59
- timeline: [trial]
60
- });
61
-
62
- // first trial
63
- utils.pressKey('a');
64
-
65
- expect(jsPsych.data.get().count()).toBe(1);
66
-
67
- // second trial
68
- utils.pressKey('a');
69
-
70
- expect(jsPsych.data.get().count()).toBe(1);
71
-
72
- });
73
-
74
- test('gets the data from the most recent iteration', function(){
75
-
76
- var data_count = [];
77
- var count = 0;
78
-
79
- var trial = {
80
- timeline: [{
81
- type: 'html-keyboard-response',
82
- stimulus: 'foo'
83
- }],
84
- loop_function: function(data){
85
- data_count.push(data.count());
86
- if(count < 2){
87
- count++;
88
- return true;
89
- } else {
90
- return false;
91
- }
92
- }
93
- }
94
-
95
- jsPsych.init({
96
- timeline: [trial]
97
- });
98
-
99
- // first trial
100
- utils.pressKey('a');
101
-
102
- // second trial
103
- utils.pressKey('a');
104
-
105
- // third trial
106
- utils.pressKey('a');
107
-
108
- expect(data_count).toEqual([1,1,1]);
109
- expect(jsPsych.data.get().count()).toBe(3);
110
-
111
- });
112
-
113
- test('timeline variables from nested timelines are available in loop function', function(){
114
-
115
- var counter = 0;
116
-
117
- var trial2 = {
118
- type: 'html-keyboard-response',
119
- stimulus: jsPsych.timelineVariable('word')
120
- }
121
-
122
- var innertimeline = {
123
- timeline: [{
124
- type: 'html-keyboard-response',
125
- stimulus: 'foo'
126
- }],
127
- loop_function: function(){
128
- if(jsPsych.timelineVariable('word') == 'b' && counter < 2){
129
- counter++;
130
- return true;
131
- } else {
132
- counter = 0;
133
- return false;
134
- }
135
- }
136
- }
137
-
138
- var outertimeline = {
139
- timeline: [trial2, innertimeline],
140
- timeline_variables: [
141
- {word: 'a'},
142
- {word: 'b'},
143
- {word: 'c'}
144
- ]
145
- }
146
-
147
- jsPsych.init({
148
- timeline: [outertimeline]
149
- });
150
-
151
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('a');
152
- utils.pressKey('a');
153
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
154
- utils.pressKey('a');
155
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('b');
156
- utils.pressKey('a');
157
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
158
- utils.pressKey('a');
159
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
160
- utils.pressKey('a');
161
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
162
- utils.pressKey('a');
163
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('c');
164
- utils.pressKey('a');
165
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
166
- utils.pressKey('a');
167
- });
168
-
169
- test('only runs once when timeline variables are used', function(){
170
- var count = 0;
171
-
172
- var trial = {
173
- timeline: [{
174
- type: 'html-keyboard-response',
175
- stimulus: 'foo'
176
- }],
177
- timeline_variables:[{a:1},{a:2}],
178
- loop_function: function(){
179
- count++;
180
- return false
181
- }
182
- }
183
-
184
- jsPsych.init({
185
- timeline: [trial]
186
- });
187
-
188
- // first trial
189
- utils.pressKey('a');
190
-
191
- expect(count).toBe(0);
192
-
193
- // second trial
194
- utils.pressKey('a');
195
-
196
- expect(count).toBe(1);
197
- })
198
-
199
- });
200
-
201
- describe('conditional function', function(){
202
-
203
- test('skips the timeline when returns false', function(){
204
-
205
- var conditional = {
206
- timeline: [{
207
- type: 'html-keyboard-response',
208
- stimulus: 'foo'
209
- }],
210
- conditional_function: function(){
211
- return false;
212
- }
213
- }
214
-
215
- var trial = {
216
- type: 'html-keyboard-response',
217
- stimulus: 'bar'
218
- }
219
-
220
- jsPsych.init({
221
- timeline: [conditional, trial]
222
- });
223
-
224
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('bar');
225
-
226
- // clear
227
- utils.pressKey('a');
228
- });
229
-
230
- test('completes the timeline when returns true', function(){
231
- var conditional = {
232
- timeline: [{
233
- type: 'html-keyboard-response',
234
- stimulus: 'foo'
235
- }],
236
- conditional_function: function(){
237
- return true;
238
- }
239
- }
240
-
241
- var trial = {
242
- type: 'html-keyboard-response',
243
- stimulus: 'bar'
244
- }
245
-
246
- jsPsych.init({
247
- timeline: [conditional, trial]
248
- });
249
-
250
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
251
-
252
- // next
253
- utils.pressKey('a');
254
-
255
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('bar');
256
-
257
- // clear
258
- utils.pressKey('a');
259
- });
260
-
261
- test('executes on every loop of the timeline', function(){
262
-
263
- var count = 0;
264
- var conditional_count = 0;
265
-
266
- var trial = {
267
- timeline: [{
268
- type: 'html-keyboard-response',
269
- stimulus: 'foo'
270
- }],
271
- loop_function: function(){
272
- if(count < 1){
273
- count++;
274
- return true;
275
- } else {
276
- return false;
277
- }
278
- },
279
- conditional_function: function(){
280
- conditional_count++;
281
- return true;
282
- }
283
- }
284
-
285
- jsPsych.init({
286
- timeline: [trial]
287
- });
288
-
289
- expect(conditional_count).toBe(1);
290
-
291
- // first trial
292
- utils.pressKey('a');
293
-
294
- expect(conditional_count).toBe(2);
295
-
296
- // second trial
297
- utils.pressKey('a');
298
-
299
- expect(conditional_count).toBe(2);
300
- });
301
-
302
- test('executes only once even when repetitions is > 1', function(){
303
- var conditional_count = 0;
304
-
305
- var trial = {
306
- timeline: [{
307
- type: 'html-keyboard-response',
308
- stimulus: 'foo'
309
- }],
310
- repetitions: 2,
311
- conditional_function: function(){
312
- conditional_count++;
313
- return true;
314
- }
315
- }
316
-
317
- jsPsych.init({
318
- timeline: [trial]
319
- });
320
-
321
- expect(conditional_count).toBe(1);
322
-
323
- // first trial
324
- utils.pressKey('a');
325
-
326
- expect(conditional_count).toBe(1);
327
-
328
- // second trial
329
- utils.pressKey('a');
330
-
331
- expect(conditional_count).toBe(1);
332
- })
333
-
334
- test('executes only once when timeline variables are used', function(){
335
- var conditional_count = 0;
336
-
337
- var trial = {
338
- timeline: [{
339
- type: 'html-keyboard-response',
340
- stimulus: 'foo'
341
- }],
342
- timeline_variables: [
343
- {a:1},
344
- {a:2}
345
- ],
346
- conditional_function: function(){
347
- conditional_count++;
348
- return true;
349
- }
350
- }
351
-
352
- jsPsych.init({
353
- timeline: [trial]
354
- });
355
-
356
- expect(conditional_count).toBe(1);
357
-
358
- // first trial
359
- utils.pressKey('a');
360
-
361
- expect(conditional_count).toBe(1);
362
-
363
- // second trial
364
- utils.pressKey('a');
365
-
366
- expect(conditional_count).toBe(1);
367
- })
368
-
369
- test('timeline variables from nested timelines are available', function(){
370
- var trial = {
371
- type: 'html-keyboard-response',
372
- stimulus: 'foo'
373
- }
374
-
375
- var trial2 = {
376
- type: 'html-keyboard-response',
377
- stimulus: jsPsych.timelineVariable('word')
378
- }
379
-
380
- var innertimeline = {
381
- timeline: [trial],
382
- conditional_function: function(){
383
- if(jsPsych.timelineVariable('word') == 'b'){
384
- return false;
385
- } else {
386
- return true;
387
- }
388
- }
389
- }
390
-
391
- var outertimeline = {
392
- timeline: [trial2, innertimeline],
393
- timeline_variables: [
394
- {word: 'a'},
395
- {word: 'b'},
396
- {word: 'c'}
397
- ]
398
- }
399
-
400
- jsPsych.init({
401
- timeline: [outertimeline]
402
- });
403
-
404
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('a');
405
- utils.pressKey('a');
406
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
407
- utils.pressKey('a');
408
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('b');
409
- utils.pressKey('a');
410
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('c');
411
- utils.pressKey('a');
412
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
413
- utils.pressKey('a');
414
- });
415
-
416
- });
417
-
418
- describe('endCurrentTimeline', function(){
419
-
420
- test('stops the current timeline, skipping to the end after the trial completes', function(){
421
- var t = {
422
- timeline: [
423
- {
424
- type: 'html-keyboard-response',
425
- stimulus: 'foo',
426
- on_finish: function(){
427
- jsPsych.endCurrentTimeline();
428
- }
429
- },
430
- {
431
- type: 'html-keyboard-response',
432
- stimulus: 'bar'
433
- }
434
- ]
435
- }
436
-
437
- var t2 = {
438
- type: 'html-keyboard-response',
439
- stimulus: 'woo'
440
- }
441
-
442
- jsPsych.init({
443
- timeline: [t, t2]
444
- });
445
-
446
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
447
-
448
- utils.pressKey('a');
449
-
450
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('woo');
451
-
452
- utils.pressKey('a');
453
-
454
- });
455
-
456
- test('works inside nested timelines', function(){
457
- var t = {
458
- timeline: [
459
- {
460
- timeline: [
461
- {
462
- type: 'html-keyboard-response',
463
- stimulus: 'foo',
464
- on_finish: function(){
465
- jsPsych.endCurrentTimeline();
466
- }
467
- },
468
- {
469
- type: 'html-keyboard-response',
470
- stimulus: 'skip me!'
471
- }
472
- ]
473
- },
474
- {
475
- type: 'html-keyboard-response',
476
- stimulus: 'bar'
477
- }
478
- ]
479
- }
480
-
481
- var t2 = {
482
- type: 'html-keyboard-response',
483
- stimulus: 'woo'
484
- }
485
-
486
- jsPsych.init({
487
- timeline: [t, t2]
488
- });
489
-
490
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
491
-
492
- utils.pressKey('a');
493
-
494
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('bar');
495
-
496
- utils.pressKey('a');
497
-
498
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('woo');
499
-
500
- utils.pressKey('a');
501
- })
502
- });
503
-
504
-
505
- describe('nested timelines', function() {
506
- test('works without other parameters', function() {
507
- var t1 = {
508
- type: 'html-keyboard-response',
509
- stimulus: 'foo'
510
- };
511
-
512
- var t2 = {
513
- type: 'html-keyboard-response',
514
- stimulus: 'bar'
515
- };
516
-
517
- var trials = {
518
- timeline: [t1, t2]
519
- };
520
-
521
- jsPsych.init({
522
- timeline: [trials]
523
- });
524
-
525
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
526
-
527
- utils.pressKey('a');
528
-
529
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('bar');
530
-
531
- utils.pressKey('a');
532
-
533
- })
534
- })
535
-
536
- describe('add node to end of timeline', function(){
537
-
538
- test('adds node to end of timeline', function() {
539
- var new_trial = {
540
- type: 'html-keyboard-response',
541
- stimulus: 'bar'
542
- };
543
-
544
- var new_timeline = {
545
- timeline: [new_trial]
546
- };
547
-
548
- var timeline = [
549
- {
550
- type: 'html-keyboard-response',
551
- stimulus: 'foo',
552
- on_start: function() {
553
- jsPsych.addNodeToEndOfTimeline(new_timeline);
554
- }
555
- }
556
- ];
557
-
558
- jsPsych.init({
559
- timeline: timeline
560
- });
561
-
562
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
563
- utils.pressKey('a');
564
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('bar');
565
- utils.pressKey('a');
566
- });
567
-
568
- });
569
-
@@ -1,85 +0,0 @@
1
- const root = '../../';
2
- const utils = require('../testing-utils.js');
3
-
4
- jest.useFakeTimers();
5
-
6
- describe('data conversion to csv', function(){
7
-
8
- beforeEach(function(){
9
- require(root + 'jspsych.js');
10
- require(root + 'plugins/jspsych-survey-text.js');
11
- });
12
-
13
- test('survey-text data response object is correctly converted', function(){
14
- var trial = {
15
- type: 'survey-text',
16
- questions: [
17
- {prompt: 'Q1'},
18
- {prompt: 'Q2'}
19
- ]
20
- }
21
-
22
- var timeline = [trial];
23
-
24
- jsPsych.init({timeline});
25
-
26
- document.querySelector('#input-0').value = 'Response 1';
27
- document.querySelector('#input-1').value = 'Response 2';
28
-
29
- utils.clickTarget(document.querySelector('#jspsych-survey-text-next'));
30
-
31
- var csv_data = jsPsych.data.get().ignore(['rt','internal_node_id', 'time_elapsed', 'trial_type']).csv();
32
- expect(csv_data).toBe('"response","trial_index"\r\n"{""Q0"":""Response 1"",""Q1"":""Response 2""}","0"\r\n');
33
- })
34
-
35
- test('same-different-html stimulus array is correctly converted', function(){
36
- require(root + 'plugins/jspsych-same-different-html.js');
37
-
38
- var trial = {
39
- type: 'same-different-html',
40
- stimuli: ['<p>Climbing</p>', '<p>Walking</p>'],
41
- answer: 'different',
42
- gap_duration: 0,
43
- first_stim_duration: null
44
- }
45
-
46
- var timeline = [trial];
47
-
48
- jsPsych.init({timeline: timeline});
49
-
50
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<p>Climbing</p>');
51
- utils.pressKey('q');
52
- jest.runAllTimers();
53
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('<p>Walking</p>');
54
- utils.pressKey('q');
55
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
56
-
57
- var csv_data = jsPsych.data.get().ignore(['rt','internal_node_id','time_elapsed','trial_type','rt_stim1','response_stim1']).csv();
58
- expect(csv_data).toBe('"answer","correct","stimulus","response","trial_index"\r\n"different","false","[""<p>Climbing</p>"",""<p>Walking</p>""]","q","0"\r\n')
59
- })
60
-
61
- test('survey-multi-select response array is correctly converted', function(){
62
- require(root + 'plugins/jspsych-survey-multi-select.js');
63
-
64
- var trial = {
65
- type: 'survey-multi-select',
66
- questions: [
67
- {prompt: "foo", options: ["fuzz", "bizz", "bar"], name: 'q'}
68
- ]
69
- };
70
-
71
- var timeline = [trial];
72
-
73
- jsPsych.init({timeline: timeline});
74
-
75
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('foo');
76
- utils.clickTarget(document.querySelector('#jspsych-survey-multi-select-response-0-0'));
77
- utils.clickTarget(document.querySelector('#jspsych-survey-multi-select-response-0-1'));
78
- utils.clickTarget(document.querySelector('#jspsych-survey-multi-select-next'));
79
- expect(jsPsych.getDisplayElement().innerHTML).toBe('');
80
-
81
- var csv_data = jsPsych.data.get().ignore(['rt','internal_node_id','time_elapsed','trial_type','question_order']).csv();
82
- expect(csv_data).toBe('"response","trial_index"\r\n"{""q"":[""fuzz"",""bizz""]}","0"\r\n')
83
- })
84
-
85
- });