Skip to content

Releases: sbabcoc/Selenium-Foundation

More tweaks to the 'updateValue' method

20 Jan 04:44

Choose a tag to compare

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.

Add Maven command lines for all supported targets

17 Jan 07:47

Choose a tag to compare

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

Add multi-browser support to Gradle project

15 Jan 23:44

Choose a tag to compare

In this release, I added the ability to specify one or more browser profiles to the Selenium Foundation Gradle project. This ability has been available in the Maven project for a while, but it took some head-scratching to figure out how to provide a similar capability in Gradle.

With the revisions in this release, you can now specify one or more browsers, and the corresponding dependencies, properties, and driver plugins will be added to the build/test configuration. Note that the last specified browser will be the target of corresponding unit tests, although support for all specified browsers will be activated in the local Grid launched for the tests. If no browsers are specified, the "support" tests will be executed, and the local Grid will launch in "servlet container" mode.

  • I bumped the major version in this release of Selenium Foundation, because I no longer set a default browser specification. You'll now need to specify either BROWSER_NAME or BROWSER_CAPS to indicate which browser you're targeting with your tests.
  • I reworked the updateValue unit tests to interact with input elements on the targeted browser instead of relying on mock elements. The example page now specifies initial values for input fields to ensure that the logic to clear prior field content actually works.
  • I removed the settings in gradle.properties that disabled Java auto-detect. The addition of these properties was prompted by issues triggered by stale registry entries on my development machine. The real solution was to clean up the registry; allowing auto-detect enables Gradle to use my Maven toolchain to locate the JDK installations needed to build and test Selenium Foundation.
  • I upgraded to the latest release of SnakeYAML (version 1.33) to resolve an identified vulnerability.
  • I swapped the expected and actual values in affected assertions so failure messages will be accurate.

Add Maven profiles that make it easy to run unit tests on specific browsers and devices

01 Jan 04:57

Choose a tag to compare

In this release, I added profiles to the Maven project definition (POM) file that make it easy to run the Selenium Foundation unit tests on each supported browser or platform. This new feature has been fully incorporated into the mvn-build.sh shell script, so running through the entire suite of unit tests on all supported platforms is a snap.

In the process of adding this feature, I discovered a few hidden defects in the Local Grid implementation. These have been resolved in this release as well. The most significant issue was that I was using two separate mechanisms to register Grid node plugins, which resulted in very puzzling failures. Registration is now specified by the GRID_PLUGINS setting (selenium.grid.plugins), falling back to the ServiceLoader if this is undefined.

I added entries in logback.xml to suppress the overwhelming spew of debug output we were getting when running on Appium targets.

I also upgraded a couple of core dependencies:

  • HtmlUnit: 2.64.02.67.0
  • SnakeYAML: 1.301.32

Add default DriverPlugin methods to create local Grid nodes

04 Sep 22:31

Choose a tag to compare

In this release, I did a bit of refactoring to provide methods to enable the addition of local nodes to an active Grid collection.

Start all Grid servers, then wait for active/register

24 Aug 02:56

Choose a tag to compare

In this release, I revised the launch strategy for local Selenium Grid collections to start the servers in quick succession, then wait for the entire collection to be active and all of the nodes to be registered. This noticeably reduces the launch delay experienced with the previous one-at-a-time strategy.

I revised the matching strategy for skipping interface methods in "enhanced" object, using just the method name rather than the full signature. This prevents infinite recursion (stack overflow) that occurred when the interceptor invoked one of these methods on an "enhanced" object that doesn't directly implement the interface.

  • I added code comments to the interceptor implementation to make it easier to understand.
  • I added verification that objects returned by the framework are "enhanced".
  • I upgraded to the latest release of HtmlUnitDriver (version 2.64.0)

Fix a bug with "rehydrated" SeleniumGrid objects

11 Aug 01:39

Choose a tag to compare

This release fixes a bug in the process of creating a SeleniumGrid object to represent a specified host URL. The URL itself wasn't being injected into the configuration, which could lead to subsequent NullPointerException failures.

Add iOS page class/test

10 Aug 20:41

Choose a tag to compare

In this release, I added a page model and test class for validating the XCUITestPlugin.

Add dependency context for PathUtils

09 Aug 22:21

Choose a tag to compare

In the previous release, I added a few calls to methods in the PathUtils class to code that gets used to launch Grid hub/node servers. What I failed to do was to add a dependency context entry so that the Java-Utils library this lives in gets added to the Grid server class path. This release takes care of that issue.

Set Java sub-process PATH; upgrade core dependencies

09 Aug 19:56

Choose a tag to compare

After all this time, I discovered that the default path inherited by Java processed spawned by CommandLine isn't always what might be hoped. This was causing trouble for Appium Grid nodes on Mac, which were unable to find the node executable as a result. I added a few new path-related functions in Java-Utils to provide a common oracle to solve this problem.

The new release of Java-Utils triggered a cascade of dependency bumps:

  • Java-Utils → version 3.1.1
  • Setting → version 3.0.2
  • JUnit-Foundation → version 17.0.2
  • TestND-Foundation → version 4.0.2-j8