const root = '../';
beforeEach(function(){
require(root + 'jspsych.js');
require(root + 'plugins/jspsych-text.js');
});
describe('automatic progress bar', function(){
test('progress bar does not display by default', function(){
var trial = {
type: 'text',
text: 'foo'
}
jsPsych.init({
timeline: [trial]
});
expect(document.querySelector('#jspsych-progressbar-container')).toBe(null);
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32}));
});
test('progress bar displays when show_progress_bar is true', function(){
var trial = {
type: 'text',
text: 'foo'
}
jsPsych.init({
timeline: [trial],
show_progress_bar: true
});
expect(document.querySelector('#jspsych-progressbar-container').innerHTML).toMatch('Completion Progress
');
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32}));
});
test('progress bar automatically updates by default', function(){
var trial = {
type: 'text',
text: 'foo'
}
jsPsych.init({
timeline: [trial, trial, trial, trial],
show_progress_bar: true
});
expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32}));
expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('25%');
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32}));
expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('50%');
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32}));
expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('75%');
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 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: 'text',
text: '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('');
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32}));
expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32}));
expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32}));
expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32}));
expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('');
});
test('setProgressBar() manually', function(){
var trial = {
type: 'text',
text: 'foo',
on_finish: function(){
jsPsych.setProgressBar(0.2);
}
}
var trial_2 = {
type: 'text',
text: '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('');
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32}));
expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('20%');
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32}));
document.querySelector('.jspsych-display-element').dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32}));
expect(document.querySelector('#jspsych-progressbar-inner').style.width).toBe('80%');
});
});