Yes, it’s coming and it’s not far away. This next Christmas the fourth major version of Selenium will be released.
I´ve heard this before! Do you remember about the Selenium 3 release date? It was set on 2013 Christmas and finally it was delayed till October 13, 2016.
Is Selenium 4 going to be delayed again? I don’t know but after reading about the new features and changes, the waiting will be worth it.
This summer, June 28-30, the Selenium conference was held in Bengaluru (Bangalore, India, https://2018.seleniumconf.in/) where Simon Stewart (founding member of Selenium) officially announced the release date for the new version and presented some of the major changes.
NOTE: Why in India? Bangalore is the Indian «Silicon Valley» and a real threat of becoming the next Silicon Valley (even ahead of San Francisco Silicon Valley). Many Indians from Silicon Valley and other places are returning back to work in Bangalore, helping this city becoming one of the best technical sites in the world.
So, what are the new features, what is going to be deprecated, what changes we will have to code to our actual test suites?
1. W3C WebDriver Standardization
Currently there is a working W3C WebDriver specification draft available (https://www.w3.org/TR/webdriver/) and the working group hopes to have it finished by the end of this year. Opera helped kick this process off and Mozilla did the first implementation of the standards. The Chrome team has been reworking its driver so it will get a better performance (the original Chrome driver was done by a non Google employee) and a W3C implementation. The next versions of Ms Edge driver and Safari driver will implement the W3C standard too.
There are multiple contributors in the W3C Webdriver specification as you can see at Github on https://github.com/w3c/webdriver.
Selenium 4 shipping date was «blocked» by this W3C WebDriver specification getting mature enough.
When this first specification is complete, the browsers vendors will take the responsibility for the implementation of the WebDriver API. This is the logical way to proceed as the vendors knows the internals of their browsers better than anybody (f.e. the general open-source Selenium community).
The Selenium 4 WebDriver will be completely W3C Standardized. The W3C standard will encourage compatibility across different software implementations of the WebDriver API.
The WebDriver will communicate directly with the browser and so, the legacy JSON wire protocol won´t be needed anymore. The use of the JSON wire protocol implies an encoding and decoding of the API so the new WebDriver will be faster as no encoding/decoding work will be necessary.
Best of all, the Java bindings will be backward compatible but will focus more on the W3C Protocol.
The changes needed to upgrade from Selenium 3 to 4 will only consists in a drop-in replacement. We won´t need to change the code from our testing suites as the API is stable. Take care of anything that is already marked as «deprecated» in the documentation as it will be removed. So it’s about time to check our Selenium projects and change all the deprecated methods in favor of the non-deprecated ones.
The Webdriver API actually is being used not only by Selenium but by mobile testing tools such as Appium and iOS Driver.
2. Improved Selenium Grid
The Selenium Grid code has been refactored and cleaned up with many changes and needed improvements, the Selenium Grid console has also been reworked.
The infamous thread-safe bugs have been removed so the tests may be run in parallel without problems.
In the upcoming Selenium 4 there will be no differences between the elements of the Grid. Every component will work as hub and as node, so the usual difficulties connecting the nodes to the hub are gone. This changes will make the process to setup the grid much easier than before. When the Selenium server is started, the grid component will act as both hub and node.
The Selenium 4 UI look is updated as it needed a serious work out. IT will be more friendly and will include new relevant information about the Grid. Information like: who many sessions are running, how much spare capacity we have, managing the configuration, etc, is going to be available in the new UI so it should be more useful.
Selenium 4 will have a better support for docker and eventually k8s.
3. Better Observability
In this release the tracing and logging is getting improved but not as much as expected because there is no time for it although getting out information out of the driver is a very important and needed feature. The Selenium is an open-source project and there is a little group of committers working on it so many features doesn’t have the time to work on it 🙁
Also there is ongoing work on getting a standardized debugging protocol common to all browsers so in the future the W3C Webdriver will have the ability to communicate in a bi-directional way with the browser. Imagine the new possibilities when a browser can send an event to the tests? Will this feature become a reality any time soon? We´ll have to wait and see.
4. Refreshed Documentation
Documentation a project is one of the most important tasks any project underestimate and not give it the time it deserves. A good documentation will improve the success of any project.
The Selenium documentation hasn´t been updated since many years (from version 2), so there is an urgent need to update it and give it a new and up to time look. Sadly there is no new committers who’d like to contribute to the Selenium doc project. So, if you would like to contribute to this project…step ahead.
The new documentation site is: https://seleniumhq.github.io/docs/
5. Selenium 4 IDE The Next Generation
Selenium IDE is a good place to start with Selenium and the upcoming version will feature a new IDE.
When Firefox changed its plug-in extension system from XPI (Cross-Platform Installer Module) to the new extension API called WebExtensions, the Selenium IDE wasn´t updated so it didn’t work anymore (at the time, the IDE was only a XPI Firefox extension).
The new IDE is right now a WebExtension in alpha stage for Firefox and Chrome having two important new features:
– New plug-in system. Any browser vendor or anyone in the ecosystem can easily create new plug-ins to be used in the new selenium IDE.
– New CLI runner. The new command line runner is completely based on node.js and will be able to run all your Selenium IDE tests. The new CLI runner will support parallel test case execution.
NOTE: The IDE new name will be changed in the future for a better name 🙂