-
Notifications
You must be signed in to change notification settings - Fork 849
Description
This is request for comments about the next major version of php-webdriver (2.0). Once we understand what we want/need to do, we can divide the work among interested volunteers and get it rollin'! 🚀
Suggested objectives
Support only W3C WebDriver
Support only the new protocol and drop support of JsonWire protocol. This will allow us to focus our limited resources to make long-term working implementation of PHP language bindings.
In my opinion, maintaining compatibility with the old protocol is not effective, as the situation has developed rapidly since issue #469 was originally written:
- W3C WebDriver standard was published on 2018-06-05 - its already a year ago
- Support of the new protocol amongst browsers is getting better with every version of the respective browsers: see https://webdriver-herald.herokuapp.com/ or https://wpt.fyi/results/webdriver
- Chrome uses W3C protocol by default since version 75 (released 2019-06-04); even though it could be disabled, it won't work with Selenium 3.9.0 and newer (because of the missing passThrough mode)
- Chromedriver 76 will include W3C WebDriver Actions API, one of the last missing pieces of full implementation of the standard
- Firefox (geckodriver) support only W3C protocol from the beginning
- IEServerDriver was, in fact, the first one with W3C protocol support
- Selenium 3 is now in maintenance-only mode, development is now focused on Selenium 4, which will even improve W3C protocol support (and may start breaking JsonWire protocol support).
- The last Firefox working with the JsonWire protocol is Firefox 47 released in June 2016 (over 3 years ago). Even the last Firefox Extended Support (ESR) version which supported JsonWireProtocol is over two years old (45.x) and no longer supported.
- Most people probably run php-webdriver against Chrome/Chromium, which supports both protocols.
So I don't see an actual need for the JsonWire protocol.
Drop PHP 5.6 and 7.0 support
Those version of PHP are no longer supported. We may also drop PHP 7.1 support, as it is in security-support mode (and only for few next months).
With PHP 7.1+ or 7.2+ we can use many of its new features, most importantly types in method parameters and return values.
If someone cannot use those new versions of PHP, he is probably working in rigid environment and maybe don't use the latest version of browsers - so one can still use the 1.x version of php-webdriver. Or has to upgrade 🤷♂️ .
EDIT: this was already done in php-webdriver 1.x.
Clean object dependencies
Historically, this library object model is based on interfaces, which often breaks LSP. It also causes headaches for static analysis. This could be taken care of in the new version.
Other suggestions?
Are there any other issues we should solve?
Any missing features (see Java version changelog)?
Or something which should be done together with BC break?
Please comment!