I revised the instantiation behavior of Local Grid instances to separate the creation of the hub/node model from the launch of the associated Grid servers. These revisions included renaming existing methods (start/launch → create), adding a new activate method to activate the local Grid instance, and adding a new start method that's solely focused on starting the local Grid server processes, ensuring that the servers are active and registered.
The "personality" records returned by driver plug-ins now specify the class of the plug-in with which they're associated.
I tweaked the behavior of the AbstractSeleniumConfig.getModifications method to ensure that Capabilities for Grid nodes and driver requests will always specify "personality".
Prior to instantiating a driver, I ensure that the local Grid is activated. I also remove the "personality" and "pluginClass" capabilities from the request, which are proprietary and will be rejected by strict W3C-compliant providers.
These revisions enabled me to modify the implementation of the target platform feature to avoid launching a Grid or instantiating a driver if the tests associated with the active platforms don't need them.
To enable instantiation of drivers by plug-ins that require target-specific drivers (e.g. - AndroidDriver), I added a new method to the DriverPlugin interface that returns a constructor for the associated driver class.
I revised the definition and realization of the @PageUrl annotation to add support for Android application "activities".
I implemented and applied a platform set for the unit tests. This enabled me to implement a test class and page model for the first Android application unit test. Existing web application unit test classes have been revised to extend the new TestNgTargetRoot and JUnitTargetRoot classes, adding corresponding @TargetPlatform annotations to existing test methods,
I wrapped calls to commands that aren't supported by Appium drivers to catch UnsupportedCommandException.
I tweaked the code that locates the Appium main script to ignore potential preamble (info and warning messages).
I updated a few deprecated references to the TimeUnit class to their Duration class equivalents.
I added a skipTest method to the TestBase class to provide a framework-agnostic mechanism for aborting a test.
I removed a few explicit class references to static methods within the same class.
I pared down the debug message posted by DataUtils.fromString to omit the exception stack frames.
I removed workaround code in the ExamplePageServlet class for a Selenium 2 Grid issue.
I updated GridUtilityTest.testIsActive to work with the new activation behavior of local Grid instances.
I also removed a couple of deprecated methods and references to the Selenium 2 API in documentation and code comments.
Resolves #225 and #227
start
/launch
→create
), adding a newactivate
method to activate the local Grid instance, and adding a newstart
method that's solely focused on starting the local Grid server processes, ensuring that the servers are active and registered.AbstractSeleniumConfig.getModifications
method to ensure that Capabilities for Grid nodes and driver requests will always specify "personality".@PageUrl
annotation to add support for Android application "activities".@TargetPlatform
annotations to existing test methods,skipTest
method to the TestBase class to provide a framework-agnostic mechanism for aborting a test.DataUtils.fromString
to omit the exception stack frames.GridUtilityTest.testIsActive
to work with the new activation behavior of local Grid instances.