Substeps 1.1.0 - new release now available!

62 views
Skip to first unread message

Ian Moore

unread,
Jan 8, 2013, 5:59:59 AM1/8/13
to subs...@googlegroups.com
We’ve been making some fairly extensive changes to the internals of Substeps, we’ve had the chance to take a step back and reflect on the code written so far and then refactor, with the intention of improving the longer term maintainability and ease of extension and integration.  The major changes are described below, there are more detailed release notes for each project.

NB. There are some changes to the maven POMs required to upgrade to 1.1.0 of Substeps, however this shouldn't affect existing custom StepImplementations or tests.  If you do have any compatibility issues please let us know and we’ll endeavour to assist.  There is a short migration guide here.


Execution in a forked VM
-----------------------------------------
One of the problems with versions of Substeps prior to 1.1.0 * is that of classloading and versions; if executing via maven, the plugin would by default drag in the version of Substeps and associated dependencies without verbose inclusion and exclusion of dependencies.  From 1.1.0 onwards it is possible to launch the Substeps test execution in a separate VM with its own potentially different classpath.  This change also paves the way for further improvements in the eclipse plugin around execution.

Caveats
The version of java on the path must match the version of Java used to run Maven, otherwise there will be compatibility issues.  We’ll change this in future to use JAVA_HOME to be consistent with Maven.
The class com.technophobia.substeps.jmx.SubstepsJMXServer must have a log level of DEBUG set (in the logging config configured on the classpath of the project), otherwise the tests won’t run.  Again, this will be tidied up in the next release.

* this change was actually released in 1.0.2, however that release wasn't publicised as 1.1.0 was just around the corner.


API Jar created
---------------------
Key to breaking some of the dependencies between the various projects has been the introduction of an api project, so hence a substeps-core-api jar has been created, providing the interface for Substeps.  Previously other Substeps jars such as the maven plugin and the webdriver had a dependency on substeps-core, this is no longer the case as they now depend on the API.

The major motivation for this is to allow changes to be made to core without needing to re-release other modules.  It will also provide greater certainty of the compatibility between modules.  The creation of an API jar has forced us to think about what the interfaces should be, this should make integration and extension of Substeps easier for third parties.


New modules (extracted from substeps-core)
-----------------------------------------------------------
In addition to the API being split from core, ANT and JUnit runners have been broken out too.  Common components between them and the maven plugin have also been separated.  This greater componentisation should help minimise the number of dependencies Substeps generally requires and will facilitate some exciting plans we have for the future!!



Introduction of a bill of materials (BOM)
---------------------------------------------------
The downside to the greater componentisation of Substeps was that it could have led to more complicated maven poms.  To minimize this complexity, we have introduced a BOM project which essentially lists the latest stable dependencies.  As Substeps component are changed and released, the BOM will also be updated and released.  Adding a dependency on the latest BOM should ensure you are using the latest and greatest Substeps components.



Internal changes to substeps-core
---------------------------------------------
In 1.1.0 the Execution node hierarchy has been refactored.  Different types of execution node are now represented by their own class, the rationale here was that the code is hopefully now cleaner, more readable and should enable greater extensibility as we keep moving substeps forward.


Execution statistics calculation has been changed
-----------------------------------------------------------------
As a result of the various refactorings of Substeps, we took a fresh look at how the test execution statistics on the report are calculated.  As a result we’ve changed how the number of “Scenario Steps” are calculated to take into account the number of iterations of scenario outlines.  Previously the number of Examples (iterations) of a Scenario outline was ignored in this calculation, from 1.1.0 onwards it its included thereby providing perhaps an indication of the depth of testing of a particular scenario; the number of times the same scenario is exercised with different parameters.


Other changes
-------------------
There are some additional webdriver-substep step implementations for traversing rows in tables and dismissing javascript alerts.
Courtesy of Andrew Lee, the glossary builder can now generate JSON by specifying com.technophobia.substeps.glossary.JsonSubstepsPublisher as the implementation - thanks Andrew!  This should make it a bit easier to use excellent Andrew’s API viewer, something which we’ll probably adopt in a later release.

As always, any issues, feedback please let us know.   We’re happy to receive pull requests or suggestions for new features and improvements.

cheers
Ian
Reply all
Reply to author
Forward
0 new messages