diff --git a/src/main/java/org/apache/sling/testing/paxexam/SlingOptions.java b/src/main/java/org/apache/sling/testing/paxexam/SlingOptions.java
index 3c0d780..64e55bb 100644
--- a/src/main/java/org/apache/sling/testing/paxexam/SlingOptions.java
+++ b/src/main/java/org/apache/sling/testing/paxexam/SlingOptions.java
@@ -20,7 +20,6 @@
 
 import org.ops4j.pax.exam.options.MavenArtifactProvisionOption;
 import org.ops4j.pax.exam.options.ModifiableCompositeOption;
-import org.ops4j.pax.exam.options.WrappedUrlProvisionOption;
 import org.ops4j.pax.exam.util.PathUtils;
 
 import static org.ops4j.pax.exam.CoreOptions.bootClasspathLibrary;
@@ -319,11 +318,10 @@
             mavenBundle().groupId("commons-collections").artifactId("commons-collections").version(versionResolver),
             mavenBundle().groupId("commons-fileupload").artifactId("commons-fileupload").version(versionResolver),
             mavenBundle().groupId("commons-io").artifactId("commons-io").version(versionResolver),
-            mavenBundle().groupId("commons-lang").artifactId("commons-lang").version(versionResolver),
             mavenBundle().groupId("org.apache.commons").artifactId("commons-collections4").version(versionResolver),
             mavenBundle().groupId("org.apache.commons").artifactId("commons-lang3").version(versionResolver),
             mavenBundle().groupId("org.apache.commons").artifactId("commons-math").version(versionResolver),
-            mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.converter").version(versionResolver),
+            mavenBundle().groupId("org.osgi").artifactId("org.osgi.util.converter").version(versionResolver),
             factoryConfiguration("org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended")
                 .put("user.mapping", new String[]{"org.apache.sling.auth.core=[sling-readall]"})
                 .asOption(),
@@ -416,7 +414,8 @@
         return composite(
             scr(),
             mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.commons.metrics").version(versionResolver),
-            mavenBundle().groupId("io.dropwizard.metrics").artifactId("metrics-core").version(versionResolver)
+            mavenBundle().groupId("io.dropwizard.metrics").artifactId("metrics-core").version(versionResolver),
+            mavenBundle().groupId("org.apache.commons").artifactId("commons-lang3").version(versionResolver)
         );
     }
 
@@ -505,7 +504,7 @@
         return composite(
             webconsole(),
             slingDiscovery(),
-            slingHealthcheck(),
+            felixHealthcheck(),
             httpcomponentsClient(),
             mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.discovery.base").version(versionResolver),
             mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.discovery.commons").version(versionResolver),
@@ -537,7 +536,7 @@
             sling(),
             slingJcr(),
             slingEvent(),
-            slingHealthcheck(),
+            felixHealthcheck(),
             httpcomponentsClient(),
             jackrabbitVault(),
             mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.distribution.api").version(versionResolver),
@@ -589,17 +588,6 @@
         );
     }
 
-    public static ModifiableCompositeOption slingHealthcheck() {
-        return composite(
-            felixHealthcheck(),
-            sling(),
-            slingJcr(),
-            slingScripting(),
-            mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.hc.api").version(versionResolver),
-            mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.hc.support").version(versionResolver)
-        );
-    }
-
     public static ModifiableCompositeOption slingI18n() {
         return composite(
             sling(),
@@ -725,24 +713,18 @@
         );
     }
 
