I'm trying to setup Nightwatch, and am using the latest chromedriver which says it supports chrome v52-54. BUT, when I try to run the tests, it says 'Error: Chrome version must be >=52.0.2743.'
Here's everything that I'm using:
Project Structure
|-- nightwatch.json
|-- bin/
| |-- chromedriver
| |-- selenium-server-standalone-2.53.1.jar
|-- tests/
| |-- sample.js
|-- results/
|-- screens/
|-- node_modules/
| |-- (lots of modules here)
And here is my configuration file for nightwatch:
./nightwatch.json
{
"src_folders" : ["tests"],
"output_folder" : "results",
"custom_commands_path" : "",
"custom_assertions_path" : "",
"page_objects_path" : "",
"globals_path" : "",
"selenium" : {
"start_process" : true,
"server_path" : "bin/selenium-server-standalone-2.53.1.jar",
"log_path" : "results",
"host" : "127.0.0.1",
"port" : 4444,
"cli_args" : {
"webdriver.chrome.driver" : "bin/chromedriver"
}
},
"test_settings" : {
"default" : {
"launch_url" : "http://localhost",
"selenium_port" : 4444,
"selenium_host" : "localhost",
"silent": true,
"screenshots" : {
"enabled" : true,
"path" : "screens/"
},
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true
}
},
"chrome" : {
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true
}
}
}
}
Running Tests
I run the tests like this:
nightwatch tests/
Error
And I get the following output:
Starting selenium server... started - PID: 3500
[Sample] Test Suite
=======================
Running: Demo test Google
Error retrieving a new session from the selenium server
Connection refused! Is selenium server started?
{ sessionId: null,
status: 13,
state: 'unhandled error',
value:
{ message: 'unknown error: Chrome version must be >= 52.0.2743.0\n (Driver info: chromedriver=2.24.417424 (c5c5ea873213ee72e3d0929b47482681555340c3),platform=Linux 3.2.0-56-generic x86_64) (WARNING: The server did not provide any stacktrace information)\nCommand duration or timeout: 1.42 seconds\nBuild info: version: \'2.53.1\', revision: \'a36b8b1\', time: \'2016-06-30 17:37:03\'\nSystem info: host: \'N/A\', ip: \'N/A\', os.name: \'Linux\', os.arch: \'amd64\', os.version: \'3.2.0-56-generic\', java.version: \'1.7.0_111\'\nDriver info: org.openqa.selenium.chrome.ChromeDriver',
suppressed: [],
localizedMessage: 'unknown error: Chrome version must be >= 52.0.2743.0\n (Driver info: chromedriver=2.24.417424 (c5c5ea873213ee72e3d0929b47482681555340c3),platform=Linux 3.2.0-56-generic x86_64) (WARNING: The server did not provide any stacktrace information)\nCommand duration or timeout: 1.42 seconds\nBuild info: version: \'2.53.1\', revision: \'a36b8b1\', time: \'2016-06-30 17:37:03\'\nSystem info: host: \'N/A\', ip: \'N/A\', os.name: \'Linux\', os.arch: \'amd64\', os.version: \'3.2.0-56-generic\', java.version: \'1.7.0_111\'\nDriver info: org.openqa.selenium.chrome.ChromeDriver',
buildInformation:
{ releaseLabel: '2.53.1',
buildTime: '2016-06-30 17:37:03',
class: 'org.openqa.selenium.internal.BuildInfo',
buildRevision: 'a36b8b1',
hCode: 1900167016 },
cause: null,
systemInformation: 'System info: host: \'N/A\', ip: \'N/A\', os.name: \'Linux\', os.arch: \'amd64\', os.version: \'3.2.0-56-generic\', java.version: \'1.7.0_111\'',
supportUrl: null,
class: 'org.openqa.selenium.WebDriverException',
additionalInformation: '\nDriver info: org.openqa.selenium.chrome.ChromeDriver',
hCode: 1299270263,
screen: null },
class: 'org.openqa.selenium.remote.Response',
hCode: 1144687147 }
Anyone know how to resolve this error?
Chrome version must be >= 52.0.2743.0
Does chromedriver use my local copy of chrome? Do I need to update my actual chrome?
It might not be a chromedriver issue, since chromedriver can be invoked from npm scripts without error. npm run nightwatch > universal-ws-tools@ nightwatch C:\Users\Super\git\universal-ws > nightwatch ./test/browser/nightwatch.js --verbose Starting ChromeDriver on port 9515...
In the context of Behat tests, ChromeDriver allows Behat to control Chrome (e.g. enabling it to move around the browser and do actions like clicks). Therefore, if the version of the driver mismatches that of the browser, Behat cannot control the browser and you get the error like below:
You should only need either the conf.js or the .json, but you probably need the conf.js temporarily to get the paths if your preferred method is the .json. YMMV depending on your project setup, but this has worked for all of my nightwatch testing (43 projects since my post) since I figured it out.
When the chrome browser gets updated automatically on your computer, the ChromeDriver version is not going to be updated. Therefore, it causes the mismatch between the chrome browser and the ChromeDriver version.
If you're using Ubuntu 16.04 this code works:
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
x64
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
x32
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
Install/Update
sudo apt-get update
sudo apt-get install google-chrome-stable
Source
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With