You know that situation? You have done a roll out of a new version of an application and a short while after being in production, there is this call from an angry customer? A bug, fixed in a previous release did re appear in the new release!
How annoying is that. And you ask yourself DID THEY NOT TEST IT? So if you walk to the QA department and ask nicely about “Testing”, what answer would you get? I thinks that’s the moment when you start to think about “Automated Testing”. And automated testing, without an automated build of your application is nice, but only the half way!
To collect all the pieces to make this happen was a part of my mission to go to IBM Ireland and meet the XPages Team in Dublin. And a day after 3 days of hard work with them, it’s time to talk about automated build and testing of XPages application. First the story line and pre requirement:
- You are working on a XPages Application.
- The Application is available as on disk project in a SCM (Source Control Managementsysten)
- You have build some selenium UI Tests
Each night or on every change to your application that is commited to the SCM, you want to have a automated build of the application and the selenium tests should run.
Thanks to the Headless Designer (see this Wiki about), you can create with a command line directly a new NSF. But there is more to do then only executing a command line. You want to be sure that the designer has all required plugins (like OpenNTF Essentials) during the build process. And all of this plugins should also be removed after a build. After the build you want to have the application moved to a test server and the selenium tests should be executed against this application. The whole build process is now covered by a maven plugin. You can see the progress on that on this GitHub project.
The headlessdesigner-maven-plugin covers now the following steps:
- Installing defined features to the designer
- Enabling defined features in the designer
- Build the application from on disk project
- Disabling defined features in the designer
- Uninstalling of the features
- Copy the build NSF to the target directory of the maven project
The following steps are planed for the next 2-3 weeks:
- Distributing the NSF to the DominoServer
- Building a archetype plugin to build per command line a new maven project
- Thinking about distribution of the plugins to a official maven repository