Search code examples
javascriptangularjsnode.jsprotractorjasmine-node

TypeError: reporter.beforeLaunch is not a function


I'm trying to implement protractor screenshot reporter for jasmine 2.

But, I'm getting the following error on terminal:

/usr/local/bin/node lib/cli.js example/conf.js

/Users/sadiq/node_modules/protractor/node_modules/q/q.js:155

throw e;

^

TypeError: reporter.beforeLaunch is not a function

at /Users/sadiq/node_modules/protractor/example/conf.js:38:19

at exports.config.beforeLaunch (/Users/sadiq/node_modules/protractor/example/conf.js:37:13)

at Function.promise (/Users/sadiq/node_modules/protractor/node_modules/q/q.js:682:9)

Process finished with exit code 1

Version Details:

Protractor: v3.1.1;

Jasmine: v2.0.0;

protractor-jasmine2-html-reporter

PFB the conf.js file

// An example configuration file.

var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');

var reporter  = new Jasmine2HtmlReporter ({
dest:  '/Users/sadiq/node_modules/protractor/test-results',
filename: 'Login.html'
});

exports.config = {


//The address of a running selenium server.
seleniumAddress: 'http://localhost:4444/wd/hub',

// Capabilities to be passed to the webdriver instance.
capabilities: {
    'browserName': 'chrome'
},

// Framework to use. Jasmine is recommended.
framework: 'jasmine2',

// Spec patterns are relative to the current working directly when
// protractor is called.
specs: ['login_spec.js'],

// Options to be passed to Jasmine.
jasmineNodeOpts: {
    defaultTimeoutInterval: 30000,
    showColors: true
},


// Setup the report before any test starts
beforeLaunch: function (){
    return new Promise(function(resolve){
        reporter.beforeLaunch(resolve);
    });
},


onPrepare: function () {
    browser.driver.manage().window().setSize(1200, 800);
    jasmine.getEnv().addReporter(reporter);
},


// Close the report after all tests finish
afterLaunch: function (exitCode) {
    return new Promise(function (resolve) {
        reporter.afterLaunch(resolve.bind(this, exitCode));
    });


  }

};

Solution

  • Usually reporters are set up in onPrepare instead of beforeLaunch:

    var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
    
    onPrepare: function () {
        browser.driver.manage().window().setSize(1200, 800);
    
        var reporter  = new Jasmine2HtmlReporter ({
            dest:  '/Users/sadiq/node_modules/protractor/test-results',
            filename: 'Login.html'
        });
        jasmine.getEnv().addReporter(reporter);
    },