Issue
I am working on a Protractor - browserstack framework from scratch.
While using onComplete function as mentioned on the site in conf.ts - https://automate.browserstack.com/dashboard/v2/quick-start/get-started#introduction
// Code to mark the status of test on BrowserStack based on test assertions
onComplete: function (passed) {
if (!passed) {
browser.executeScript('browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"failed","reason": "At least 1 assertion has failed"}}');
}
if (passed) {
browser.executeScript('browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"passed","reason": "All assertions passed"}}');
}
}
I'm getting below error on Console
*Debugger attached. conf.ts:87:1 - error TS2322: Type '(passed: any) => void' is not assignable to type '() => void'. 87 onComplete: function (passed) {
node_modules/protractor/built/config.d.ts:410:5
410 onComplete?: () => void;
~~~~~~~~~~
The expected type comes from property 'onComplete' which is declared here on type 'Config'*
Can someone help me understand how to resolve this error?
Solution
This looks like a bug in the type definitions for onComplete. In the usage it looks like the onComplete is passed a variable. See: https://github.com/angular/protractor/blob/master/lib/frameworks/jasmine.js#L109-L115
const originalOnComplete = runner.getConfig().onComplete;
jrunner.onComplete(async(passed) => {
try {
if (originalOnComplete) {
await originalOnComplete(passed);
}
Although you could create a TypeScript config.ts, it might be better to create a config.js file. Using config.ts could also run into problems when you want to reference the browser object. The browser variable would have to be brought in via require instead of import.
Answered By - cnishina
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.