Skip to content
Fried Hoeben edited this page Aug 13, 2017 · 43 revisions

This project assists in testing (SOAP) web services and web applications by providing an application to define and run tests. To this end it contains a baseline installation of FitNesse (an acceptance testing wiki framework) and some FitNesse fixture (base) classes.

The fixtures provided aim to assist in testing (SOAP) web services and web applications (using Selenium) minimizing the amount of (custom) Java code needed to define tests.

Baseline installation features

The baseline FitNesse installation offers the following features:

  1. Ability to easily create a standalone (no JDK or Maven required) FitNesse environment.
  2. Run FitNesse tests on a build server, reporting the results in both JUnit XML format and HTML.
  3. FitNesse installation for fixture developers containing:
    • the fixture base classes (and Selenium drivers for Chrome, Internet Explorer and Firefox),
    • Maven class path plugin (such that tests can use all dependencies from pom.xml),
    • HSAC’s fitnesse-plugin to add additional Wiki features (random values, calculating relative dates, Slim scenarios without need to specify all parameters, Slim scripts that take a screenshot after each step),
    • easy fixture debugging,

To create your own test project

When you want to use the project’s baseline to create and maintain your own test suite, we recommend creating your own Maven project based on the project. This will allow you to run and maintain your test set, in version control, without the need to keep your own copies of dependencies (neither Selenium WebDrivers nor Java libraries).

To create a Maven project to run your own tests, based on this project’s baseline (assuming you already have a working Maven installation):

  • Go to the directory below which you want to create the project.
  • Use the archetype, nl.hsac:fitnesse-project, to generate the project:
    • On the commandline execute: mvn archetype:generate -DarchetypeGroupId=nl.hsac -DarchetypeArtifactId=fitnesse-project (or use your IDE’s ability to create a project from an archetype).
    • Answer the prompts for ‘groupId’, ‘artifactId’ and ‘package’ for the project.
  • ’’Alternatively’’ you could also manually copy and update a sample project:
    • Clone or download the sample project to a new directory. (This is the approach used in the Installation Guide.)
    • Update the ‘groupId’ and ‘artifactId’ in the pom.xml downloaded as part of the sample to reflect your own organisation and project name.
    • Move the file for Java class FixtureDebugTest to a package/directory of your choice.
  • Start the wiki, as described in the generated project’s README.md.
  • Start writing tests (and custom fixtures if needed)…

1. Create standalone FitNesse installation

To create a standalone installation execute
mvn clean package -DskipTests

The standalone installation is present in the wiki directory and as ...-standalone.zip in the target directory. It can be distributed by just copying the wiki directory or by copying and extracting the zip file).
This standalone installation can be started using
java -jar fitnesse-standalone.jar
from the wiki directory (or directory where the ‘standalone.zip’ was extracted).

A zip file containing released versions of this project can be downloaded from the Releases or Maven Central.
A similar zip file containing the latest snapshot (i.e. not released but based on the most recent code) version is published as part of the automated build of this project at Sonatype OSSRH.

2. Run on build server

To run the tests on a build server have the build server checkout the project and execute
mvn clean test-compile failsafe:integration-test
Append failsafe:verify to the command if you want the build to fail in case of test failures.

The result in JUnit XML results can be found in: target/failsafe-reports (most build servers will pick these up automatically)
The HTML results can be found in: target/fitnesse-results/index.html

The FitNesse suite to run can be specified by changing the value of the @Suite annotation’s value in nl.hsac.fitnesse.fixture.FixtureDebugTest,
or (preferably) by adding a system property, called fitnesseSuiteToRun, specifying the suite to run to the build server’s mvn execution.
By using the @SuiteFilter and @ExcludeSuiteFilter annotations, or (preferably) by adding suiteFilter and/or excludeSuiteFilter system properties, one can provide tags to in- or exclude and further filter the tests to run within the specified suite. Provide multiple tags by comma-separating them.

The Selenium configuration (e.g. what browser on what platform) to use when testing websites can be overridden by using system properties. This allows different configurations on the build server to test with different browsers, without requiring different Wiki content, but only requiring a different build configuration.

Example reports for Windows using a Sauce Labs Selenium driver and Linux with Chrome Headless are generated in the automated build process of this project.

3. Fixture developer installation

Import this project in your favorite Java IDE (with Maven support).

To start FitNesse: have the IDE execute
mvn compile exec:exec
The port used by FitNesse can be controlled by changing the fitnesse.port property’s value in pom.xml.
FitNesse will be available at http://localhost:/

To debug a fixture used in a FitNesse page: change @Suite annotation’s value to contain page name in nl.hsac.fitnesse.fixture.FixtureDebugTest, then just debug this test.

Making fixtures accessible

To ensure the fixtures (and all dependencies as specified in the project’s pom.xml) are available, add the following lines to the root Wiki page containing the tests.

!path fixtures
!path fixtures/*.jar
!pomFile ../pom.xml@compile

The first two will ensure all classes are accessible when working standalone, the last will be used by Java developers changing fixtures (with a Maven installation).