Reputation: 3198
Every test description I have in Jasmine, comes with a afterEach()
that checks if the testcase passed. If it did NOT pass, I want to take a screenshot of the offending test screen.
Sometimes I get an error with a crash report. I am unsure how to debug or fix it to learn more.
afterEach(function() {
var passed = jasmine.getEnv().currentSpec.results().passed();
if (!passed) {
takeScreenCap("FAILEDTESTCASE_" + jasmine.getEnv().currentSpec.description);
}
});
The crash itself
Message:
UnknownError: unknown error: cannot take screenshot
from unknown error: Failed to capture tab: unknown error
JavaScript stack:
Error: Failed to capture tab: unknown error
at checkForExtensionError (chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/background.js:14:17)
at Object.callback (chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/background.js:37:5)
at safeCallbackApply (extensions::sendRequest:21:15)
at handleResponse (extensions::sendRequest:72:7)
(Session info: chrome=44.0.2403.89)
(Driver info: chromedriver=2.15.322455 (ae8db840dac8d0c453355d3d922c91adfb61df8f),platform=Mac OS X 10.10.4 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 27 milliseconds
Build info: version: '2.45.0', revision: '5017cb8', time: '2015-02-26 23:59:50'
System info: host: 'Pro.local', ip: '', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.10.4', java.version: '1.8.0_45'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, chrome={userDataDir=/var/folders/92/10bfp2jx43n468ctgft30gr40000gn/T/.org.chromium.Chromium.KRpAWe}, takesHeapSnapshot=true, databaseEnabled=false, handlesAlerts=true, version=44.0.2403.89, platform=MAC, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 53788da31ca3dbf09e6b9f80525403d9
Stacktrace:
UnknownError: unknown error: cannot take screenshot
from unknown error: Failed to capture tab: unknown error
JavaScript stack:
Error: Failed to capture tab: unknown error
at checkForExtensionError (chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/background.js:14:17)
at Object.callback (chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/background.js:37:5)
at safeCallbackApply (extensions::sendRequest:21:15)
at handleResponse (extensions::sendRequest:72:7)
(Session info: chrome=44.0.2403.89)
(Driver info: chromedriver=2.15.322455 (ae8db840dac8d0c453355d3d922c91adfb61df8f),platform=Mac OS X 10.10.4 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 27 milliseconds
Build info: version: '2.45.0', revision: '5017cb8', time: '2015-02-26 23:59:50'
System info: host: 'Pro.local', ip: '...', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.10.4', java.version: '1.8.0_45'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, chrome={userDataDir=/var/folders/92/10bfp2jx43n468ctgft30gr40000gn/T/.org.chromium.Chromium.KRpAWe}, takesHeapSnapshot=true, databaseEnabled=false, handlesAlerts=true, version=44.0.2403.89, platform=MAC, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 53788da31ca3dbf09e6b9f80525403d9
at Array.forEach (native)
From: Task: Asynchronous test function: afterEach()
Error
Upvotes: 1
Views: 682
Reputation: 473873
I would not reinvent the wheel and use:
protractor-html-screenshot-reporter
(for jasmine1)protractor-jasmine2-screenshot-reporter
(for jasmine2)It would provide you a nice HTML report with screenshots included. If you want to make the screenshots on failures, set use captureOnlyFailedSpecs
to true
:
jasmine.getEnv().addReporter(new HtmlScreenshotReporter({
captureOnlyFailedSpecs: true
}));
Upvotes: 1