Save console messages for debugging in nightwatch.js Save console messages for debugging in nightwatch.js javascript javascript

Save console messages for debugging in nightwatch.js


Solution:

module.exports = {  'Check getting log messages' : function (client) {    client      .url('http://jsbin.com/rohilugegi/1/')      .getLogTypes(function(result) {        console.log(result);      })      .getLog('browser', function(result) {        console.log(result);      })    ;    return client;  },

It will give output

[Start] Test Suite==================Running:  Check getting log messages[ 'har', 'browser', 'client', 'server' ][ { message: 'Test error\n  error (:0)',    timestamp: 1428447687315,    level: 'WARNING' },  { message: 'Test log (:)',    timestamp: 1428447687315,    level: 'INFO' } ]No assertions ran.

Commands getLogTypes and getLog are already implemented at client commands but their description are absent at site API

Looks like it worth read source code instead of documentation

Below jsdoc for this functions from source code :

/** * Gets the available log types * * ``` * this.demoTest = function(client) { *   this.getLogTypes(function( typesArray ) { *      *   }); * }; * ``` * * @method getLogTypes * @param {function} [callback] Optional callback function to be called when the command finishes. * @api commands * @see logTypes */

and

/** * Gets a log from selenium * * ``` * this.demoTest = function(client) { *   this.getLog( 'browser', function( logEntriesArray ) { *     console.log( "Log length: " + logEntriesArray.length ); *     logEntriesArray.forEach( function( log ) { *        console.log( "[" + log.level + "] " + log.timestamp + " : " + log.message ); *      } ); *   }); * }; * ``` * * @method getLog * @param {string} typeString Log type to request * @param {function} [callback] Optional callback function to be called when the command finishes. * @api commands * @see log */


First make sure you set loggingPrefs to { 'browser' : 'ALL' } in your nightwatch configuration otherwise you won't see entries in the browser console that were written with console.log.My nightwatch.conf.js looks something like:

            desiredCapabilities: {              browserName: 'chrome',              handlesAlerts: true,              loggingPrefs: { 'browser': 'ALL' }            }

Next, like the others have said you just have to use the built-in getLog function on the client.e.g.

   browser.getLog('browser', function(logEntriesArray) {      console.log('Log length: ' + logEntriesArray.length);        logEntriesArray.forEach(function(log) {            console.log('[' + log.level + '] ' + log.timestamp + ' : ' + log.message);        });    });