-    // DO NOT REMOVE additional system packages
     public static ModifiableCompositeOption slingXss() {
         return composite(
             sling(),
             httpcomponentsClient(),
             mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.xss").version(versionResolver),
+            mavenBundle().groupId("org.apache.commons").artifactId("commons-text").version(versionResolver),
             factoryConfiguration("org.apache.sling.jcr.repoinit.RepositoryInitializer")
                 .put("scripts", new String[]{"create service user sling-xss with path system/sling\n\nset principal ACL for sling-xss\n  allow   jcr:read    on /apps/sling/xss\n  allow   jcr:read    on /libs/sling/xss\nend\n\ncreate path (sling:Folder) /apps/sling/xss\ncreate path (sling:Folder) /libs/sling/xss"})
                 .asOption(),
             factoryConfiguration("org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended")
                 .put("user.mapping", new String[]{"org.apache.sling.xss=[sling-xss]"})
-                .asOption(),
-            systemPackages(
-                "org.w3c.dom.css",
-                "org.w3c.dom.html",
-                "org.w3c.dom.ranges",
-                "org.w3c.dom.traversal"
-            )
+                .asOption()
         );
     }
 
@@ -780,7 +762,7 @@
     public static ModifiableCompositeOption slingInstallerHealthcheck() {
         return composite(
             slingInstaller(),
-            slingHealthcheck(),
+            felixHealthcheck(),
             mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.installer.hc").version(versionResolver)
         );
     }
@@ -885,9 +867,8 @@
             slingJcr(),
             slingJcrRepoinit(),
             slingAdapter(),
-            slingBundleresource(),
             slingDiscoveryStandalone(),
-            slingHealthcheck(),
+            felixHealthcheck(),
             mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.prefs").version(versionResolver),
             mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.webconsole.plugins.memoryusage").version(versionResolver),
             mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.webconsole.plugins.packageadmin").version(versionResolver),
@@ -941,7 +922,7 @@
             newConfiguration("org.apache.jackrabbit.vault.packaging.impl.PackagingImpl")
                 .put("authIdsForHookExecution", new String[]{"sling-installer-factory-packages"})
                 .put("authIdsForRootInstallation", new String[]{"sling-installer-factory-packages"})
-                .put("packageRoots", new String[]{"/etc/packages"})
+                .put("packageRoots", new String[]{"/var/packages"})
                 .asOption(),
             factoryConfiguration("org.apache.sling.jcr.repoinit.RepositoryInitializer")
                 .put("scripts", new String[]{"create path (sling:Folder) /apps\ncreate path (sling:Folder) /libs\ncreate path (sling:Folder) /var\ncreate path (sling:OrderedFolder) /content"})
@@ -1048,7 +1029,6 @@
         );
     }
 
-    // DO NOT REMOVE org.apache.sling.scripting.jsp-api and org.apache.sling.scripting.el-api
     public static ModifiableCompositeOption slingScriptingJsp() {
         return composite(
             slingScripting(),
@@ -1199,15 +1179,11 @@
         );
     }
 
-    // DO NOT REMOVE additional system packages
     public static ModifiableCompositeOption jackrabbitVault() {
         return composite(
             scr(),
             jackrabbit(),
-            mavenBundle().groupId("org.apache.jackrabbit.vault").artifactId("org.apache.jackrabbit.vault").version(versionResolver),
-            systemPackages(
-                "org.w3c.dom.html"
-            )
+            mavenBundle().groupId("org.apache.jackrabbit.vault").artifactId("org.apache.jackrabbit.vault").version(versionResolver)
         );
     }
 
diff --git a/src/main/java/org/apache/sling/testing/paxexam/SlingVersionResolver.java b/src/main/java/org/apache/sling/testing/paxexam/SlingVersionResolver.java
index 29ac0b4..e8da9de 100644
--- a/src/main/java/org/apache/sling/testing/paxexam/SlingVersionResolver.java
+++ b/src/main/java/org/apache/sling/testing/paxexam/SlingVersionResolver.java
@@ -73,7 +73,7 @@
         versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.activation-api-2.0.1", "2.0.1_1");
         versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.stax-api-1.2", "1.2_1");
         versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.jaxb-api-2.3", "2.3_3");
-        versions.put("org.awaitility:awaitility", "4.1.1");
+        versions.put("org.awaitility:awaitility", "4.2.0");
         versions.put("org.hamcrest:hamcrest", "2.2");
         versions.put("org.ops4j.base:ops4j-base-io", "1.5.1");
         versions.put("org.ops4j.base:ops4j-base-lang", "1.5.1");
