diff --git a/jaxrs-tck/docs/TCK-Exclude-List.txt b/jaxrs-tck/docs/TCK-Exclude-List.txt
index 33f0b77..392f20c 100644
--- a/jaxrs-tck/docs/TCK-Exclude-List.txt
+++ b/jaxrs-tck/docs/TCK-Exclude-List.txt
@@ -18,140 +18,3 @@
 # This is intended only for documentation purpose and is not used to exclude any tests.
 # The tests are excluded from the test source using @Disabled tag in JUnit framework.
 #
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithCallbackStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithCallbackStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#headTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#headWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithCallbackStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithCallbackStringWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithCallbackWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithGenericTypeResponseWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithGenericTypeStringWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithResponseClassWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithStringClassWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithStringCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithStringCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithStringCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithStringClassWhileServerWaitTest
-
-#
-#
-ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/sseeventsource/JAXRSClientIT.java#connectionLostForDefault500msTest
-
-# https://github.com/jakartaee/rest/issues/1106
-ee/jakarta/tck/ws/rs/api/rs/core/uribuilder/JAXRSClientIT.java#replaceQueryTest4
-
-# https://github.com/jakartaee/rest/issues/1123
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#headTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#headTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithEntityTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithStringClassWithEntityTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithResponseClassWithEntityTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeStringWithEntityTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeResponseWithEntityTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithGenericTypeResponseTest
-
-# https://github.com/jakartaee/rest/issues/1138
-ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT#getNormalizedUriTest
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/rs/core/uribuilder/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/rs/core/uribuilder/JAXRSClientIT.java
index d23920f..05ee918 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/rs/core/uribuilder/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/rs/core/uribuilder/JAXRSClientIT.java
@@ -32,11 +32,9 @@
 
 import org.junit.jupiter.api.Test;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -1715,7 +1713,6 @@
    * IllegalArgumentException is thrown when query cannot be parsed.
    */
   @Test
