Fork me on GitHub

Release Notes

Version Compatibility

Plugin Version Bloomreach Experience Manager Version
6.1.0 17.0.0
6.0.0 17.0.0
5.5.0 16.7.0
5.4.0 16.7.0
5.3.x 16.7.0
5.2.0 16.7.0
5.1.0 16.6.5
5.0.1 16.6.5
5.0.0 16.0.0
4.x 15.x
3.x 14.x
2.1.2 13.4.x
2.0.0 13.1
1.x 12.x

Release Notes

6.1.0

Parallel Test Isolation and Log Noise Reduction (FORGE-668)

Improvements:

  • Parallel test isolation — IsolatingComponentManager — A new IsolatingComponentManager is registered once with HstServices at class load and never replaced. Each test class sets its own SpringComponentManager via a per-thread ThreadLocal delegate, eliminating the flakiness caused by concurrent test classes writing to the global HstServices static.
  • contextPath() override in AbstractResourceTest — New protected method, defaulting to /site. Annotation-driven tests derive a per-class context path (e.g., /site-MyTest), fully isolating servlet context registrations when test classes run concurrently.
  • SimpleComponentTest teardown fix — Captures and restores the pre-existing ComponentManager on teardown. Prevents SimpleComponentTest from clobbering the IsolatingComponentManager when brut-components and brut-resources tests run in the same JVM.
  • MODEL_CACHE atomicity — Cache write changed from non-atomic get + put to putIfAbsent, preventing silent overwrites when two test threads bootstrap with the same configuration fingerprint concurrently.
  • Log noise reduction — Numerous noisy loggers suppressed across all modules: Jackrabbit session/UUID/cache warnings (SessionImpl, JcrContentProcessor, ItemStateReferenceCache), HCM config engine duplicates (ConfigurationTreeBuilder, ConfigurationConfigService), HST template and sitemap warnings (HstComponentConfigurationService, LocationMapTreeComponentDocuments), and RuntimeTypeStubber / ConfigServiceBootstrapStrategy operational messages downgraded from WARN to DEBUG. All are structural noise in a BRUT test context.
  • Surefire GC switch — JVM GC flag changed from -XX:+UseParallelGC to -XX:+UseZGC -XX:+ZGenerational, reducing pause times during the allocation-heavy bootstrap phase.
  • POM cleanup — Removed redundant project.build.javaVersion property and explicit maven-compiler-plugin source/target configuration (both were already governed by the parent POM).

6.0.0

Breaking Changes:

  • brXM 17.0.0 required — Parent POM upgraded from hippo-cms7-project:16.7.0 to 17.0.0. Projects on 16.x must remain on BRUT 5.x.
  • Java 21 required — CI and runtime now target Java 21.
  • JUnit Jupiter 6.0.3 — brXM 17.0.0 sets junit-jupiter.version=6.0.3. BRUT's @Nested test injection now uses TestInstances.getAllInstances() instead of synthetic field reflection, compatible with Java 21 bytecode.
  • RuntimeRepositoryException package change — Removed from org.hippoecm.hst.core.jcr; now imported from org.hippoecm.repository.api. Update any direct imports in your project.

Improvements:

  • JaCoCo coverage reporting — module-level and aggregate reports generated during build

5.5.0

  • Namespace pre-registration before applyNamespacesAndNodeTypes — prevents NamespaceException failures from addon module ordering
  • Missing supertype pre-stubbing — stubs supertypes referenced in CNDs but absent from the test classpath before type registration
  • Retry loops for namespace registration and config delta — auto-recovers from invalid supertype and "is not a mixin" errors
  • Unmapped mount patching — sets hst:ismapped=false on mounts with unresolvable site references, preventing errors in multi-tenant setups
  • RuntimeTypeStubber.registerStubMixinNodeType() — new method to register stub mixin types specifically
  • SpringComponentManager.getInternalApplicationContext() — exposes Spring context for test setup
  • AbstractPageModelTest registers a GenericWebApplicationContext on the test servlet context — fixes WebApplicationContextUtils.getWebApplicationContext() returning null
  • Bootstrap log noise reduction — noisy ConfigService loggers suppressed during bootstrap

5.4.0

  • FORGE-626 Addon HCM module auto-discovery: non-platform, non-project HCM modules on the test classpath are loaded automatically. Upgrade note: tests using loadProjectContent = true may pick up additional modules; use excludeDependencyHcmModules to opt out of specific ones.
  • New excludeDependencyHcmModules parameter on @BrxmJaxrsTest and @BrxmPageModelTest to opt out of specific addon modules
  • dependencyHcmModules repurposed as force-include override for modules that auto-discovery would miss
  • Ordering fix: addon modules now load before project modules to ensure node types are registered first

5.3.0

  • Page Model API v1.0 document resolution: documents and imagesets in the page section are now correctly parsed and resolved
  • resolveModelContent(component, modelName, type) and resolveModelContentList(component, modelName, type) — helper methods replacing manual stream pipelines for resolving $ref content
  • Diagnostics package: PageModelAssert, PageModelDiagnostics, and ConfigurationDiagnostics provide actionable failure output with YAML file references and fix recommendations
  • JCR repository shared across test classes with the same configuration fingerprint — Jackrabbit bootstraps once per fingerprint
  • ConfigurationModel cached by source file hash — repeated YAML/CND processing skipped for classes with identical HCM modules

5.2.0

  • Breaking: brXM 16.7.0 required — parent POM upgraded from 16.6.5
  • Breaking: commons-lang3 migration in internal Spring config (affects hst-manager.xml overrides)
  • Security: CVE-2025-48924 — CI credential hardening (heredoc quoting, Maven env syntax, fork PR skip)
  • Fork PR detection — CI skips build with notice instead of 401 failure
  • Log level normalization — operational messages downgraded from WARN to INFO/DEBUG
  • Javadoc scope warnings added to all test annotations

5.1.0

Quick Start Guides: Getting Started | Quick Reference | Common Patterns | Troubleshooting

  • FORGE-577 Annotation-based testing with zero-config setup
  • JUnit 5 parameter injection: Test harness via @Test method parameters (recommended)
  • Production-parity testing with ConfigServiceRepository
  • New annotations: @BrxmPageModelTest, @BrxmJaxrsTest, @BrxmComponentTest
  • Auto-detection of node types from @Node(jcrType="...") annotations in bean packages
  • One-liner ConfigService integration via loadProjectContent = true
  • Fluent request builder API with typed JSON responses
  • HTTP Session support in MockHstRequest
  • Enhanced error messages with actionable fix suggestions

5.0.1

  • Multi-test support with proper per-test isolation
  • Thread-safe initialization with ReentrantLock synchronization
  • RequestContextProvider support for JAX-RS resources
  • JUnit 4 @Before pattern fully supported
  • Improved null-safety and error handling

5.0.0

Release Notes of 4.x

4.0.1

  • FORGE-557 Upgrade for v15.0.1+ compatibility

4.0.0

Release Notes of 3.x

3.0.0

  • Upgrade for v14 compatibility

Release Notes of 2.x

2.1.2

  • Upgrade for v13.4.0 compatibility

2.0.0

  • Upgrade for v13 compatibility

Release Notes of 1.x

1.0.1

  • Initial release.

1.0.0

  • Older release with different group id