Selenium Foundation Versions Save

Selenium Foundation is an automation framework designed to extend and enhance the capabilities provided by Selenium (WebDriver).

v28.0.1

1 month ago

This release is primarily focused on resolving the issues that were causing the JUnit 4 support to fail. The issue appears to have been largely a matter of running with an outdated version of Byte Buddy in JUnit Foundation.

I also update README to indicate the addition of Selenium 4 support and the switch to the Gradle Wrapper for building, testing, and publishing releases.

v28.0.0

2 months ago

In this release, I finally finished up the initial support for the Selenium 4 API. This required a bit of refactoring to account for differences in the Selenium API between version 3 and version 4.

  • I implemented automatic driver management for both Selenium 3 (via WebDriverManager) and Selenium 4 (via SeleniumManager).
  • I implemented support for Selenium 4 Grid.
  • I added servlet container classes for both Selenium 4 and Selenium 3.
  • I implemented an ExamplePageLauncher that uses this servlet container to host the unit test example pages.
  • I improved the factoring and implementation of the existing getNodeCapabilities() function.
  • I added settings to enable remote debugging of Hub and Node processes.
  • I added support for posting GraphQL queries.
  • I added a configuration method that reports the Selenium major version for API-specific client code.
  • I revised the extraction of log-based serialized JavaScript exceptions to eliminate the use of deprecated APIs.
  • I fixed some longstanding inaccuracies in my browser plugin capabilities declarations.
  • The last vestiges of Selenium 2 support have been removed.
  • I also installed the Gradle wrapper and upgraded to version 8.3.

NOTE: As of this release, Selenium 4 support for HtmlUnitDriver is limited to self-provided sessions. The ability to provide HtmlUnit sessions from the Grid was not retained in the Selenium 4 Grid implementation. Consequently, unit tests are currently running in Firefox. ALSO: The installation of JUnit 4 method hooks by JUnit Foundation stopped working at some point. I suspect this may be related to updates in the toolchain I'm using (Gradle/Java). I haven't been able to pin this down yet, but I think the next thing to try is running the tests in a simple Maven harness.

v27.0.10

11 months ago

In this release, I decided to add unit tests for optional element behavior, especially as this relates to nodes that appear and vanish after the creation of the corresponding RobustWebElement. In the process, I discovered a few bugs and logic issues in this area.

  • If the reference attached to an optional element went stale and couldn't be refreshed (element not found), a second fruitless attempt was made to acquire the reference. Now the failed refresh is detected and the original StaleElementReferenceException is thrown.
  • Handling of element reference refresh timeouts was incorrect:
    • If the refresh was performed to recover from a stale reference exception, the code was simply re-throwing timeout. Now the original stale reference exception is repackaged to indicate the refresh failure.
    • If the refresh was just acquiring an element reference (not stale reference exception recovery), the timeout was improperly transformed into a refresh failure exception. Now the cause of the timeout is re-thrown instead.
  • If we failed to locate an element using the SCRIPT strategy, the message in the NoSuchElementException failure incorrectly referred to a locator and index that don't apply to this strategy. Now we refer to the script and context element as we should.
  • I added a bunch of code comments in these areas so I don't have work so hard figuring out how this code works next time.
  • I added two new unit tests to keep an eye on this functionality,
  • I also added final qualifiers to the "locator" fields in all of the Using enumerations.

v27.0.8

1 year ago

In this release, I fix what I broke...

In the last release of Selenium Foundation, I upgraded the version of the PhantomJSDriver dependency to version 1.5.0, failing to notice that this new release targets Selenium 4. Reverting to version 1.4.4 gets PhantomJS support working again.

v27.0.6

1 year ago

In this release, I updated several more dependencies:

  • HTTPClient: 4.5.13 → 4.5.14
  • JSoup: 1.15.1 → 1.15.3
  • OKHttp: 4.9.3 → 4.10.0
  • WebSocketClient: 9.4.46.v20220331 → 9.4.50.v20221201
  • Kotlin: 1.7.0 → 1.8.10
  • PhantomJSDriver: 1.4.4 → 1.5.0

v27.0.5

1 year ago

In this release, I upgraded to the latest releases of the following:

  • SettingsAPI: 3.0.2 → 3.0.5
  • JUnit Foundation: 17.0.2 → 17.0.4
  • TestNG Foundation: 4.0.2-j8 → 4.0.4-j8

v27.0.4

1 year ago

In this release, I upgraded to the latest release of HtmlUnitDriver (v2.70.0). The dependencies of this new release changed slightly, which necessitated a few minor tweaks to HtmlUnitPlugin.

This is the first official release of Selenium Foundation after I removed the parallel Maven project files. These are no longer useful, as I finally added the last missing capabilities to the Gradle project files for Selenium Foundation. I've updated the documentation to reflect the removal of Maven support.

v27.0.3

1 year ago

In this release, I revised the key sequence that's generated when erasing the existing content of an input field in sessions that don't support JavaScript. After erasing the field, updateValue now tabs out of the field to commit the change.

v27.0.2

1 year ago

In this release, I took another stab at the implementation of the updateValue method to make it ubiquitously applicable to the vast majority of scenarios. I recently became aware that the original implementation was incompatible with common front-end libraries like Vue, causing input that was supposed to replace existing content to be appended instead.

The new implementation uses JavaScript to replace the existing content if the browser supports it. Otherwise, updateValue employs basic key sequences to overwrite the field content with the new value.

To facilitate testing of this new behavior, I added an htmlunit.nojs personality that provides HtmlUnit sessions with JavaScript support turned off.

v27.0.1

1 year ago

In this release, I added the ability to target each of the supported browser/application targets from the Maven command line. This allows execution of all Selenium Foundation unit tests without needing to mess with dependencies or settings.

Also in this release:

  • Set the default "platform" to support to run the non-browser unit tests
  • Revise documentation to remove references to Selenium 2
  • Update mvn_build shell script, adding the ability to run the unit tests without the clean/install phases