jspsych 6.2.0 → 7.1.0

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 (360) hide show
  1. package/README.md +43 -29
  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 -661
  59. package/docs/core_library/jspsych-data.md +0 -589
  60. package/docs/core_library/jspsych-pluginAPI.md +0 -510
  61. package/docs/core_library/jspsych-randomization.md +0 -397
  62. package/docs/core_library/jspsych-turk.md +0 -102
  63. package/docs/img/blue.png +0 -0
  64. package/docs/img/folder-setup.png +0 -0
  65. package/docs/img/folder-with-html.png +0 -0
  66. package/docs/img/githubreleases.jpg +0 -0
  67. package/docs/img/jspsych-favicon.png +0 -0
  68. package/docs/img/jspsych-logo-no-text-mono.svg +0 -493
  69. package/docs/img/jspsych-logo.jpg +0 -0
  70. package/docs/img/orange.png +0 -0
  71. package/docs/img/palmer_stim.png +0 -0
  72. package/docs/img/progress_bar.png +0 -0
  73. package/docs/img/visual_search_example.jpg +0 -0
  74. package/docs/index.md +0 -9
  75. package/docs/overview/browser-device-support.md +0 -35
  76. package/docs/overview/callbacks.md +0 -140
  77. package/docs/overview/data.md +0 -281
  78. package/docs/overview/exclude-browser.md +0 -32
  79. package/docs/overview/experiment-options.md +0 -121
  80. package/docs/overview/fullscreen.md +0 -36
  81. package/docs/overview/media-preloading.md +0 -91
  82. package/docs/overview/mturk.md +0 -77
  83. package/docs/overview/progress-bar.md +0 -110
  84. package/docs/overview/record-browser-interactions.md +0 -23
  85. package/docs/overview/running-experiments.md +0 -95
  86. package/docs/overview/timeline.md +0 -387
  87. package/docs/overview/trial.md +0 -142
  88. package/docs/plugins/creating-a-plugin.md +0 -79
  89. package/docs/plugins/jspsych-animation.md +0 -40
  90. package/docs/plugins/jspsych-audio-button-response.md +0 -60
  91. package/docs/plugins/jspsych-audio-keyboard-response.md +0 -58
  92. package/docs/plugins/jspsych-audio-slider-response.md +0 -53
  93. package/docs/plugins/jspsych-call-function.md +0 -81
  94. package/docs/plugins/jspsych-canvas-button-response.md +0 -66
  95. package/docs/plugins/jspsych-canvas-keyboard-response.md +0 -68
  96. package/docs/plugins/jspsych-canvas-slider-response.md +0 -89
  97. package/docs/plugins/jspsych-categorize-animation.md +0 -60
  98. package/docs/plugins/jspsych-categorize-html.md +0 -52
  99. package/docs/plugins/jspsych-categorize-image.md +0 -53
  100. package/docs/plugins/jspsych-cloze.md +0 -45
  101. package/docs/plugins/jspsych-external-html.md +0 -70
  102. package/docs/plugins/jspsych-free-sort.md +0 -55
  103. package/docs/plugins/jspsych-fullscreen.md +0 -57
  104. package/docs/plugins/jspsych-html-button-response.md +0 -42
  105. package/docs/plugins/jspsych-html-keyboard-response.md +0 -51
  106. package/docs/plugins/jspsych-html-slider-response.md +0 -45
  107. package/docs/plugins/jspsych-iat-html.md +0 -64
  108. package/docs/plugins/jspsych-iat-image.md +0 -64
  109. package/docs/plugins/jspsych-image-button-response.md +0 -46
  110. package/docs/plugins/jspsych-image-keyboard-response.md +0 -57
  111. package/docs/plugins/jspsych-image-slider-response.md +0 -52
  112. package/docs/plugins/jspsych-instructions.md +0 -58
  113. package/docs/plugins/jspsych-maxdiff.md +0 -42
  114. package/docs/plugins/jspsych-rdk.md +0 -119
  115. package/docs/plugins/jspsych-reconstruction.md +0 -48
  116. package/docs/plugins/jspsych-resize.md +0 -39
  117. package/docs/plugins/jspsych-same-different-html.md +0 -53
  118. package/docs/plugins/jspsych-same-different-image.md +0 -66
  119. package/docs/plugins/jspsych-serial-reaction-time-mouse.md +0 -50
  120. package/docs/plugins/jspsych-serial-reaction-time.md +0 -57
  121. package/docs/plugins/jspsych-survey-html-form.md +0 -50
  122. package/docs/plugins/jspsych-survey-likert.md +0 -70
  123. package/docs/plugins/jspsych-survey-multi-choice.md +0 -48
  124. package/docs/plugins/jspsych-survey-multi-select.md +0 -53
  125. package/docs/plugins/jspsych-survey-text.md +0 -63
  126. package/docs/plugins/jspsych-video-button-response.md +0 -52
  127. package/docs/plugins/jspsych-video-keyboard-response.md +0 -48
  128. package/docs/plugins/jspsych-video-slider-response.md +0 -58
  129. package/docs/plugins/jspsych-visual-search-circle.md +0 -52
  130. package/docs/plugins/jspsych-vsl-animate-occlusion.md +0 -55
  131. package/docs/plugins/jspsych-vsl-grid-scene.md +0 -62
  132. package/docs/plugins/overview.md +0 -111
  133. package/docs/tutorials/hello-world.md +0 -144
  134. package/docs/tutorials/rt-task.md +0 -1107
  135. package/examples/add-to-end-of-timeline.html +0 -32
  136. package/examples/conditional-and-loop-functions.html +0 -63
  137. package/examples/css/jquery-ui.css +0 -1225
  138. package/examples/data-add-properties.html +0 -40
  139. package/examples/data-as-function.html +0 -36
  140. package/examples/data-from-timeline.html +0 -45
  141. package/examples/data-from-url.html +0 -21
  142. package/examples/demo-flanker.html +0 -108
  143. package/examples/demo-simple-rt-task.html +0 -104
  144. package/examples/demos/demo_1.html +0 -29
  145. package/examples/demos/demo_2.html +0 -43
  146. package/examples/demos/demo_3.html +0 -58
  147. package/examples/display-element-to-embed-experiment.html +0 -73
  148. package/examples/end-active-node.html +0 -52
  149. package/examples/end-experiment.html +0 -43
  150. package/examples/exclusions.html +0 -32
  151. package/examples/external_html/simple_consent.html +0 -4
  152. package/examples/img/1.gif +0 -0
  153. package/examples/img/10.gif +0 -0
  154. package/examples/img/11.gif +0 -0
  155. package/examples/img/12.gif +0 -0
  156. package/examples/img/2.gif +0 -0
  157. package/examples/img/3.gif +0 -0
  158. package/examples/img/4.gif +0 -0
  159. package/examples/img/5.gif +0 -0
  160. package/examples/img/6.gif +0 -0
  161. package/examples/img/7.gif +0 -0
  162. package/examples/img/8.gif +0 -0
  163. package/examples/img/9.gif +0 -0
  164. package/examples/img/age/of1.jpg +0 -0
  165. package/examples/img/age/of2.jpg +0 -0
  166. package/examples/img/age/of3.jpg +0 -0
  167. package/examples/img/age/om1.jpg +0 -0
  168. package/examples/img/age/om2.jpg +0 -0
  169. package/examples/img/age/om3.jpg +0 -0
  170. package/examples/img/age/yf1.jpg +0 -0
  171. package/examples/img/age/yf4.jpg +0 -0
  172. package/examples/img/age/yf5.jpg +0 -0
  173. package/examples/img/age/ym2.jpg +0 -0
  174. package/examples/img/age/ym3.jpg +0 -0
  175. package/examples/img/age/ym5.jpg +0 -0
  176. package/examples/img/backwardN.gif +0 -0
  177. package/examples/img/blue.png +0 -0
  178. package/examples/img/con1.png +0 -0
  179. package/examples/img/con2.png +0 -0
  180. package/examples/img/fixation.gif +0 -0
  181. package/examples/img/happy_face_1.jpg +0 -0
  182. package/examples/img/happy_face_2.jpg +0 -0
  183. package/examples/img/happy_face_3.jpg +0 -0
  184. package/examples/img/happy_face_4.jpg +0 -0
  185. package/examples/img/inc1.png +0 -0
  186. package/examples/img/inc2.png +0 -0
  187. package/examples/img/normalN.gif +0 -0
  188. package/examples/img/orange.png +0 -0
  189. package/examples/img/redX.png +0 -0
  190. package/examples/img/ribbon.jpg +0 -0
  191. package/examples/img/sad_face_1.jpg +0 -0
  192. package/examples/img/sad_face_2.jpg +0 -0
  193. package/examples/img/sad_face_3.jpg +0 -0
  194. package/examples/img/sad_face_4.jpg +0 -0
  195. package/examples/js/snap.svg-min.js +0 -21
  196. package/examples/jspsych-RDK.html +0 -58
  197. package/examples/jspsych-animation.html +0 -33
  198. package/examples/jspsych-audio-button-response.html +0 -52
  199. package/examples/jspsych-audio-keyboard-response.html +0 -62
  200. package/examples/jspsych-audio-slider-response.html +0 -55
  201. package/examples/jspsych-call-function.html +0 -32
  202. package/examples/jspsych-canvas-button-response.html +0 -95
  203. package/examples/jspsych-canvas-keyboard-response.html +0 -78
  204. package/examples/jspsych-canvas-slider-response.html +0 -67
  205. package/examples/jspsych-categorize-animation.html +0 -46
  206. package/examples/jspsych-categorize-html.html +0 -38
  207. package/examples/jspsych-categorize-image.html +0 -38
  208. package/examples/jspsych-cloze.html +0 -42
  209. package/examples/jspsych-free-sort.html +0 -97
  210. package/examples/jspsych-fullscreen.html +0 -44
  211. package/examples/jspsych-html-button-response.html +0 -46
  212. package/examples/jspsych-html-keyboard-response.html +0 -42
  213. package/examples/jspsych-html-slider-response.html +0 -53
  214. package/examples/jspsych-iat.html +0 -510
  215. package/examples/jspsych-image-button-response.html +0 -84
  216. package/examples/jspsych-image-keyboard-response.html +0 -78
  217. package/examples/jspsych-image-slider-response.html +0 -76
  218. package/examples/jspsych-instructions.html +0 -37
  219. package/examples/jspsych-maxdiff.html +0 -33
  220. package/examples/jspsych-reconstruction.html +0 -43
  221. package/examples/jspsych-resize.html +0 -34
  222. package/examples/jspsych-same-different-html.html +0 -28
  223. package/examples/jspsych-same-different-image.html +0 -33
  224. package/examples/jspsych-serial-reaction-time-mouse.html +0 -98
  225. package/examples/jspsych-serial-reaction-time.html +0 -54
  226. package/examples/jspsych-survey-html-form.html +0 -33
  227. package/examples/jspsych-survey-likert.html +0 -42
  228. package/examples/jspsych-survey-multi-choice.html +0 -40
  229. package/examples/jspsych-survey-multi-select.html +0 -42
  230. package/examples/jspsych-survey-text.html +0 -34
  231. package/examples/jspsych-video-button-response.html +0 -57
  232. package/examples/jspsych-video-keyboard-response.html +0 -53
  233. package/examples/jspsych-video-slider-response.html +0 -55
  234. package/examples/jspsych-visual-search-circle.html +0 -58
  235. package/examples/jspsych-vsl-animate-occlusion.html +0 -29
  236. package/examples/jspsych-vsl-grid-scene.html +0 -41
  237. package/examples/lexical-decision.html +0 -132
  238. package/examples/manual-preloading.html +0 -53
  239. package/examples/pause-unpause.html +0 -33
  240. package/examples/progress-bar.html +0 -62
  241. package/examples/sound/hammer.mp3 +0 -0
  242. package/examples/sound/sound.mp3 +0 -0
  243. package/examples/sound/speech_blue.mp3 +0 -0
  244. package/examples/sound/speech_green.mp3 +0 -0
  245. package/examples/sound/speech_joke.mp3 +0 -0
  246. package/examples/sound/speech_red.mp3 +0 -0
  247. package/examples/sound/tone.mp3 +0 -0
  248. package/examples/timeline-variables-sampling.html +0 -50
  249. package/examples/timeline-variables.html +0 -55
  250. package/examples/video/sample_video.mp4 +0 -0
  251. package/jspsych.js +0 -2796
  252. package/license.txt +0 -21
  253. package/mkdocs.yml +0 -104
  254. package/plugins/jspsych-animation.js +0 -189
  255. package/plugins/jspsych-audio-button-response.js +0 -247
  256. package/plugins/jspsych-audio-keyboard-response.js +0 -204
  257. package/plugins/jspsych-audio-slider-response.js +0 -262
  258. package/plugins/jspsych-call-function.js +0 -58
  259. package/plugins/jspsych-canvas-button-response.js +0 -199
  260. package/plugins/jspsych-canvas-keyboard-response.js +0 -155
  261. package/plugins/jspsych-canvas-slider-response.js +0 -207
  262. package/plugins/jspsych-categorize-animation.js +0 -266
  263. package/plugins/jspsych-categorize-html.js +0 -220
  264. package/plugins/jspsych-categorize-image.js +0 -222
  265. package/plugins/jspsych-cloze.js +0 -112
  266. package/plugins/jspsych-external-html.js +0 -112
  267. package/plugins/jspsych-free-sort.js +0 -444
  268. package/plugins/jspsych-fullscreen.js +0 -104
  269. package/plugins/jspsych-html-button-response.js +0 -188
  270. package/plugins/jspsych-html-keyboard-response.js +0 -149
  271. package/plugins/jspsych-html-slider-response.js +0 -202
  272. package/plugins/jspsych-iat-html.js +0 -284
  273. package/plugins/jspsych-iat-image.js +0 -286
  274. package/plugins/jspsych-image-button-response.js +0 -311
  275. package/plugins/jspsych-image-keyboard-response.js +0 -247
  276. package/plugins/jspsych-image-slider-response.js +0 -353
  277. package/plugins/jspsych-instructions.js +0 -237
  278. package/plugins/jspsych-maxdiff.js +0 -174
  279. package/plugins/jspsych-rdk.js +0 -1373
  280. package/plugins/jspsych-reconstruction.js +0 -134
  281. package/plugins/jspsych-resize.js +0 -166
  282. package/plugins/jspsych-same-different-html.js +0 -168
  283. package/plugins/jspsych-same-different-image.js +0 -169
  284. package/plugins/jspsych-serial-reaction-time-mouse.js +0 -213
  285. package/plugins/jspsych-serial-reaction-time.js +0 -247
  286. package/plugins/jspsych-survey-html-form.js +0 -171
  287. package/plugins/jspsych-survey-likert.js +0 -195
  288. package/plugins/jspsych-survey-multi-choice.js +0 -208
  289. package/plugins/jspsych-survey-multi-select.js +0 -232
  290. package/plugins/jspsych-survey-text.js +0 -185
  291. package/plugins/jspsych-video-button-response.js +0 -320
  292. package/plugins/jspsych-video-keyboard-response.js +0 -279
  293. package/plugins/jspsych-video-slider-response.js +0 -351
  294. package/plugins/jspsych-visual-search-circle.js +0 -259
  295. package/plugins/jspsych-vsl-animate-occlusion.js +0 -196
  296. package/plugins/jspsych-vsl-grid-scene.js +0 -103
  297. package/plugins/template/jspsych-plugin-template.js +0 -35
  298. package/tests/README.md +0 -7
  299. package/tests/jsPsych/default-iti.test.js +0 -51
  300. package/tests/jsPsych/default-parameters.test.js +0 -58
  301. package/tests/jsPsych/endexperiment.test.js +0 -49
  302. package/tests/jsPsych/events.test.js +0 -369
  303. package/tests/jsPsych/init.test.js +0 -48
  304. package/tests/jsPsych/loads.test.js +0 -7
  305. package/tests/jsPsych/min-rt.test.js +0 -58
  306. package/tests/jsPsych/progressbar.test.js +0 -202
  307. package/tests/jsPsych/timeline-variables.test.js +0 -254
  308. package/tests/jsPsych/timelines.test.js +0 -498
  309. package/tests/jsPsych.data/datacollection.test.js +0 -116
  310. package/tests/jsPsych.data/datacolumn.test.js +0 -50
  311. package/tests/jsPsych.data/datamodule.test.js +0 -152
  312. package/tests/jsPsych.data/dataparameter.test.js +0 -251
  313. package/tests/jsPsych.data/interactions.test.js +0 -109
  314. package/tests/jsPsych.pluginAPI/pluginapi.test.js +0 -144
  315. package/tests/jsPsych.randomization/randomziation.test.js +0 -27
  316. package/tests/jsPsych.utils/utils.test.js +0 -58
  317. package/tests/media/blue.png +0 -0
  318. package/tests/media/orange.png +0 -0
  319. package/tests/media/sample_video.mp4 +0 -0
  320. package/tests/media/sound.mp3 +0 -0
  321. package/tests/plugins/plugin-animation.test.js +0 -35
  322. package/tests/plugins/plugin-audio-button-response.test.js +0 -15
  323. package/tests/plugins/plugin-audio-keyboard-response.test.js +0 -15
  324. package/tests/plugins/plugin-audio-slider-response.test.js +0 -15
  325. package/tests/plugins/plugin-call-function.test.js +0 -49
  326. package/tests/plugins/plugin-categorize-animation.test.js +0 -274
  327. package/tests/plugins/plugin-categorize-html.test.js +0 -17
  328. package/tests/plugins/plugin-categorize-image.test.js +0 -17
  329. package/tests/plugins/plugin-cloze.test.js +0 -140
  330. package/tests/plugins/plugin-free-sort.test.js +0 -112
  331. package/tests/plugins/plugin-fullscreen.test.js +0 -41
  332. package/tests/plugins/plugin-html-button-response.test.js +0 -161
  333. package/tests/plugins/plugin-html-keyboard-response.test.js +0 -139
  334. package/tests/plugins/plugin-html-slider-response.test.js +0 -155
  335. package/tests/plugins/plugin-iat-html.test.js +0 -328
  336. package/tests/plugins/plugin-iat-image.test.js +0 -308
  337. package/tests/plugins/plugin-image-button-response.test.js +0 -183
  338. package/tests/plugins/plugin-image-keyboard-response.test.js +0 -154
  339. package/tests/plugins/plugin-image-slider-response.test.js +0 -183
  340. package/tests/plugins/plugin-instructions.test.js +0 -66
  341. package/tests/plugins/plugin-maxdiff.test.js +0 -39
  342. package/tests/plugins/plugin-rdk.test.js +0 -17
  343. package/tests/plugins/plugin-reconstruction.test.js +0 -16
  344. package/tests/plugins/plugin-resize.test.js +0 -16
  345. package/tests/plugins/plugin-same-different-html.test.js +0 -17
  346. package/tests/plugins/plugin-same-different-image.test.js +0 -17
  347. package/tests/plugins/plugin-serial-reaction-time-mouse.test.js +0 -42
  348. package/tests/plugins/plugin-serial-reaction-time.test.js +0 -69
  349. package/tests/plugins/plugin-survey-html-form.test.js +0 -44
  350. package/tests/plugins/plugin-survey-likert.test.js +0 -48
  351. package/tests/plugins/plugin-survey-multi-choice.test.js +0 -48
  352. package/tests/plugins/plugin-survey-multi-select.test.js +0 -72
  353. package/tests/plugins/plugin-survey-text.test.js +0 -115
  354. package/tests/plugins/plugin-video-button-response.test.js +0 -35
  355. package/tests/plugins/plugin-video-keyboard-response.test.js +0 -35
  356. package/tests/plugins/plugin-video-slider-response.test.js +0 -34
  357. package/tests/plugins/plugin-visual-search-circle.test.js +0 -16
  358. package/tests/plugins/plugin-vsl-animate-occlusion.test.js +0 -16
  359. package/tests/plugins/plugin-vsl-grid-scene.test.js +0 -16
  360. package/tests/testing-utils.js +0 -13