@@ -113,7 +113,7 @@
         versions.put("com.composum.nodes:composum-nodes-pckgmgr", "4.1.2");
         versions.put("com.composum.nodes:composum-nodes-usermgr", "4.1.2");
         versions.put("com.google.guava:guava", "15.0");
-        versions.put("com.h2database:h2-mvstore", "1.4.200");
+        versions.put("com.h2database:h2-mvstore", "2.1.214");
         versions.put("com.sun.mail:jakarta.mail", "2.0.1");
         versions.put("commons-codec:commons-codec", "1.15");
         versions.put("commons-collections:commons-collections", "3.2.2");
@@ -130,10 +130,9 @@
         versions.put("org.apache.commons:commons-math", "2.2");
         versions.put("org.apache.commons:commons-text", "1.9");
         versions.put("org.apache.felix:org.apache.felix.cm.json", "1.0.6");
-        versions.put("org.apache.felix:org.apache.felix.converter", "1.0.18");
         versions.put("org.apache.felix:org.apache.felix.healthcheck.api", "2.0.4");
         versions.put("org.apache.felix:org.apache.felix.healthcheck.core", "2.0.14");
-        versions.put("org.apache.felix:org.apache.felix.healthcheck.generalchecks", "2.0.14");
+        versions.put("org.apache.felix:org.apache.felix.healthcheck.generalchecks", "3.0.4");
         versions.put("org.apache.felix:org.apache.felix.healthcheck.webconsoleplugin", "2.0.2");
         versions.put("org.apache.felix:org.apache.felix.inventory", "1.1.0");
         versions.put("org.apache.felix:org.apache.felix.jaas", "1.0.2");
@@ -146,30 +145,33 @@
         versions.put("org.apache.geronimo.specs:geronimo-interceptor_1.1_spec", "1.0");
         versions.put("org.apache.geronimo.specs:geronimo-jcdi_1.0_spec", "1.1");
         versions.put("org.apache.geronimo.specs:geronimo-jta_1.1_spec", "1.1.1");
+        versions.put("org.apache.groovy:groovy", "4.0.4");
+        versions.put("org.apache.groovy:groovy-json", "4.0.4");
+        versions.put("org.apache.groovy:groovy-templates", "4.0.4");
         versions.put("org.apache.httpcomponents:httpclient-osgi", "4.5.13");
         versions.put("org.apache.httpcomponents:httpcore-osgi", "4.4.15");
-        versions.put("org.apache.jackrabbit:jackrabbit-data", "2.20.5");
-        versions.put("org.apache.jackrabbit:jackrabbit-jcr-commons", "2.20.5");
-        versions.put("org.apache.jackrabbit:jackrabbit-jcr-rmi", "2.20.5");
-        versions.put("org.apache.jackrabbit:jackrabbit-spi", "2.20.5");
-        versions.put("org.apache.jackrabbit:jackrabbit-spi-commons", "2.20.5");
-        versions.put("org.apache.jackrabbit:jackrabbit-webdav", "2.20.5");
-        versions.put("org.apache.jackrabbit:oak-api", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-authorization-principalbased", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-blob", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-blob-plugins", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-commons", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-core", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-core-spi", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-jackrabbit-api", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-jcr", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-lucene", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-query-spi", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-security-spi", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-segment-tar", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-store-composite", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-store-document", "1.42.0");
-        versions.put("org.apache.jackrabbit:oak-store-spi", "1.42.0");
+        versions.put("org.apache.jackrabbit:jackrabbit-data", "2.20.6");
+        versions.put("org.apache.jackrabbit:jackrabbit-jcr-commons", "2.20.6");
+        versions.put("org.apache.jackrabbit:jackrabbit-jcr-rmi", "2.20.6");
+        versions.put("org.apache.jackrabbit:jackrabbit-spi", "2.20.6");
+        versions.put("org.apache.jackrabbit:jackrabbit-spi-commons", "2.20.6");
+        versions.put("org.apache.jackrabbit:jackrabbit-webdav", "2.20.6");
+        versions.put("org.apache.jackrabbit:oak-api", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-authorization-principalbased", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-blob", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-blob-plugins", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-commons", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-core", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-core-spi", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-jackrabbit-api", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-jcr", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-lucene", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-query-spi", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-security-spi", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-segment-tar", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-store-composite", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-store-document", "1.44.0");
+        versions.put("org.apache.jackrabbit:oak-store-spi", "1.44.0");
         versions.put("org.apache.jackrabbit.vault:org.apache.jackrabbit.vault", "3.6.0");
         versions.put("org.apache.pdfbox:fontbox", "2.0.26");
         versions.put("org.apache.pdfbox:jempbox", "1.8.16");
@@ -182,7 +184,7 @@
         versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.activation-api-2.0.1", "2.0.1_1");
         versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.annotation-api-1.3", "1.3_3");
         versions.put("org.apache.sling:org.apache.sling.adapter", "2.2.0");
-        versions.put("org.apache.sling:org.apache.sling.api", "2.25.0");
+        versions.put("org.apache.sling:org.apache.sling.api", "2.25.4");
         versions.put("org.apache.sling:org.apache.sling.auth.core", "1.5.6");
         versions.put("org.apache.sling:org.apache.sling.auth.form", "1.0.24");
         versions.put("org.apache.sling:org.apache.sling.bundleresource.impl", "2.3.4");
@@ -199,33 +201,31 @@
         versions.put("org.apache.sling:org.apache.sling.commons.johnzon", "1.2.14");
         versions.put("org.apache.sling:org.apache.sling.commons.messaging", "1.0.2");
         versions.put("org.apache.sling:org.apache.sling.commons.messaging.mail", "2.0.0");
-        versions.put("org.apache.sling:org.apache.sling.commons.metrics", "1.2.10");
+        versions.put("org.apache.sling:org.apache.sling.commons.metrics", "1.2.12");
         versions.put("org.apache.sling:org.apache.sling.commons.mime", "2.2.2");
         versions.put("org.apache.sling:org.apache.sling.commons.osgi", "2.4.2");
         versions.put("org.apache.sling:org.apache.sling.commons.scheduler", "2.7.12");
         versions.put("org.apache.sling:org.apache.sling.commons.threads", "3.2.22");
         versions.put("org.apache.sling:org.apache.sling.discovery.api", "1.0.4");
-        versions.put("org.apache.sling:org.apache.sling.discovery.base", "2.0.12");
-        versions.put("org.apache.sling:org.apache.sling.discovery.commons", "1.0.26");
-        versions.put("org.apache.sling:org.apache.sling.discovery.oak", "1.2.36");
+        versions.put("org.apache.sling:org.apache.sling.discovery.base", "2.0.14");
+        versions.put("org.apache.sling:org.apache.sling.discovery.commons", "1.0.28");
+        versions.put("org.apache.sling:org.apache.sling.discovery.oak", "1.2.40");
         versions.put("org.apache.sling:org.apache.sling.discovery.standalone", "1.0.2");
         versions.put("org.apache.sling:org.apache.sling.discovery.support", "1.0.6");
         versions.put("org.apache.sling:org.apache.sling.distribution.api", "0.7.0");
         versions.put("org.apache.sling:org.apache.sling.distribution.core", "0.5.0");
-        versions.put("org.apache.sling:org.apache.sling.engine", "2.9.0");
-        versions.put("org.apache.sling:org.apache.sling.event", "4.3.0");
+        versions.put("org.apache.sling:org.apache.sling.engine", "2.9.2");
+        versions.put("org.apache.sling:org.apache.sling.event", "4.3.6");
         versions.put("org.apache.sling:org.apache.sling.event.dea", "1.1.4");
-        versions.put("org.apache.sling:org.apache.sling.extensions.webconsolesecurityprovider", "1.2.4");
+        versions.put("org.apache.sling:org.apache.sling.extensions.webconsolesecurityprovider", "1.2.6");
         versions.put("org.apache.sling:org.apache.sling.featureflags", "1.2.2");
         versions.put("org.apache.sling:org.apache.sling.fsresource", "2.2.0");
-        versions.put("org.apache.sling:org.apache.sling.hc.api", "1.0.4");
-        versions.put("org.apache.sling:org.apache.sling.hc.support", "1.0.6");
         versions.put("org.apache.sling:org.apache.sling.i18n", "2.5.18");
         versions.put("org.apache.sling:org.apache.sling.installer.console", "1.1.0");
         versions.put("org.apache.sling:org.apache.sling.installer.core", "3.12.0");
         versions.put("org.apache.sling:org.apache.sling.installer.factory.configuration", "1.4.2");
         versions.put("org.apache.sling:org.apache.sling.installer.factory.packages", "1.0.4");
-        versions.put("org.apache.sling:org.apache.sling.installer.hc", "2.0.2");
+        versions.put("org.apache.sling:org.apache.sling.installer.hc", "2.1.0");
         versions.put("org.apache.sling:org.apache.sling.installer.provider.file", "1.3.4");
         versions.put("org.apache.sling:org.apache.sling.installer.provider.jcr", "3.3.0");
         versions.put("org.apache.sling:org.apache.sling.jcr.api", "2.4.0");
@@ -236,7 +236,7 @@
         versions.put("org.apache.sling:org.apache.sling.jcr.jackrabbit.accessmanager", "3.0.10");
         versions.put("org.apache.sling:org.apache.sling.jcr.jackrabbit.usermanager", "2.2.22");
         versions.put("org.apache.sling:org.apache.sling.jcr.oak.server", "1.3.0");
-        versions.put("org.apache.sling:org.apache.sling.jcr.repoinit", "1.1.38");
+        versions.put("org.apache.sling:org.apache.sling.jcr.repoinit", "1.1.40");
         versions.put("org.apache.sling:org.apache.sling.jcr.resource", "3.2.0");
         versions.put("org.apache.sling:org.apache.sling.jcr.webconsole", "1.1.0");
         versions.put("org.apache.sling:org.apache.sling.jcr.webdav", "2.3.8");
@@ -247,11 +247,11 @@
         versions.put("org.apache.sling:org.apache.sling.pipes", "4.4.2");
         versions.put("org.apache.sling:org.apache.sling.provisioning.model", "1.8.6");
         versions.put("org.apache.sling:org.apache.sling.query", "4.0.4");
-        versions.put("org.apache.sling:org.apache.sling.repoinit.parser", "1.6.14");
+        versions.put("org.apache.sling:org.apache.sling.repoinit.parser", "1.7.0");
         versions.put("org.apache.sling:org.apache.sling.resource.inventory", "1.0.8");
         versions.put("org.apache.sling:org.apache.sling.resource.presence", "0.0.2");
         versions.put("org.apache.sling:org.apache.sling.resourcemerger", "1.4.0");
-        versions.put("org.apache.sling:org.apache.sling.resourceresolver", "1.8.6");
+        versions.put("org.apache.sling:org.apache.sling.resourceresolver", "1.9.0");
         versions.put("org.apache.sling:org.apache.sling.rewriter", "1.3.2");
         versions.put("org.apache.sling:org.apache.sling.scripting.api", "2.2.0");
         versions.put("org.apache.sling:org.apache.sling.scripting.core", "2.4.8");
@@ -280,16 +280,14 @@
         versions.put("org.apache.sling:org.apache.sling.urlrewriter", "0.0.2");
         versions.put("org.apache.sling:org.apache.sling.validation.api", "1.0.0");
         versions.put("org.apache.sling:org.apache.sling.validation.core", "1.0.4");
-        versions.put("org.apache.sling:org.apache.sling.xss", "2.2.18");
-        versions.put("org.apache.tika:tika-core", "1.28.2");
-        versions.put("org.apache.tika:tika-parsers", "1.28.2");
+        versions.put("org.apache.sling:org.apache.sling.xss", "2.2.20");
+        versions.put("org.apache.tika:tika-core", "1.28.4");
+        versions.put("org.apache.tika:tika-parsers", "1.28.4");
         versions.put("org.attoparser:attoparser", "2.0.5.RELEASE");
-        versions.put("org.apache.groovy:groovy", "4.0.3");
-        versions.put("org.apache.groovy:groovy-json", "4.0.3");
-        versions.put("org.apache.groovy:groovy-templates", "4.0.3");
         versions.put("org.freemarker:freemarker", "2.3.31");
         versions.put("org.javassist:javassist", "3.29.0-GA");
         versions.put("org.mongodb:mongo-java-driver", "3.12.11");
+        versions.put("org.osgi:org.osgi.util.converter", "1.0.9");
         versions.put("org.unbescape:unbescape", "1.1.6.RELEASE");
     }
 
diff --git a/src/main/resources/templates/SlingOptions.hbs b/src/main/resources/templates/SlingOptions.hbs
index f0a00fb..dc5b8e2 100644
--- a/src/main/resources/templates/SlingOptions.hbs
+++ b/src/main/resources/templates/SlingOptions.hbs
@@ -20,7 +20,6 @@
 
 import org.ops4j.pax.exam.options.MavenArtifactProvisionOption;
 import org.ops4j.pax.exam.options.ModifiableCompositeOption;
-import org.ops4j.pax.exam.options.WrappedUrlProvisionOption;
 import org.ops4j.pax.exam.util.PathUtils;
 
 import static org.ops4j.pax.exam.CoreOptions.bootClasspathLibrary;
diff --git a/src/main/resources/templates/SlingVersionResolver.hbs b/src/main/resources/templates/SlingVersionResolver.hbs
index d41547b..6cfb8c8 100644
--- a/src/main/resources/templates/SlingVersionResolver.hbs
+++ b/src/main/resources/templates/SlingVersionResolver.hbs
@@ -73,7 +73,7 @@
         versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.activation-api-2.0.1", "2.0.1_1");
         versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.stax-api-1.2", "1.2_1");
         versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.jaxb-api-2.3", "2.3_3");
-        versions.put("org.awaitility:awaitility", "4.1.1");
+        versions.put("org.awaitility:awaitility", "4.2.0");
         versions.put("org.hamcrest:hamcrest", "2.2");
         versions.put("org.ops4j.base:ops4j-base-io", "1.5.1");
         versions.put("org.ops4j.base:ops4j-base-lang", "1.5.1");
diff --git a/src/test/java/org/apache/sling/testing/paxexam/it/tests/SlingOptionsSlingHealthcheckIT.java b/src/test/java/org/apache/sling/testing/paxexam/it/tests/SlingOptionsSlingHealthcheckIT.java
deleted file mode 100644
index 415c01e..0000000
--- a/src/test/java/org/apache/sling/testing/paxexam/it/tests/SlingOptionsSlingHealthcheckIT.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.sling.testing.paxexam.it.tests;
-
-import org.apache.sling.testing.paxexam.it.SlingOptionsTestSupport;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Configuration;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.junit.PaxExam;
-import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
-import org.ops4j.pax.exam.spi.reactors.PerClass;
-
-import static org.apache.sling.testing.paxexam.SlingOptions.slingHealthcheck;
-import static org.ops4j.pax.exam.CoreOptions.options;
-
-@RunWith(PaxExam.class)
-@ExamReactorStrategy(PerClass.class)
-public class SlingOptionsSlingHealthcheckIT extends SlingOptionsTestSupport {
-
-    @Configuration
-    public Option[] configuration() {
-        return options(
-            baseConfiguration(),
-            slingHealthcheck()
-        );
-    }
-
-    @Test
-    public void test() {
-    }
-
-}
