- run 'webdriver-reuse-browser' - get the session id from a browser that can be reused
- insert the session id in the config file or via the command line
If you want better, faster and more enjoyable test, then this is the place to be
- Better - because the more times you run your test, the more bugs you can find
- Faster - because browser start-up time, cache warm-up (loading of images and static JS), authentication and similar is removed or reduced
- More Enjoyable - because slow test and long feedback times, is the oposite of Flow and Programmer Happiness.
Protractor is a nice an well-behaving tool, so it closes the browsers it creates, but sometimes you want to keep it open for debugging purposes or for speeding up the next test.
And Protractor actually supports attaching to browsers, but it needs some manual to start the browser.
This tool can..
Start Webdriver, Selenium or ChromeDriver sessions and make sessions id's available for Protractor and similar Web Browser Test Automation Frameworks
The normal approach is that every test run starts a new browser, which often takes between 5 to 10 seconds. Using webdriver-reuse-session Using this can take between 5-10 seconds of your start-up time, and sometimes even more. If you have an authentication step, then this can be added. I worked a case, where I could cut off 30 seconds of overhead, every time I wanted to run a 5 seconds test.
Resist the temptation of using ts-node, unless you are doing it for the sake of debugging. Have a terminal running next to your other terminal with 'tsc -w' This is so much faster
- The local selenium/webdriver host is always http://localhost:4444/wd/hub
- The way to control a Web Driver is best done using webdriver-manager. I assume that you have this installed
- The best way to work with multiple browser types is [Protractor](https://www.protractortest.org/#/(https://w3c.github.io/webdriver/)
If you ...
- believe that my assumptions are flawed...
- have found a bug...
- need something else...
Make an issue or a pull request or reach out to me via email - [email protected] .
npm install webdriver-reuse-session
The 'webdriver-reuse-session' script can be used both in a manual mode and in an automatic mode.
- Start Webdriver-manager or a raw selenium instance
npx webdriver-manager start
- Start the reuse sessions script
webdriver-reuse-session
- Take a note of the session id
-
Setup your script to use a local host Selenium
/** in your protractor.conf.js or similar config object*/ directConnect: undefined, // can be omitted, but just to show that directConnect must not be set seleniumAddress: 'http://localhost:4444/wd/hub',
-
Use the SessionID in the command line
protractor --seleniumSessionId=6aec0d5861daa54d0b9be17ec47bea70
-
Get the SessionID
const sessionIdFromFile = fs.readFileSync('.seleniumSessionId.txt')
-
Use the SessionID
/** in your protractor.conf.js or similar config object*/ directConnect: undefined, // can be omitted, but just to show that directConnnect must not be set seleniumAddress: 'http://localhost:4444/wd/hub', seleniumSessionId: sessionIdFromFile,
It is independent of the test runner, it depends on how you define your Selenium Session ID.
You can use this with Cucumber, Mocha, Jest and other test automation frameworks
This is my first package on NPMJS, so feel free to give me feedback and log issues on Github
With wishes of faster testing for all of us,
Andreas