Skip to content

php-webdriver 2.0 - RFC 💬 #657

@OndraM

Description

@OndraM

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!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions