const root = '../'; const utils = require('./testing-utils.js'); beforeEach(function(){ require(root + 'jspsych.js'); require(root + 'plugins/jspsych-html-keyboard-response.js'); }); describe('automatic progress bar', function(){ test('progress bar does not display by default', function(){ var trial = { type: 'html-keyboard-response', stimulus: 'foo' } jsPsych.init({ timeline: [trial] }); expect(document.querySelector('#jspsych-progressbar-container')).toBe(null); utils.pressKey(32); }); test('progress bar displays when show_progress_bar is true', function(){ var trial = { type: 'html-keyboard-response', stimulus: 'foo' } jsPsych.init({ timeline: [trial], show_progress_bar: true }); expect(document.querySelector('#jspsych-progressbar-container').innerHTML).toMatch('Completion Progress
'); utils.pressKey(32); }); test('progress bar automatically updates by default', function(){ var trial = { type: 'html-keyboard-response', stimulus: 'foo' } jsPsych.init({ timeline: [trial, trial, trial, trial], show_progress_bar: true }); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe(''); utils.pressKey(32); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('25%'); utils.pressKey(32); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('50%'); utils.pressKey(32); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('75%'); utils.pressKey(32); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('100%'); }); test('progress bar does not automatically update when auto_update_progress_bar is false', function(){ var trial = { type: 'html-keyboard-response', stimulus: 'foo' } jsPsych.init({ timeline: [trial, trial, trial, trial], show_progress_bar: true, auto_update_progress_bar: false }); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe(''); utils.pressKey(32); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe(''); utils.pressKey(32); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe(''); utils.pressKey(32); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe(''); utils.pressKey(32); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe(''); }); test('setProgressBar() manually', function(){ var trial = { type: 'html-keyboard-response', stimulus: 'foo', on_finish: function(){ jsPsych.setProgressBar(0.2); } } var trial_2 = { type: 'html-keyboard-response', stimulus: 'foo', on_finish: function(){ jsPsych.setProgressBar(0.8); } } jsPsych.init({ timeline: [trial, trial_2], show_progress_bar: true, auto_update_progress_bar: false }); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe(''); utils.pressKey(32); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('20%'); utils.pressKey(32); expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('80%'); }); });