Protractor: Upgrade dependency on selenium-webdriver to match what webdriver-manager is downloading

Created on 17 Aug 2017  路  5Comments  路  Source: angular/protractor

Hi there!

Protractor depends on version 3.0.1 of selenium-webdriver, but recently webdriver-manager started to download version 3.5.0 as this is the latest version available.

It seems to me that this version mismatch could be the root cause of issues such as #4445 and jan-molak/serenity-js#85, manifesting themselves especially around taking screenshots.

Is it possible to upgrade Protractor's dependency on selenium-webdriver to match what webdriver-manager is downloading? @wswebcreation?

Thanks!
Jan

Bug report

  • Node Version: 6.10.1
  • Protractor Version: 5.1.2
  • Angular Version: N/A
  • Browser(s): Chrome Version 60.0.3112.90 (Official Build) (64-bit)
  • Operating System and Version macOS 10.12.6
  • Your protractor configuration file
const
    glob         = require('glob'),
    protractor   = require.resolve('protractor'),
    node_modules = protractor.substring(0, protractor.lastIndexOf('node_modules') + 'node_modules'.length),
    seleniumJar  = glob.sync(`${node_modules}/protractor/**/selenium-server-standalone-*.jar`).pop();

exports.config = {

    seleniumServerJar: seleniumJar,

    // nothing crazy here, same as https://github.com/serenity-js/seed-cucumber/blob/master/protractor.conf.js
    // ...
  • A relevant example test

    I triggered the below errors using a test suite of several (9 to be precise) Cucumber scenarios.

  • Output from running the test

Numerous errors, for example:

  • Error: ECONNREFUSED connect ECONNREFUSED 192.x.x.x:57021
[chrome #01-0] Error: ECONNREFUSED connect ECONNREFUSED 192.168.1.107:57021
[chrome #01-0]     at ClientRequest.<anonymous> (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/http/index.js:238:15)
[chrome #01-0]     at emitOne (events.js:96:13)
[chrome #01-0]     at ClientRequest.emit (events.js:188:7)
[chrome #01-0]     at Socket.socketErrorListener (_http_client.js:309:9)
[chrome #01-0]     at emitOne (events.js:96:13)
[chrome #01-0]     at Socket.emit (events.js:188:7)
[chrome #01-0]     at emitErrorNT (net.js:1281:8)
[chrome #01-0]     at _combinedTickCallback (internal/process/next_tick.js:80:11)
[chrome #01-0]     at process._tickCallback (internal/process/next_tick.js:104:9)
[chrome #01-0] From: Task: WebDriver.createSession()
[chrome #01-0]     at Function.createSession (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:777:24)
[chrome #01-0]     at Function.createSession (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/chrome.js:709:29)
[chrome #01-0]     at createDriver (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/index.js:167:33)
[chrome #01-0]     at Builder.build (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/index.js:623:16)
[chrome #01-0]     at Local.getNewDriver (/path/to/project/node_modules/protractor/lib/driverProviders/driverProvider.ts:60:29)
[chrome #01-0]     at Runner.createBrowser (/path/to/project/node_modules/protractor/lib/runner.ts:225:39)
[chrome #01-0]     at ProtractorBrowser.browser_.forkNewDriverInstance (/path/to/project/node_modules/protractor/lib/runner.ts:293:33)
[chrome #01-0]     at replaceBrowser (/path/to/project/node_modules/protractor/lib/runner.ts:313:33)
[chrome #01-0]     at ProtractorBrowser.browser_.restartSync (/path/to/project/node_modules/protractor/lib/runner.ts:340:14)
[chrome #01-0]     at ProtractorBrowser.browser_.restart (/path/to/project/node_modules/protractor/lib/runner.ts:326:25)
  • WebDriverError: java.net.SocketException: Connection reset by peer (connect failed)
WebDriverError: java.net.SocketException: Connection reset by peer (connect failed)
[chrome #01-0]     at WebDriverError (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:27:5)
[chrome #01-0]     at Object.checkLegacyResponse (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:505:15)
[chrome #01-0]     at parseHttpResponse (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:509:13)
[chrome #01-0]     at doSend.then.response (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:440:13)
[chrome #01-0]     at process._tickCallback (internal/process/next_tick.js:109:7)
  • WebDriverError: java.io.IOException: Error writing to server
WebDriverError: java.io.IOException: Error writing to server
[chrome #01-1]     at WebDriverError (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:27:5)
[chrome #01-1]     at Object.checkLegacyResponse (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:505:15)
[chrome #01-1]     at parseHttpResponse (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:509:13)
[chrome #01-1]     at doSend.then.response (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:440:13)
[chrome #01-1]     at process._tickCallback (internal/process/next_tick.js:109:7)
[chrome #01-1] From: Task: WebDriver.takeScreenshot()
[chrome #01-1]     at thenableWebDriverProxy.schedule (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:816:17)
[chrome #01-1]     at thenableWebDriverProxy.takeScreenshot (/path/to/project/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:1092:17)
[chrome #01-1]     at run (/path/to/project/node_modules/protractor/lib/browser.ts:66:27)
[chrome #01-1]     at ProtractorBrowser.to.(anonymous function) [as takeScreenshot] (/path/to/project/node_modules/protractor/lib/browser.ts:74:12)
[chrome #01-1]     at /path/to/project/node_modules/serenity-js/src/serenity-protractor/screenplay/abilities/browse_the_web.ts:42:41
[chrome #01-1]     at /path/to/project/node_modules/@serenity-js/core/src/recording/async.ts:4:8
[chrome #01-1]     at Object.defer (/path/to/project/node_modules/@serenity-js/core/src/recording/async.ts:3:12)
[chrome #01-1]     at BrowseTheWeb.takeScreenshot (/path/to/project/node_modules/serenity-js/src/serenity-protractor/screenplay/abilities/browse_the_web.ts:42:16)
[chrome #01-1]     at Photographer.photographWorkOf (/path/to/project/node_modules/serenity-js/src/serenity-protractor/stage/photographer.ts:136:36)
[chrome #01-1]     at Photographer.photograph (/path/to/project/node_modules/serenity-js/src/serenity-protractor/stage/photographer.ts:114:38)

Most helpful comment

If this get's closed a new issue should be created which tracks why issues still appear in the connection between protractor and selenium server. This issue was created form the view that the automatic update caused the problem, but using 3.6.0 still gives seemingly random:
WebDriverError: java.net.SocketException: Connection reset by peer (connect failed) errors.

Somewhere after selenium-server 3.4.0 this started happening.

All 5 comments

@cnishina and @vikerman ,

Can you both take a look at this. The latest version of Selenium-Webdriver 3.5.0 is causing issues but it's downloaded automatically.

I highly recommend to update, since this should also fix https://github.com/SeleniumHQ/selenium/issues/3808

Another option is to pin the version for the update command to a specific version of the standalone server with webdriver-manager? If an older server version works with Protractor, please use that one until the selenium-webdriver upgrade is complete. Currently I do not have bandwidth to take on the upgrade. https://github.com/angular/webdriver-manager/blob/master/docs/versions.md

This issue can be closed I guess, since Protractor is now using selenium-webdriver v3.6.0 which is the latest as of today (12/07/17)

If this get's closed a new issue should be created which tracks why issues still appear in the connection between protractor and selenium server. This issue was created form the view that the automatic update caused the problem, but using 3.6.0 still gives seemingly random:
WebDriverError: java.net.SocketException: Connection reset by peer (connect failed) errors.

Somewhere after selenium-server 3.4.0 this started happening.

Was this page helpful?
0 / 5 - 0 ratings