Skip to content

Upgrading to replacement #332

@cnishina

Description

@cnishina

Replacing instead of fixing

Back in August, I wanted to address several issues with this project: not enough testing, unusual side effects, GitHub authtoken limitations (with GeckoDriver), etc. Some of the highlights of these changes include:

  • unit, integration, proxy, and e2e tests
  • removed side effects from code
  • added support for GitHub authtokens
  • CI runs every night so failures on driver - browser mismatch will be found sooner
  • you can use webdriver-manager as a node module as well as a CLI.

Breaking changes

This is not feature parity yet. We will not have mobile support. Instead of hacking something together quickly, I want to be more thoughtful about how this is done.

The driving force to make this change now is to not block Protractor selenium4 milestone progress (see https://github.com/angular/protractor/milestone/45). Currently directConnect is not working due to version incompatibility between ChromeDriver and Chrome. See the following snippet:

[00:55:33] I/direct - Using ChromeDriver directly...
[00:55:33] E/runner - Unable to start a WebDriver session.
[00:55:33] E/launcher - Error: SessionNotCreatedError: session not created: Chrome version must be between 70 and 73
  (Driver info: chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),platform=Linux 4.4.0-139-generic x86_64)
    at Object.checkLegacyResponse (/home/circleci/project/node_modules/selenium-webdriver/lib/error.js:546:15)
    at parseHttpResponse (/home/circleci/project/node_modules/selenium-webdriver/lib/http.js:509:13)
    at doSend.then.response (/home/circleci/project/node_modules/selenium-webdriver/lib/http.js:441:30)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
[00:55:33] E/launcher - Process exited with error code 100

>>> fail: Error: expecting exit code: 0, actual: 100

Steps to replacing this node module

Here's the logical order to replace this node module in place.

  • (12/11/2018) Fork the master branch to a separate branch called "legacy". This will help maintain the old code base and commit history.
  • (12/11/2018) Add new code base to the "replacement" branch.
  • (12/11/2018) Use webdriver-manager-replacement (workaround for current publish permissions)
  • (12/14/2018) Create a 13.0.0-beta release, making sure that this is not marked as the "latest" in npmjs.
  • (12/21/2018) Add missing documentation and design documentation / decisions in markdown.
  • (01/03/2019) After Protractor's official release, move the replacement branch to be the new master branch.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions