Quality gates in testing
The following diagram provides a detailed view of available quality gates and their use in the overall testing strategy and the AEM as a Cloud Service deployment process.
Summary customer provided quality gates
Unit Tests | Custom Functional Tests | Custom UI Tests | Customer Validations | Manual Testing | |
---|---|---|---|---|---|
Production Pipeline | Yes Blocking | Yes Blocking 60m Timeout | Yes Blocking 30m Timeout | No | No |
Non-Production Pipeline | Yes Blocking | Opt-In Blocking 60m Timeout | Opt-In Blocking 30m Timeout | No | No |
Adobe Internal Validation | Yes Blocking | Yes Blocking 60m Timeout | Yes Blocking 30m Timeout | No | No |
Customer CI/CD | Yes | Yes | Yes | Yes | Yes |
Customer Local Developer | Yes | Yes | Yes | Yes | Yes |
Unit test
You are encouraged to provide the unit tests for your AEM application, which are the foundation of every testing strategy. They are intended to run fast and often and give early and fast feedback. They are tightly integrated into the developer workflows, your own CI/CD and the AEM cloud service deployment pipelines.
They are implemented using JUnit and are executed with Maven. See the core module of the AEM Project Archetype for an example unit test for AEM and getting started.
Code quality
This quality gate is configured out-of-the-box and runs static code analysis on your AEM application code.
See Code Quality Testing and Custom code quality rules for more information.
Product tests
Product functional tests are stable HTTP integration tests (ITs) for core AEM functionality, including authoring and replication tasks. Adobe provides and maintains them out-of-the-box. They are intended to prevent changes to custom application code from being deployed if it breaks core functionality in the AEM product.
They use JUnit for implementation, run with Maven, and rely on the official AEM Testing Clients. The product test suite is maintained as
an open-source project, follows best-practices and can be considered a good starting point for the implementation of your tests.
Custom functional tests
Similar to the product tests, customer functional tests are HTTP integration tests (ITs) implemented with JUnit, run using Maven, and built on top of the official AEM Testing Clients.
To maintain efficient pipeline runs, Adobe advises focusing on key features and primary user interaction flows, aiming for a functional test runtime of around 15 minutes or less. Full functional test suites that exceed this time should be executed as part of the general customer validation pipelines during the development process.
See open-sourced product tests or the it.tests module of the AEM Projects Archetype for examples.
See Java Functional Tests for more information.
Custom UI tests
To maximize risk control for your customer-specific development, Adobe encourages you to capture critical UI tests into AEM as a Cloud Service. Keep them limited but focused on maximizing their impact on the customer experience.
The tests are packaged in a Docker image - designed to be as volatile as possible (with support for Cypress, Playwright, Selenium, Java, and JavaScript). They follow the same characteristics and purposes like the custom functional tests.
To keep pipeline executions efficient, Adobe recommends focusing on key features and main user interaction flows. Full UI test suites that exceed this quality gate should be executed as part of the general customer validation pipelines. Incorporate them into the customer’s development process.
See open-sourced example tests or the ui.tests module of the AEM Projects Archetype for examples.
See Custom UI Testing for more information.