Skip to content

Releases: sbabcoc/Selenium-Foundation

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

01 Jan 04:57
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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

Use full path of executables; working directory isn't used

08 Aug 06:09
Compare
Choose a tag to compare

In this release, I resolved a bug in Appium support that rendered executables that weren't on the path unusable. Even specifying the path through the associated setting was ineffective. This was the result of a misunderstanding about how the "working directory" would be applied. This setting isn't considered when trying to resolve the absolute path of the specified executable. For executables specified solely by name, only the system path specification is used for this purpose.

I now specify the full paths of executables, and I don't bother setting the working directory.

Add properties to propagate for Appium plug-ins

07 Aug 21:17
Compare
Choose a tag to compare

When I create the AbstractAppiumPlugin class, I neglected to add the list of System properties that should be propagated to the Java child process that launches the Appium Grid node. This release resolves this issue.

Add Mac2 page class/test; final/(un)boxing cleanup

06 Aug 22:04
Compare
Choose a tag to compare

In this release, I added a page model and test class for validating the Mac2Plugin. I also did a bit of overdue clean-up:

  • Where possible, I classified a few fields as final
  • I removed some unnecessary boxing and unboxing
  • I revised a few variable names to flag "eaten" exceptions
  • I removed all of the NOSONAR tags