I want to test NOT headlessly but I cannot do that.
The below code start chrome browser. NOT headless. OK.
// test.js
var webdriverio = require('webdriverio');
var options = {
desiredCapabilities: {
browserName: 'chrome'
}
};
webdriverio
.remote(options)
.init()
.url('http://www.google.com')
.title(function(err, res) {
console.log('Title was: ' + res.value);
})
.end();
The below code (Mocha test code) doesn't start chrome browser by $ mocha test.js.
Headless. NG.
But the test pass! I cannot understand this.
I checked the log of Selenium Server, but it doesn't show (left) any log. No trace.
// test-mocha.js
var expect = require('expect.js');
var webdriverio = require('webdriverio');
var options = {
desiredCapabilities: {
browserName: 'chrome'
}
};
describe('WebdriverIO Sample Test', function () {
it('should return "Google"', function () {
webdriverio
.remote(options)
.init()
.url('http://www.google.com')
.title(function(err, res) {
var title = res.value;
expect(title).to.be('Google');
})
.end();
})
});
The test result is as below:
WebdriverIO Sample Test
✓ should return "Google"
1 passing (4ms)
webdriver.io is asynchronous. Change your test to mark it as asynchronous and use the
donecallback after all the checks in the test are done. The two changes are: 1. adddoneas a parameter to the function you pass toitand 2. add thedone()call after yourexpectcall.Without this, Mocha thinks your test is synchronous so it just completes the test before
webdriveriodoes its work.