diff --git a/IPython/html/tests/casperjs/test_cases/shutdown_notebook.js b/IPython/html/tests/casperjs/test_cases/shutdown_notebook.js index 6536756..45cc9f1 100644 --- a/IPython/html/tests/casperjs/test_cases/shutdown_notebook.js +++ b/IPython/html/tests/casperjs/test_cases/shutdown_notebook.js @@ -8,22 +8,38 @@ casper.notebook_test(function () { // to just test. //this.test.begin("shutdown tests (notebook)", 2, function(test) { - this.thenEvaluate(function () { - $('#kill_and_exit').click(); - }); - - this.thenEvaluate(function () { - var cell = IPython.notebook.get_cell(0); - cell.set_text('a=10; print(a)'); - cell.execute(); - }); + // Our shutdown test closes the browser window, which will delete the + // casper browser object, and the rest of the test suite will fail with + // errors that look like: + // + // "Error: cannot access member `evaluate' of deleted QObject" + // + // So what we do here is make a quick popup window, and run the test inside + // of it. + this.then(function() { + this.evaluate(function(url){ + window.open(url); + }, {url : this.getCurrentUrl()}); + }) + + this.waitForPopup(''); + this.withPopup('', function () { + this.thenEvaluate(function () { + $('#kill_and_exit').click(); + }); + + this.thenEvaluate(function () { + var cell = IPython.notebook.get_cell(0); + cell.set_text('a=10; print(a)'); + cell.execute(); + }); - // refactor this into just a get_output(0) - this.then(function () { - var result = this.get_output_cell(0); - this.test.assertFalsy(result, "after shutdown: no execution results"); - this.test.assertNot(this.kernel_running(), - 'after shutdown: IPython.notebook.kernel.running is false '); + this.then(function () { + var result = this.get_output_cell(0); + this.test.assertFalsy(result, "after shutdown: no execution results"); + this.test.assertNot(this.kernel_running(), + 'after shutdown: IPython.notebook.kernel.running is false '); + }); }); //}); // end of test.begin