Adobe AEM / CQ Integration Tests Example
This project demonstrates how to use the Sling Testing Tools to test components in a running AEM instance. The default behaviour is to start up a new AEM instance as part of the maven build, but an already running instance can be used by the use of extra parameters.
Before you use this project you must do the following
- Enter your AEM license details in the
Install the AEM quickstart JAR in a maven repository with the following coordinates
<dependency> <groupId>com.adobe.aem</groupId> <artifactId>cq-quickstart</artifactId> <version>6.0.0</version> <classifier>standalone</classifier> </dependency>
Modify your maven settings.xml or the top level pom in this project with the maven repository details you used in step 2.
- Install maven 3.2 or later and place on your path
- Install Java 6 or 7 and place on your path
Running the tests in a new AEM instance
This mode of use is ideal for a CI setup. The AEM 6 quickstart will be started up using a free HTTP port, the bundles from this project installed and then the integration tests run. To do this, run the following from the top level directory of this project
mvn clean verify -P integrationTests
Note that this takes some time - on a 16Gb MacBook Pro Retina with SSD this takes around 4 minutes
Running the tests in an already running instance
This mode is useful for developers who need to run the tests rapidly during day to day development. With an already running AEM instance using defaults, run the following from the top level directory of this project
mvn clean verify -P integrationTests -Dtest.server.url=http://localhost:4502
The test setup will be left in place after the tests have run. This allows you to debug any failing tests.
Deploying the project
If you have a running AEM instance you can build and package the whole project and deploy into AEM with
mvn clean install -PautoInstallPackage -PautoInstallBundle
Modules and interesting bits
The main parts of the project are:
- models: contains a [Sling Model] bean (http://sling.apache.org/documentation/bundles/models.html) to support the Title component
- ui.apps: contains the /apps (and /etc) parts of the project, ie JS&CSS clientlibs, components, templates, runmode specific configs as well as Hobbes-tests
- ui.content: contains sample content using the components from the ui.apps
- it.launcher: contains glue code that deploys the project bundles to the AEM server and triggers the integration tests
com.ninedemons.aemtesting.models.title.TitleModel class is a Sling Model that is used by the Title component at
java class is a drop in replacement for the
title.js file that was used originally in the Sightly
The most interesting parts are
it.launcher/pom.xml which bootstraps the AEM instance and
it.launcher/src/test/java/com/ninedemons/aemtesting/models/title/TitleModelTest.java which uploads a test JSP, creates content and then checks the result is correct.
Only one scenario is in the test at the moment, but is shows how the approach works.
This project was originally generated from the Adobe Marketing Cloud AEM maven archetype.