dualmode.js
116 lines
| 4.0 KiB
| application/javascript
|
JavascriptLexer
Jonathan Frederic
|
r15914 | // Test the notebook dual mode feature. | ||
// Test | ||||
casper.notebook_test(function () { | ||||
Jonathan Frederic
|
r15928 | var a = 'print("a")'; | ||
var index = this.append_cell(a); | ||||
Jonathan Frederic
|
r15914 | this.execute_cell_then(index); | ||
Jonathan Frederic
|
r15928 | |||
var b = 'print("b")'; | ||||
index = this.append_cell(b); | ||||
Jonathan Frederic
|
r15914 | this.execute_cell_then(index); | ||
Jonathan Frederic
|
r15928 | |||
var c = 'print("c")'; | ||||
index = this.append_cell(c); | ||||
Jonathan Frederic
|
r15914 | this.execute_cell_then(index); | ||
this.then(function () { | ||||
Jonathan Frederic
|
r16841 | if (this.slimerjs) { | ||
// When running in xvfb, the Slimer window doesn't always have focus | ||||
jon
|
r16861 | // immediately. By clicking on a new element on the page we can force | ||
Jonathan Frederic
|
r16841 | // it to gain focus. | ||
this.click_cell_editor(1); | ||||
this.click_cell_editor(0); | ||||
} | ||||
Jonathan Frederic
|
r16838 | |||
this.validate_notebook_state('initial state', 'edit', 0); | ||||
Jonathan Frederic
|
r15915 | this.trigger_keydown('esc'); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('esc', 'command', 0); | ||
Jonathan Frederic
|
r15915 | this.trigger_keydown('down'); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('down', 'command', 1); | ||
Jonathan Frederic
|
r15915 | this.trigger_keydown('enter'); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('enter', 'edit', 1); | ||
Jonathan Frederic
|
r15915 | this.trigger_keydown('j'); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('j in edit mode', 'edit', 1); | ||
Jonathan Frederic
|
r15915 | this.trigger_keydown('esc'); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('esc', 'command', 1); | ||
Jonathan Frederic
|
r15915 | this.trigger_keydown('j'); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('j in command mode', 'command', 2); | ||
Jonathan Frederic
|
r15926 | this.click_cell_editor(0); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('click cell 0', 'edit', 0); | ||
Jonathan Frederic
|
r15926 | this.click_cell_editor(3); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('click cell 3', 'edit', 3); | ||
Jonathan Frederic
|
r15915 | this.trigger_keydown('esc'); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('esc', 'command', 3); | ||
Jonathan Frederic
|
r15914 | |||
// Open keyboard help | ||||
this.evaluate(function(){ | ||||
$('#keyboard_shortcuts a').click(); | ||||
}, {}); | ||||
Jonathan Frederic
|
r16988 | }); | ||
Jonathan Frederic
|
r16989 | |||
Jonathan Frederic
|
r16988 | // Wait for the dialog to fade in completely. | ||
Jonathan Frederic
|
r16989 | this.waitForSelector('div.modal', function() { | ||
this.evaluate(function(){ | ||||
IPython.modal_shown = false; | ||||
$('div.modal').on('shown.bs.modal', function (){ | ||||
IPython.modal_shown = true; | ||||
}); | ||||
$('div.modal').on('hidden.bs.modal', function (){ | ||||
IPython.modal_shown = false; | ||||
}); | ||||
}); | ||||
}); | ||||
Jonathan Frederic
|
r15914 | |||
Jonathan Frederic
|
r16989 | this.waitFor(function () { | ||
return this.evaluate(function(){ | ||||
return IPython.modal_shown; | ||||
}); | ||||
}, | ||||
function() { | ||||
Jonathan Frederic
|
r15915 | this.trigger_keydown('k'); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('k in command mode while keyboard help is up', 'command', 3); | ||
Jonathan Frederic
|
r15914 | |||
// Close keyboard help | ||||
this.evaluate(function(){ | ||||
Jonathan Frederic
|
r16988 | $('div.modal-footer button.btn-default').click(); | ||
Jonathan Frederic
|
r15914 | }, {}); | ||
Jonathan Frederic
|
r16988 | }); | ||
Jonathan Frederic
|
r16989 | |||
Jonathan Frederic
|
r16988 | // Wait for the dialog to fade out completely. | ||
Jonathan Frederic
|
r16989 | this.waitFor(function () { | ||
return this.evaluate(function(){ | ||||
return !IPython.modal_shown; | ||||
}); | ||||
}, | ||||
function() { | ||||
Jonathan Frederic
|
r15914 | |||
Jonathan Frederic
|
r15915 | this.trigger_keydown('k'); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('k in command mode', 'command', 2); | ||
Jonathan Frederic
|
r15926 | this.click_cell_editor(0); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('click cell 0', 'edit', 0); | ||
Jonathan Frederic
|
r15914 | this.focus_notebook(); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('focus #notebook', 'command', 0); | ||
Jonathan Frederic
|
r15926 | this.click_cell_editor(0); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('click cell 0', 'edit', 0); | ||
Jonathan Frederic
|
r15914 | this.focus_notebook(); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('focus #notebook', 'command', 0); | ||
Jonathan Frederic
|
r15926 | this.click_cell_editor(3); | ||
Jonathan Frederic
|
r15934 | this.validate_notebook_state('click cell 3', 'edit', 3); | ||
Jonathan Frederic
|
r15922 | |||
Jonathan Frederic
|
r15928 | // Cell deletion | ||
Jonathan Frederic
|
r15936 | this.trigger_keydown('esc', 'd', 'd'); | ||
this.test.assertEquals(this.get_cells_length(), 3, 'dd actually deletes a cell'); | ||||
this.validate_notebook_state('dd', 'command', 2); | ||||
Jonathan Frederic
|
r15924 | |||
Jonathan Frederic
|
r15928 | // Make sure that if the time between d presses is too long, nothing gets removed. | ||
Jonathan Frederic
|
r15924 | this.trigger_keydown('d'); | ||
Jonathan Frederic
|
r15914 | }); | ||
Jonathan Frederic
|
r15924 | this.wait(1000); | ||
this.then(function () { | ||||
this.trigger_keydown('d'); | ||||
Jonathan Frederic
|
r15936 | this.test.assertEquals(this.get_cells_length(), 3, "d, 1 second wait, d doesn't delete a cell"); | ||
this.validate_notebook_state('d, 1 second wait, d', 'command', 2); | ||||
Jonathan Frederic
|
r15924 | }); | ||
Jonathan Frederic
|
r15914 | }); | ||