-  @Disabled
   public void replaceQueryTest4() throws Fault {
     String value = "http://localhost:8080?name1=x&name2=%20&name3=x+y&name4=x%20y";
 
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java
index 52a001c..9cbd67f 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java
@@ -28,13 +28,11 @@
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -415,7 +413,6 @@
    * obtained from an injected UriInfo
    */
   @Test
-  @Disabled
   public void getNormalizedUriTest() throws Fault {
     setProperty(Property.REQUEST, buildRequest(GET, URIInfoTest.DECODED));
     invoke();
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java
index b01f6bc..32b6407 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java
@@ -34,14 +34,11 @@
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -93,7 +90,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteTest() throws Fault {
     super.deleteTest();
   }
@@ -117,7 +113,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithStringClassWhileServerWaitTest()
       throws Fault {
     super.deleteWithStringClassWhileServerWaitTest();
@@ -132,7 +127,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.deleteWithResponseClassWhileServerWaitTest();
@@ -162,7 +156,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.deleteWithGenericTypeStringWhileServerWaitTest();
@@ -177,7 +170,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.deleteWithGenericTypeResponseWhileServerWaitTest();
@@ -207,7 +199,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithCallbackWhileServerWaitTest() throws Fault {
     super.deleteWithCallbackWhileServerWaitTest();
   }
@@ -221,7 +212,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithCallbackStringWhileServerWaitTest()
       throws Fault {
     super.deleteWithCallbackStringWhileServerWaitTest();
@@ -254,7 +244,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getTest() throws Fault {
     super.getTest();
   }
@@ -278,7 +267,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithStringClassWhileServerWaitTest() throws Fault {
     super.getWithStringClassWhileServerWaitTest();
   }
@@ -292,7 +280,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.deleteWithResponseClassWhileServerWaitTest();
@@ -323,7 +310,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.getWithGenericTypeStringWhileServerWaitTest();
@@ -338,7 +324,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.getWithGenericTypeResponseWhileServerWaitTest();
@@ -368,7 +353,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithCallbackWhileServerWaitTest() throws Fault {
     super.getWithCallbackWhileServerWaitTest();
   }
@@ -382,7 +366,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithCallbackStringWhileServerWaitTest()
       throws Fault {
     super.getWithCallbackStringWhileServerWaitTest();
@@ -417,7 +400,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void headTest() throws Fault {
     super.headTest();
   }
@@ -441,7 +423,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void headWithCallbackWhileServerWaitTest() throws Fault {
     super.headWithCallbackWhileServerWaitTest();
   }
@@ -464,7 +445,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodTest() throws Fault {
     super.methodTest();
   }
@@ -488,7 +468,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithStringClassWhileServerWaitTest()
       throws Fault {
     super.methodWithStringClassWhileServerWaitTest();
@@ -503,7 +482,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.methodWithResponseClassWhileServerWaitTest();
@@ -533,7 +511,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.methodWithGenericTypeStringWhileServerWaitTest();
@@ -548,7 +525,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.methodWithGenericTypeResponseWhileServerWaitTest();
@@ -579,7 +555,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithCallbackWhileServerWaitTest() throws Fault {
     super.methodWithCallbackWhileServerWaitTest();
   }
@@ -593,7 +568,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithCallbackStringWhileServerWaitTest()
       throws Fault {
     super.methodWithCallbackStringWhileServerWaitTest();
@@ -624,7 +598,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithEntityWhileServerWaitTest() throws Fault {
     super.methodWithEntityWhileServerWaitTest();
   }
@@ -644,7 +617,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithStringClassWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithStringClassWithEntityWhileServerWaitTest();
@@ -659,7 +631,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithResponseClassWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithResponseClassWithEntityWhileServerWaitTest();
@@ -674,7 +645,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeStringWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithGenericTypeStringWithEntityWhileServerWaitTest();
@@ -704,7 +674,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeResponseWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithGenericTypeResponseWithEntityWhileServerWaitTest();
@@ -734,7 +703,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithCallbackWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithCallbackWithEntityWhileServerWaitTest();
@@ -749,7 +717,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithCallbackStringWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithCallbackStringWithEntityWhileServerWaitTest();
@@ -784,7 +751,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsTest() throws Fault {
     super.optionsTest();
   }
@@ -809,7 +775,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithStringClassWhileServerWaitTest()
       throws Fault {
     super.optionsWithStringClassWhileServerWaitTest();
@@ -824,7 +789,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.optionsWithResponseClassWhileServerWaitTest();
@@ -854,7 +818,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.optionsWithGenericTypeStringWhileServerWaitTest();
@@ -869,7 +832,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.optionsWithGenericTypeResponseWhileServerWaitTest();
@@ -899,7 +861,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithCallbackWhileServerWaitTest()
       throws Fault {
     super.optionsWithCallbackWhileServerWaitTest();
@@ -914,7 +875,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithStringCallbackWhileServerWaitTest()
       throws Fault {
     super.optionsWithStringCallbackWhileServerWaitTest();
@@ -948,7 +908,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postTest() throws Fault {
     super.postTest();
   }
@@ -972,7 +931,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postWithStringClassWhileServerWaitTest() throws Fault {
     super.postWithStringClassWhileServerWaitTest();
   }
@@ -986,7 +944,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.postWithResponseClassWhileServerWaitTest();
@@ -1016,7 +973,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.postWithGenericTypeStringWhileServerWaitTest();
@@ -1031,7 +987,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.postWithGenericTypeResponseWhileServerWaitTest();
@@ -1061,7 +1016,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postWithCallbackWhileServerWaitTest() throws Fault {
     super.postWithCallbackWhileServerWaitTest();
   }
@@ -1095,7 +1049,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putTest() throws Fault {
     super.putTest();
   }
@@ -1134,7 +1087,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithStringClassWhileServerWaitTest() throws Fault {
     super.putWithStringClassWhileServerWaitTest();
   }
@@ -1164,7 +1116,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.putWithResponseClassWhileServerWaitTest();
@@ -1179,7 +1130,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.putWithGenericTypeStringWhileServerWaitTest();
@@ -1194,7 +1144,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.putWithGenericTypeResponseWhileServerWaitTest();
@@ -1209,7 +1158,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithCallbackWhileServerWaitTest() throws Fault {
     super.putWithCallbackWhileServerWaitTest();
   }
@@ -1223,7 +1171,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithStringCallbackWhileServerWaitTest()
       throws Fault {
     super.putWithStringCallbackWhileServerWaitTest();
@@ -1257,7 +1204,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceTest() throws Fault {
     super.traceTest();
   }
@@ -1282,7 +1228,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithStringClassWhileServerWaitTest() throws Fault {
     super.traceWithStringClassWhileServerWaitTest();
   }
@@ -1296,7 +1241,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.traceWithResponseClassWhileServerWaitTest();
@@ -1327,7 +1271,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.traceWithGenericTypeStringWhileServerWaitTest();
@@ -1342,7 +1285,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.traceWithGenericTypeResponseWhileServerWaitTest();
@@ -1373,7 +1315,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithCallbackWhileServerWaitTest() throws Fault {
     super.traceWithCallbackWhileServerWaitTest();
   }
@@ -1404,7 +1345,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithStringCallbackWhileServerWaitTest()
       throws Fault {
     super.traceWithStringCallbackWhileServerWaitTest();
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java
index 96f7091..b2144ed 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java
@@ -34,14 +34,11 @@
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -107,7 +104,6 @@
    * 
    */
   @Test
-  @Disabled
   public void deleteWithStringClassTest() throws Fault {
     super.deleteWithStringClassTest();
   }
@@ -121,7 +117,6 @@
    * 
    */
   @Test
-  @Disabled
   public void deleteWithResponseClassTest() throws Fault {
     super.deleteWithResponseClassTest();
   }
@@ -134,7 +129,6 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeStringTest() throws Fault {
     super.deleteWithGenericTypeStringTest();
   }
@@ -147,7 +141,6 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeResponseTest() throws Fault {
     super.deleteWithGenericTypeResponseTest();
   }
@@ -164,7 +157,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getTest() throws Fault {
     super.getTest();
   }
@@ -177,7 +169,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithStringClassTest() throws Fault {
     super.getWithStringClassTest();
   }
@@ -190,7 +181,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithResponseClassTest() throws Fault {
     super.getWithResponseClassTest();
   }
@@ -203,7 +193,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithGenericTypeStringTest() throws Fault {
     super.getWithGenericTypeStringTest();
   }
@@ -216,7 +205,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithGenericTypeResponseTest() throws Fault {
     super.getWithGenericTypeResponseTest();
   }
@@ -233,7 +221,6 @@
    * @test_Strategy: Invoke HTTP HEAD method for the current request
    */
   @Test
-  @Disabled
   public void headTest() throws Fault {
     super.headTest();
   }
@@ -262,7 +249,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithStringClassTest() throws Fault {
     super.optionsWithStringClassTest();
   }
@@ -275,7 +261,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithResponseClassTest() throws Fault {
     super.optionsWithResponseClassTest();
   }
@@ -288,7 +273,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeStringTest() throws Fault {
     super.optionsWithGenericTypeStringTest();
   }
@@ -301,7 +285,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeResponseTest() throws Fault {
     super.optionsWithGenericTypeResponseTest();
   }
@@ -318,7 +301,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postTest() throws Fault {
     super.postTest();
   }
@@ -331,7 +313,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithStringClassTest() throws Fault {
     super.postWithStringClassTest();
   }
@@ -344,7 +325,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithResponseClassTest() throws Fault {
     super.postWithResponseClassTest();
   }
@@ -357,7 +337,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithGenericTypeStringTest() throws Fault {
     super.postWithGenericTypeStringTest();
   }
@@ -370,7 +349,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithGenericTypeResponseTest() throws Fault {
     super.postWithGenericTypeResponseTest();
   }
@@ -387,7 +365,6 @@
    * @test_Strategy: Invoke HTTP PUT method for the current request
    */
   @Test
-  @Disabled
   public void putTest() throws Fault {
     super.putTest();
   }
@@ -400,7 +377,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithStringClassTest() throws Fault {
     super.putWithStringClassTest();
   }
@@ -413,7 +389,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithResponseClassTest() throws Fault {
     super.putWithResponseClassTest();
   }
@@ -426,7 +401,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithGenericTypeStringTest() throws Fault {
     super.putWithGenericTypeStringTest();
   }
@@ -439,7 +413,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithGenericTypeResponseTest() throws Fault {
     super.putWithGenericTypeResponseTest();
   }
@@ -456,7 +429,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceTest() throws Fault {
     super.traceTest();
   }
@@ -469,7 +441,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithStringClassTest() throws Fault {
     super.traceWithStringClassTest();
   }
@@ -482,7 +453,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithResponseClassTest() throws Fault {
     super.traceWithResponseClassTest();
   }
@@ -495,7 +465,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeStringTest() throws Fault {
     super.traceWithGenericTypeStringTest();
   }
@@ -508,7 +477,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeResponseTest() throws Fault {
     super.traceWithGenericTypeResponseTest();
   }
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java
index f0483e5..6986f22 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java
@@ -46,13 +46,11 @@
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -151,7 +149,6 @@
    * 
    */
   @Test
-  @Disabled
   public void deleteWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     Future<String> future = rx.delete(String.class).toCompletableFuture();
@@ -167,7 +164,6 @@
    * 
    */
   @Test
-  @Disabled
   public void deleteWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     Future<Response> future = rx.delete(Response.class).toCompletableFuture();
@@ -232,7 +228,6 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeStringTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     GenericType<String> generic = createGeneric(String.class);
@@ -248,7 +243,6 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeResponseTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     GenericType<Response> generic = createGeneric(Response.class);
@@ -324,7 +318,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     Future<Response> future = rx.get().toCompletableFuture();
@@ -356,7 +349,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     Future<String> future = rx.get(String.class).toCompletableFuture();
@@ -371,7 +363,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     Future<Response> future = rx.get(Response.class).toCompletableFuture();
@@ -436,7 +427,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithGenericTypeStringTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     GenericType<String> generic = createGeneric(String.class);
@@ -452,7 +442,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithGenericTypeResponseTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     GenericType<Response> generic = createGeneric(Response.class);
@@ -526,7 +515,6 @@
    * @test_Strategy: Invoke HTTP HEAD method for the current request
    */
   @Test
-  @Disabled
   public void headTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("head");
     Future<Response> future = rx.head().toCompletableFuture();
@@ -562,7 +550,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodTest() throws Fault {
     Future<Response> future = null;
     for (String method : METHODS) {
@@ -602,7 +589,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithStringClassTest() throws Fault {
     Future<String> future = null;
     for (String method : METHODS) {
@@ -621,7 +607,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithResponseClassTest() throws Fault {
     Future<Response> future = null;
     for (String method : METHODS) {
@@ -702,7 +687,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     Future<String> future = null;
@@ -722,7 +706,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     Future<Response> future = null;
@@ -810,7 +793,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithEntityTest() throws Fault {
     Future<Response> future = null;
     for (String method : ENTITY_METHODS) {
@@ -852,7 +834,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithStringClassWithEntityTest() throws Fault {
     Future<String> future = null;
     for (String method : ENTITY_METHODS) {
@@ -872,7 +853,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithResponseClassWithEntityTest() throws Fault {
     Future<Response> future = null;
     for (String method : ENTITY_METHODS) {
@@ -960,7 +940,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeStringWithEntityTest()
       throws Fault {
     Future<String> future = null;
@@ -982,7 +961,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeResponseWithEntityTest()
       throws Fault {
     Future<Response> future = null;
@@ -1110,7 +1088,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     Future<String> future = rx.options(String.class).toCompletableFuture();
@@ -1125,7 +1102,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     Future<Response> future = rx.options(Response.class).toCompletableFuture();
@@ -1190,7 +1166,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeStringTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     GenericType<String> generic = createGeneric(String.class);
@@ -1206,7 +1181,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeResponseTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     GenericType<Response> generic = createGeneric(Response.class);
@@ -1282,7 +1256,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("post");
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
@@ -1316,7 +1289,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithStringClassTest() throws Fault {
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("post");
@@ -1332,7 +1304,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithResponseClassTest() throws Fault {
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("post");
@@ -1403,7 +1374,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
@@ -1420,7 +1390,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
@@ -1499,7 +1468,6 @@
    * @test_Strategy: Invoke HTTP PUT method for the current request
    */
   @Test
-  @Disabled
   public void putTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("put");
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
@@ -1533,7 +1501,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithStringClassTest() throws Fault {
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("put");
@@ -1549,7 +1516,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithResponseClassTest() throws Fault {
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("put");
@@ -1620,7 +1586,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
@@ -1637,7 +1602,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
@@ -1715,7 +1679,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
     Future<Response> future = rx.trace().toCompletableFuture();
@@ -1747,7 +1710,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
     Future<String> future = rx.trace(String.class).toCompletableFuture();
@@ -1762,7 +1724,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
     Future<Response> future = rx.trace(Response.class).toCompletableFuture();
@@ -1827,7 +1788,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
@@ -1843,7 +1803,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/sseeventsource/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/sseeventsource/JAXRSClientIT.java
index 3a66537..4e0f344 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/sseeventsource/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/sseeventsource/JAXRSClientIT.java
@@ -61,14 +61,12 @@
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -248,7 +246,6 @@
    * endpoint.
    */
   @Test
-  @Disabled
   public void connectionLostForDefault500msTest() throws Fault {
     resetUnavailableServer();
 