@@ -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(32);
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(32);
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(32);
56
-
57
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('25%');
58
-
59
- utils.pressKey(32);
60
-
61
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('50%');
62
-
63
- utils.pressKey(32);
64
-
65
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('75%');
66
-
67
- utils.pressKey(32);
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(32);
88
-
89
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
90
-
91
- utils.pressKey(32);
92
-
93
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
94
-
95
- utils.pressKey(32);
96
-
97
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
98
-
99
- utils.pressKey(32);
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(32);
131
-
132
- expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('20%');
133
-
134
- utils.pressKey(32);
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(32);
164
-
165
- expect(jsPsych.getProgressBarCompleted()).toBe(0.2);
166
-
167
- utils.pressKey(32);
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(32);
185
-
186
- expect(jsPsych.getProgressBarCompleted()).toBe(0.25);
187
-
188
- utils.pressKey(32);
189
-
190
- expect(jsPsych.getProgressBarCompleted()).toBe(0.50);
191
-
192
- utils.pressKey(32);
193
-
194
- expect(jsPsych.getProgressBarCompleted()).toBe(0.75);
195
-
196
- utils.pressKey(32);
197
-
198
- expect(jsPsych.getProgressBarCompleted()).toBe(1);
199
-
200
- });
201
-
202
- });
@@ -1,254 +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('randomize order', function(){
10
- test('holder', function(){
11
- expect(true).toBe(true);
12
- });
13
- });
14
-
15
- describe('repetitons', function(){
16
- test('holder', function(){
17
- expect(true).toBe(true);
18
- });
19
- });
20
-
21
- describe('sampling', function(){
22
- test('holder', function(){
23
- expect(true).toBe(true);
24
- });
25
-
26
- test('alternate-groups method produces alternating groups', function(){
27
- var trial = {
28
- timeline: [{
29
- type: 'html-keyboard-response',
30
- stimulus: jsPsych.timelineVariable('stimulus')
31
- }],
32
- timeline_variables: [
33
- {stimulus: 'a'},
34
- {stimulus: 'a'},
35
- {stimulus: 'b'},
36
- {stimulus: 'b'},
37
- {stimulus: 'c'},
38
- {stimulus: 'c'}
39
- ],
40
- sample: {
41
- type: 'alternate-groups',
42
- groups: [[0,0,0,0,1,1,1,1],[2,2,2,2,3,3,3,3],[4,4,4,4,5,5,5,5]],
43
- randomize_group_order: true
44
- }
45
- }
46
-
47
- jsPsych.init({timeline: [trial]});
48
- var last = jsPsych.getDisplayElement().innerHTML;
49
- for(var i=0;i<23;i++){
50
- utils.pressKey(32);
51
- var curr = jsPsych.getDisplayElement().innerHTML;
52
- expect(last).not.toMatch(curr);
53
- last = curr;
54
- }
55
- utils.pressKey(32);
56
- })
57
-
58
- test('sampling functions run when timeline loops', function(){
59
-
60
- var count = 0;
61
- const reps = 100;
62
-
63
- var trial = {
64
- timeline: [{
65
- type: 'html-keyboard-response',
66
- stimulus: jsPsych.timelineVariable('stimulus')
67
- }],
68
- timeline_variables: [
69
- {stimulus: '1'},
70
- {stimulus: '2'},
71
- {stimulus: '3'}
72
- ],
73
- sample: {
74
- type: 'without-replacement',
75
- size: 1
76
- },
77
- loop_function: function(){
78
- count++;
79
- return(count < reps);
80
- }
81
- }
82
-
83
- jsPsych.init({
84
- timeline: [trial]
85
- });
86
-
87
- var result_1 = [];
88
- var result_2 = [];
89
- for(var i=0; i<reps/2; i++){
90
- var html = jsPsych.getDisplayElement().innerHTML;
91
- result_1.push(html);
92
- utils.pressKey(32);
93
- var html = jsPsych.getDisplayElement().innerHTML;
94
- result_2.push(html);
95
- utils.pressKey(32);
96
- }
97
-
98
- expect(result_1).not.toEqual(result_2);
99
- });
100
- });
101
-
102
- describe('timeline variables are correctly evaluated', function(){
103
- test('when used as trial type parameter', function(){
104
- require(root + 'plugins/jspsych-html-button-response.js');
105
-
106
- var tvs = [
107
- {type: 'html-keyboard-response'},
108
- {type: 'html-button-response'}
109
- ]
110
-
111
- var timeline = [];
112
-
113
- timeline.push({
114
- timeline: [{
115
- type: jsPsych.timelineVariable('type'),
116
- stimulus: 'hello',
117
- choices: ['a','b']
118
- }],
119
- timeline_variables: tvs
120
- });
121
-
122
- jsPsych.init({
123
- timeline: timeline
124
- });
125
-
126
- expect(jsPsych.getDisplayElement().innerHTML).not.toMatch('button');
127
-
128
- utils.pressKey(65); // 'a'
129
-
130
- expect(jsPsych.getDisplayElement().innerHTML).toMatch('button');
131
- });
132
-
133
- test('when used with a plugin that has a FUNCTION parameter type', function(done){
134
- require(root + 'plugins/jspsych-call-function.js');
135
-
136
- const mockFn = jest.fn();
137
-
138
- var tvs = [
139
- {fn: function() { mockFn('1'); }},
140
- {fn: function() { mockFn('2'); }}
141
- ];
142
-
143
- var timeline = [];
144
-
145
- timeline.push({
146
- timeline: [{
147
- type: 'call-function',
148
- func: jsPsych.timelineVariable('fn')
149
- }],
150
- timeline_variables: tvs
151
- });
152
-
153
- jsPsych.init({
154
- timeline: timeline,
155
- on_finish: function(){
156
- expect(mockFn.mock.calls.length).toBe(2);
157
- done();
158
- }
159
- });
160
-
161
-
162
- });
163
-
164
- test('custom sampling returns correct trials', function(){
165
-
166
- var tvs = [
167
- {id: 0},
168
- {id: 1},
169
- {id: 2},
170
- {id: 3}
171
- ]
172
-
173
- var timeline = [];
174
-
175
- timeline.push({
176
- timeline: [{
177
- type: 'html-keyboard-response',
178
- stimulus: 'foo',
179
- data: {
180
- id: jsPsych.timelineVariable('id')
181
- }
182
- }],
183
- timeline_variables: tvs,
184
- sample: {
185
- type: 'custom',
186
- fn: function(){
187
- return [2,0];
188
- }
189
- }
190
- });
191
-
192
- jsPsych.init({
193
- timeline: timeline
194
- });
195
-
196
- utils.pressKey(65);
197
- utils.pressKey(65);
198
- expect(jsPsych.data.get().select('id').values).toEqual([2,0]);
199
-
200
- });
201
-
202
- test('custom sampling works with a loop', function(){
203
-
204
- var tvs = [
205
- {id: 0},
206
- {id: 1},
207
- {id: 2},
208
- {id: 3}
209
- ]
210
-
211
- var timeline = [];
212
- var reps = 0;
213
- var sample = 3;
214
-
215
- timeline.push({
216
- timeline: [{
217
- type: 'html-keyboard-response',
218
- stimulus: 'foo',
219
- data: {
220
- id: jsPsych.timelineVariable('id')
221
- }
222
- }],
223
- timeline_variables: tvs,
224
- sample: {
225
- type: 'custom',
226
- fn: function(){
227
- return [sample];
228
- }
229
- },
230
- loop_function: function(){
231
- reps++;
232
- if(reps < 4){
233
- sample = 3-reps;
234
- return true;
235
- } else {
236
- return false;
237
- }
238
- }
239
- });
240
-
241
- jsPsych.init({
242
- timeline: timeline
243
- });
244
-
245
- utils.pressKey(65);
246
- utils.pressKey(65);
247
- utils.pressKey(65);
248
- utils.pressKey(65);
249
- expect(jsPsych.data.get().select('id').values).toEqual([3,2,1,0]);
250
-
251
- });
252
-
253
-
254
- })