UNPKG

slimerjs-firefox

Version:

This repo includes slimerjs as well as downloads a local copy of Firefox.

240 lines (213 loc) 9.59 kB
describe("WebPage.onError", function(){ var webpage; var url = "http://127.0.0.1:8083/onerror.html"; beforeEach(function() { if (webpage) { return; } webpage = require("webpage").create(); }); it("is called when an error occured on a click in a webpage",function() { var loaded = false; var errorMessage = null; var errorStack = null; webpage.onError = function(msg, stack) { errorMessage = msg; errorStack = stack; } runs(function() { webpage.open(url, function(success){ webpage.sendEvent("click", 15, 15, 'left', 0); setTimeout(function(){ // error message are received asynchronously, wait a bit loaded = true; }, 300); }); }); waitsFor(function(){ return loaded;}, 1000); runs(function(){ expect(errorMessage).toEqual("Error: error on click"); expect(errorStack.length).toEqual(11) expect(errorStack[0].file).toEqual("http://127.0.0.1:8083/onerror.html") expect(errorStack[0].line).toEqual(8) if (slimer.geckoVersion.major > 43) { expect(errorStack[0].column).toEqual(23) } else if (slimer.geckoVersion.major > 32) { expect(errorStack[0].column).toEqual(22) } else if (slimer.geckoVersion.major > 30) { expect(errorStack[0].column).toEqual(16) } expect(errorStack[0]["function"]).toEqual("doError") expect(errorStack[1].file).toEqual("http://127.0.0.1:8083/onerror.html") expect(errorStack[1].line).toEqual(1) expect(errorStack[1]["function"]).toEqual("onclick") }); }); it("is called when an error occured during js evaluation",function() { var loaded = false; var errorMessage = null; var errorStack = null; webpage.onError = function(msg, stack) { errorMessage = msg; errorStack = stack; } runs(function() { webpage.open(url, function(success){ loaded = true; }); }); waitsFor(function(){ return loaded;}, 1000); runs(function(){ var result = webpage.evaluate(function(){ throw new Error("error from evaluate"); }) expect(errorMessage).toEqual("Error: error from evaluate"); expect(errorStack.length).toEqual(3); expect(errorStack[0].file).toEqual("phantomjs://webpage.evaluate()") expect(errorStack[0].line).toEqual(2) expect(errorStack[0]["function"]).toEqual("") expect(errorStack[1].file).toEqual("phantomjs://webpage.evaluate()") expect(errorStack[1].line).toEqual(2) expect(errorStack[1]["function"]).toEqual("") if (slimer.geckoVersion.major > 32) { expect(errorStack[2].file).toEqual("phantomjs://webpage.evaluate()") expect(errorStack[2].line).toEqual(1) expect(errorStack[2]["function"]).toEqual("") } else if (slimer.geckoVersion.major > 24) { expect(errorStack[2].file).toEqual("phantomjs://webpage.evaluate()") expect(errorStack[2].line).toEqual(3) expect(errorStack[2]["function"]).toEqual("") } if (slimer.geckoVersion.major > 43) { expect(errorStack[0].column).toEqual(23) expect(errorStack[1].column).toEqual(23) expect(errorStack[2].column).toEqual(2) } else if (slimer.geckoVersion.major > 32) { expect(errorStack[0].column).toEqual(22) expect(errorStack[1].column).toEqual(23) expect(errorStack[2].column).toEqual(1) } else if (slimer.geckoVersion.major > 29) { expect(errorStack[0].column).toEqual(16) expect(errorStack[1].column).toEqual(17) expect(errorStack[2].column).toEqual(1) } errorMessage = null; errorStack = null; webpage.evaluateJavaScript('(function(){throw new Error("error from evaluateJavascript");})()'); expect(errorMessage).toEqual("Error: error from evaluateJavascript"); expect(errorStack.length).toEqual(3); expect(errorStack[0].file).toEqual("phantomjs://webpage.evaluateJavaScript()") expect(errorStack[0].line).toEqual(1) expect(errorStack[0]["function"]).toEqual("") expect(errorStack[1].file).toEqual("phantomjs://webpage.evaluateJavaScript()") expect(errorStack[1].line).toEqual(1) expect(errorStack[1]["function"]).toEqual("") if (slimer.geckoVersion.major > 24) { expect(errorStack[2].file).toEqual("phantomjs://webpage.evaluateJavaScript()") expect(errorStack[2].line).toEqual(1) expect(errorStack[2]["function"]).toEqual("") } if (slimer.geckoVersion.major > 43) { expect(errorStack[0].column).toEqual(19) expect(errorStack[1].column).toEqual(19) expect(errorStack[2].column).toEqual(2) } else if (slimer.geckoVersion.major > 32) { expect(errorStack[0].column).toEqual(18) expect(errorStack[1].column).toEqual(19) expect(errorStack[2].column).toEqual(2) } else if (slimer.geckoVersion.major > 29) { expect(errorStack[0].column).toEqual(12) expect(errorStack[1].column).toEqual(13) expect(errorStack[2].column).toEqual(2) } errorMessage = null; errorStack = null; webpage.libraryPath += '/wwwfile'; webpage.injectJs('injectdoerror.js'); expect(errorMessage).toEqual("Error: error from injectdoerror.js"); expect(errorStack.length).toEqual(3); expect(errorStack[0].file).toEqual("injectdoerror.js") expect(errorStack[0].line).toEqual(2) expect(errorStack[0]["function"]).toEqual("") expect(errorStack[1].file).toEqual("injectdoerror.js") expect(errorStack[1].line).toEqual(2) expect(errorStack[1]["function"]).toEqual("doInjectError") if (slimer.geckoVersion.major > 24) { expect(errorStack[2].file).toEqual("injectdoerror.js") expect(errorStack[2].line).toEqual(5) expect(errorStack[2]["function"]).toEqual("") } if (slimer.geckoVersion.major > 43) { expect(errorStack[0].column).toEqual(11) expect(errorStack[1].column).toEqual(11) expect(errorStack[2].column).toEqual(1) } else if (slimer.geckoVersion.major > 32) { expect(errorStack[0].column).toEqual(10) expect(errorStack[1].column).toEqual(11) expect(errorStack[2].column).toEqual(1) } else if (slimer.geckoVersion.major > 29) { expect(errorStack[0].column).toEqual(4) expect(errorStack[1].column).toEqual(5) expect(errorStack[2].column).toEqual(1) } }); }); it("is called when an error occured during js inclusion",function() { var loaded = false; var errorMessage = null; var errorStack = null; webpage.onError = function(msg, stack) { errorMessage = msg; errorStack = stack; } runs(function() { webpage.open(url, function(success){ webpage.includeJs("http://127.0.0.1:8083/doerror.js", function() { loaded = true; }); }); }); waitsFor(function(){ return loaded;}, 1000); runs(function(){ expect(errorMessage).toEqual('Error: error from doerror.js'); expect(errorStack.length).toEqual(3) expect(errorStack[0].file).toEqual("http://127.0.0.1:8083/doerror.js") expect(errorStack[0].line).toEqual(2) expect(errorStack[0]["function"]).toEqual("arrrrrg") expect(errorStack[1].file).toEqual("http://127.0.0.1:8083/doerror.js") expect(errorStack[1].line).toEqual(5) expect(errorStack[1]["function"]).toEqual("") webpage.close(); }); }); it("is called during the load of a page",function() { var loaded = false; var errorMessage = null; var errorStack = null; webpage.onError = function(msg, stack) { errorMessage = msg; errorStack = stack; } runs(function() { webpage.open("http://127.0.0.1:8083/typeerror.html", function(success){ loaded = true; }); }); waitsFor(function(){ return loaded;}, 1000); runs(function(){ expect(errorMessage).toEqual("TypeError: \"test\".match(...) is null"); expect(errorStack.length).toEqual(1) expect(errorStack[0].file).toEqual("http://127.0.0.1:8083/typeerror.html"); expect(errorStack[0].line).toEqual(6); webpage.close(); }); }); });