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.

AEM Cloud Service deployment quality gates

Summary customer provided quality gates

Unit TestsCustom
Functional Tests
Custom
UI Tests
Customer
Validations
Manual
Testing
Production PipelineYes
Blocking
Yes
Blocking
60m Timeout
Yes
Blocking
30m Timeout
NoNo
Non-Production PipelineYes
Blocking
Opt-In
Blocking
60m Timeout
Opt-In
Blocking
30m Timeout
NoNo
Adobe Internal ValidationYes
Blocking
Yes
Blocking
60m Timeout
Yes
Blocking
30m Timeout
NoNo
Customer CI/CDYesYesYesYesYes
Customer Local DeveloperYesYesYesYesYes

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.

NOTE
Custom functional tests run in both production and non-production (opt-in) pipelines used for AEM application change deployments and AEM product push updates. They play a crucial role in ensuring your application functions properly and enhancing release safety. The customer functional tests are also executed in internal pre-release validation pipelines for each customer, which helps provide early feedback.

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.

NOTE
Custom UI tests are executed in both production and non-production (opt-in) pipelines used for AEM application change deployments and AEM product push updates. They are essential in ensuring your application’s proper functioning and enhancing release safety. The customer UI tests are also executed in internal pre-release validation pipelines for each customer, which helps provide early feedback.
Non-Selenium containers should execute tests using an HTTP proxy based on the environment variables in the UI Testing Section.

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.