This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit fdc9fbb9ec05874b85860ee0a2ca5dc2150f09b6
Author: Benoit TELLIER <btell...@linagora.com>
AuthorDate: Mon Dec 4 14:51:42 2023 +0100

    JAMES-3691 Update Cucumber to 7.15.0
    
    Version 2.4.0 does not support Java 21.
    The updates do the trick.
---
 pom.xml                                            | 13 +++-
 server/data/data-cassandra/pom.xml                 |  7 +-
 .../james/rrt/cassandra/CassandraStepdefs.java     |  4 +-
 .../james/rrt/cassandra/RewriteTablesTest.java     | 17 ++---
 server/data/data-file/pom.xml                      |  7 +-
 .../apache/james/rrt/file/RewriteTablesTest.java   | 20 +++---
 .../org/apache/james/rrt/file/XMLStepdefs.java     |  2 +-
 server/data/data-jpa/pom.xml                       |  7 +-
 .../java/org/apache/james/rrt/jpa/JPAStepdefs.java |  5 +-
 .../apache/james/rrt/jpa/RewriteTablesTest.java    | 17 ++---
 .../james/rrt/lib/RewriteTablesStepdefs.java       | 83 ++++++++++++++--------
 server/data/data-memory/pom.xml                    |  7 +-
 .../apache/james/rrt/memory/InMemoryStepdefs.java  |  2 +-
 .../apache/james/rrt/memory/RewriteTablesTest.java | 17 ++---
 .../integration/cucumber/DownloadStepdefs.java     |  8 +--
 .../cucumber/GetMailboxesMethodStepdefs.java       |  8 +--
 .../cucumber/GetMessageListMethodStepdefs.java     |  6 +-
 .../cucumber/GetMessagesMethodStepdefs.java        | 10 +--
 .../methods/integration/cucumber/ImapStepdefs.java |  8 +--
 .../methods/integration/cucumber/MainStepdefs.java |  2 +-
 .../integration/cucumber/MessageIdStepdefs.java    |  2 +-
 .../cucumber/SetMailboxesMethodStepdefs.java       |  8 +--
 .../cucumber/SetMessagesMethodStepdefs.java        |  8 +--
 .../integration/cucumber/UploadStepdefs.java       |  9 ++-
 .../methods/integration/cucumber/UserStepdefs.java |  4 +-
 .../memory-jmap-draft-integration-testing/pom.xml  |  7 +-
 .../cucumber/MemoryDownloadCucumberTest.java       | 19 ++---
 .../cucumber/MemoryGetMessagesMethodTest.java      | 18 +++--
 .../MemoryIMAPKeywordsInconsistenciesTest.java     | 18 +++--
 .../MemoryIMAPSetMessagesCompatibilityTest.java    | 18 +++--
 .../MemorySetMailboxesMethodCucumberTest.java      | 18 +++--
 .../MemorySetMessagesMethodCucumberTest.java       | 18 +++--
 .../jmap/memory/cucumber/MemorySharingTest.java    | 34 +++------
 .../james/jmap/memory/cucumber/MemoryStepdefs.java |  8 +--
 .../memory/cucumber/MemoryUploadCucumberTest.java  | 19 ++---
 .../pom.xml                                        |  7 +-
 .../cucumber/awss3/RabbitMQAwsS3Stepdefs.java      |  6 +-
 .../awss3/RabbitMQDownloadCucumberTest.java        | 21 +++---
 .../awss3/RabbitMQGetMessagesMethodTest.java       | 21 +++---
 .../RabbitMQIMAPKeywordsInconsistenciesTest.java   | 21 +++---
 .../RabbitMQIMAPSetMessagesCompatibilityTest.java  | 21 +++---
 .../cucumber/awss3/RabbitMQMailboxSharingTest.java | 44 ------------
 .../cucumber/awss3/RabbitMQMessageSharingTest.java | 45 ------------
 .../RabbitMQSetMailboxesMethodCucumberTest.java    | 21 +++---
 .../RabbitMQSetMessagesMethodCucumberTest.java     | 21 +++---
 ...dCucumberTest.java => RabbitMQSharingTest.java} | 25 ++++---
 .../cucumber/awss3/RabbitMQUploadCucumberTest.java | 21 +++---
 47 files changed, 372 insertions(+), 360 deletions(-)

diff --git a/pom.xml b/pom.xml
index 534f8b1c4d..2000ff18f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -620,7 +620,7 @@
         <concurrent.version>1.3.4</concurrent.version>
         <xbean-spring.version>4.21</xbean-spring.version>
         <netty.version>4.1.101.Final</netty.version>
-        <cucumber.version>2.4.0</cucumber.version>
+        <cucumber.version>7.15.0</cucumber.version>
 
         <pax-logging-api.version>1.6.4</pax-logging-api.version>
         <jackson.version>2.15.2</jackson.version>
@@ -2345,6 +2345,12 @@
                 <artifactId>cucumber-junit</artifactId>
                 <version>${cucumber.version}</version>
             </dependency>
+            <dependency>
+                <groupId>io.cucumber</groupId>
+                <artifactId>cucumber-junit-platform-engine</artifactId>
+                <version>${cucumber.version}</version>
+            </dependency>
+
             <dependency>
                 <groupId>io.cucumber</groupId>
                 <artifactId>cucumber-picocontainer</artifactId>
@@ -2801,6 +2807,11 @@
                 <artifactId>junit-platform-launcher</artifactId>
                 <version>${junit.platform.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.junit.platform</groupId>
+                <artifactId>junit-platform-suite</artifactId>
+                <version>1.9.3</version>
+            </dependency>
             <dependency>
                 <groupId>org.junit.vintage</groupId>
                 <artifactId>junit-vintage-engine</artifactId>
diff --git a/server/data/data-cassandra/pom.xml 
b/server/data/data-cassandra/pom.xml
index fea44f95b0..c5199c86dd 100644
--- a/server/data/data-cassandra/pom.xml
+++ b/server/data/data-cassandra/pom.xml
@@ -107,7 +107,7 @@
         </dependency>
         <dependency>
             <groupId>io.cucumber</groupId>
-            <artifactId>cucumber-junit</artifactId>
+            <artifactId>cucumber-junit-platform-engine</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -129,6 +129,11 @@
             <artifactId>awaitility</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-suite</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
diff --git 
a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
 
b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
index 87d2247f1d..70eb11077b 100644
--- 
a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
+++ 
b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
@@ -32,8 +32,8 @@ import org.junit.Rule;
 
 import com.github.fge.lambdas.Throwing;
 
-import cucumber.api.java.After;
-import cucumber.api.java.Before;
+import io.cucumber.java.After;
+import io.cucumber.java.Before;
 
 public class CassandraStepdefs {
 
diff --git 
a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/RewriteTablesTest.java
 
b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/RewriteTablesTest.java
index 766ba86917..5223d5e5bf 100644
--- 
a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/RewriteTablesTest.java
+++ 
b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/RewriteTablesTest.java
@@ -18,15 +18,16 @@
  ****************************************************************/
 package org.apache.james.rrt.cassandra;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(
-        features = { "classpath:cucumber/" },
-        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.cassandra" }
-    )
+@Suite
+@IncludeEngines("cucumber")
+@SelectClasspathResource("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.rrt.lib,org.apache.james.rrt.cassandra")
 public class RewriteTablesTest {
 }
diff --git a/server/data/data-file/pom.xml b/server/data/data-file/pom.xml
index 9032ec10e5..fae4fe7d59 100644
--- a/server/data/data-file/pom.xml
+++ b/server/data/data-file/pom.xml
@@ -114,7 +114,7 @@
         </dependency>
         <dependency>
             <groupId>io.cucumber</groupId>
-            <artifactId>cucumber-junit</artifactId>
+            <artifactId>cucumber-junit-platform-engine</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -134,6 +134,11 @@
             <groupId>org.eclipse.angus</groupId>
             <artifactId>jakarta.mail</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-suite</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
diff --git 
a/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
 
b/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
index 453627d665..c91ca7687f 100644
--- 
a/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
+++ 
b/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
@@ -18,16 +18,18 @@
  ****************************************************************/
 package org.apache.james.rrt.file;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.IncludeTags;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(
-        features = { "classpath:cucumber/" },
-        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.file" },
-        tags = { "@readonly" }
-    )
+@Suite
+@IncludeEngines("cucumber")
+@SelectClasspathResource("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.rrt.lib,org.apache.james.rrt.file")
+@IncludeTags("readonly")
 public class RewriteTablesTest {
 }
diff --git 
a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLStepdefs.java
 
b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLStepdefs.java
index 789f9b34ea..b8fdb96650 100644
--- 
a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLStepdefs.java
+++ 
b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLStepdefs.java
@@ -21,7 +21,7 @@ package org.apache.james.rrt.file;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
 import org.apache.james.rrt.lib.RewriteTablesStepdefs;
 
-import cucumber.api.java.Before;
+import io.cucumber.java.Before;
 
 public class XMLStepdefs {
 
diff --git a/server/data/data-jpa/pom.xml b/server/data/data-jpa/pom.xml
index 943fd8cc53..00656337b8 100644
--- a/server/data/data-jpa/pom.xml
+++ b/server/data/data-jpa/pom.xml
@@ -111,7 +111,7 @@
         </dependency>
         <dependency>
             <groupId>io.cucumber</groupId>
-            <artifactId>cucumber-junit</artifactId>
+            <artifactId>cucumber-junit-platform-engine</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -128,6 +128,11 @@
             <artifactId>derby</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-suite</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
diff --git 
a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java 
b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java
index 3908dfe98e..c2c6749ae8 100644
--- 
a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java
+++ 
b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java
@@ -26,9 +26,8 @@ import org.apache.james.rrt.lib.RewriteTablesStepdefs;
 import org.apache.james.user.jpa.JPAUsersRepository;
 
 import com.github.fge.lambdas.Throwing;
-
-import cucumber.api.java.After;
-import cucumber.api.java.Before;
+import io.cucumber.java.After;
+import io.cucumber.java.Before;
 
 public class JPAStepdefs {
 
diff --git 
a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/RewriteTablesTest.java
 
b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/RewriteTablesTest.java
index 7cb0a007f0..35fcc586b4 100644
--- 
a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/RewriteTablesTest.java
+++ 
b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/RewriteTablesTest.java
@@ -18,15 +18,16 @@
  ****************************************************************/
 package org.apache.james.rrt.jpa;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(
-        features = { "classpath:cucumber/" },
-        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.jpa" }
-    )
+@Suite
+@IncludeEngines("cucumber")
+@SelectClasspathResource("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.rrt.lib,org.apache.james.rrt.jpa")
 public class RewriteTablesTest {
 }
diff --git 
a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
 
b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
index f4de1a6023..52d04b5c13 100644
--- 
a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
+++ 
b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
@@ -29,9 +29,11 @@ import 
org.apache.james.rrt.api.RecipientRewriteTable.ErrorMappingException;
 import org.apache.james.rrt.api.RecipientRewriteTableConfiguration;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 
-import cucumber.api.java.en.Given;
-import cucumber.api.java.en.Then;
-import cucumber.api.java.en.When;
+import com.google.common.base.Splitter;
+import com.google.common.collect.ImmutableList;
+import io.cucumber.java.en.Given;
+import io.cucumber.java.en.Then;
+import io.cucumber.java.en.When;
 
 public class RewriteTablesStepdefs {
 
@@ -45,13 +47,13 @@ public class RewriteTablesStepdefs {
         
this.rewriteTable.setConfiguration(RecipientRewriteTableConfiguration.DEFAULT_ENABLED);
     }
 
-    @Given("store \"([^\"]*)\" regexp mapping for user \"([^\"]*)\" at domain 
\"([^\"]*)\"")
+    @Given("store {string} regexp mapping for user {string} at domain 
{string}")
     public void storeRegexpMappingForUserAtDomain(String regexp, String user, 
String domain) throws Throwable {
         MappingSource source = MappingSource.fromUser(user, domain);
         rewriteTable.addRegexMapping(source, regexp);
     }
 
-    @Given("store an invalid \"([^\"]*)\" regexp mapping for user \"([^\"]*)\" 
at domain \"([^\"]*)\"")
+    @Given("store an invalid {string} regexp mapping for user {string} at 
domain {string}")
     public void storeInvalidRegexpMappingForUserAtDomain(String regexp, String 
user, String domain) {
         try {
             MappingSource source = MappingSource.fromUser(user, domain);
@@ -61,7 +63,7 @@ public class RewriteTablesStepdefs {
         }
     }
 
-    @Given("store \"([^\"]*)\" address mapping for user \"([^\"]*)\" at domain 
\"([^\"]*)\"")
+    @Given("store {string} address mapping for user {string} at domain 
{string}")
     public void storeAddressMappingForUserAtDomain(String address, String 
user, String domain) throws Throwable {
         MappingSource source = MappingSource.fromUser(user, domain);
         storeAddressMappingForUserAtDomain(address, source);
@@ -71,40 +73,40 @@ public class RewriteTablesStepdefs {
         rewriteTable.addAddressMapping(source, address);
     }
 
-    @Given("store \"([^\"]*)\" error mapping for user \"([^\"]*)\" at domain 
\"([^\"]*)\"")
+    @Given("store {string} error mapping for user {string} at domain {string}")
     public void storeErrorMappingForUserAtDomain(String error, String user, 
String domain) throws Throwable {
         MappingSource source = MappingSource.fromUser(user, domain);
         rewriteTable.addErrorMapping(source, error);
     }
 
-    @Given("store \"([^\"]*)\" address mapping as wildcard for domain 
\"([^\"]*)\"")
+    @Given("store {string} address mapping as wildcard for domain {string}")
     public void storeAddressMappingAsWildcardAtDomain(String address, String 
domain) throws Throwable {
         storeAddressMappingForUserAtDomain(address, 
MappingSource.fromDomain(Domain.of(domain)));
     }
 
-    @Given("store \"([^\"]*)\" domain mapping for domain \"([^\"]*)\"")
+    @Given("store {string} domain mapping for domain {string}")
     public void storeDomainMappingForDomain(String aliasDomain, String domain) 
throws Throwable {
         
rewriteTable.addDomainMapping(MappingSource.fromDomain(Domain.of(aliasDomain)), 
Domain.of(domain));
     }
 
-    @Given("store \"([^\"]*)\" domain alias for domain \"([^\"]*)\"")
+    @Given("store {string} domain alias for domain {string}")
     public void storeDomainAliasMappingForDomain(String aliasDomain, String 
domain) throws Throwable {
         
rewriteTable.addDomainAliasMapping(MappingSource.fromDomain(Domain.of(aliasDomain)),
 Domain.of(domain));
     }
 
-    @Given("store \"([^\"]*)\" forward mapping for user \"([^\"]*)\" at domain 
\"([^\"]*)\"")
+    @Given("store {string} forward mapping for user {string} at domain 
{string}")
     public void storeForwardMappingForUserAtDomain(String address, String 
user, String domain) throws Throwable {
         MappingSource source = MappingSource.fromUser(user, domain);
         rewriteTable.addForwardMapping(source, address);
     }
 
-    @Given("store user \"([^\"]*)\" alias mapping for alias \"([^\"]*)\" at 
domain \"([^\"]*)\"")
+    @Given("store user {string} alias mapping for alias {string} at domain 
{string}")
     public void storeAliasMappingForUserAtDomain(String user, String address, 
String domain) throws Throwable {
         MappingSource source = MappingSource.fromUser(address, domain);
         rewriteTable.addAliasMapping(source, user);
     }
 
-    @Given("store \"([^\"]*)\" group mapping for user \"([^\"]*)\" at domain 
\"([^\"]*)\"")
+    @Given("store {string} group mapping for user {string} at domain {string}")
     public void storeGroupMappingForUserAtDomain(String address, String user, 
String domain) throws Throwable {
         MappingSource source = MappingSource.fromUser(user, domain);
         rewriteTable.addGroupMapping(source, address);
@@ -121,13 +123,13 @@ public class RewriteTablesStepdefs {
         // default case
     }
 
-    @When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a regexp mapping 
\"([^\"]*)\"")
+    @When("user {string} at domain {string} removes a regexp mapping {string}")
     public void userAtDomainRemovesRegexpMapping(String user, String domain, 
String regexp) throws Throwable {
         MappingSource source = MappingSource.fromUser(user, domain);
         rewriteTable.removeRegexMapping(source, regexp);
     }
 
-    @When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a address mapping 
\"([^\"]*)\"")
+    @When("user {string} at domain {string} removes a address mapping 
{string}")
     public void userAtDomainRemovesAddressMapping(String user, String domain, 
String address) throws Throwable {
         MappingSource source = MappingSource.fromUser(user, domain);
         userAtDomainRemovesAddressMapping(address, source);
@@ -137,41 +139,41 @@ public class RewriteTablesStepdefs {
         rewriteTable.removeAddressMapping(source, address);
     }
 
-    @When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a error mapping 
\"([^\"]*)\"")
+    @When("user {string} at domain {string} removes a error mapping {string}")
     public void userAtDomainRemovesErrorMapping(String user, String domain, 
String error) throws Throwable {
         MappingSource source = MappingSource.fromUser(user, domain);
         rewriteTable.removeErrorMapping(source, error);
     }
 
-    @When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a forward mapping 
\"([^\"]*)\"")
+    @When("user {string} at domain {string} removes a forward mapping 
{string}")
     public void userAtDomainRemovesForwardMapping(String user, String domain, 
String address) throws Throwable {
         MappingSource source = MappingSource.fromUser(user, domain);
         rewriteTable.removeForwardMapping(source, address);
     }
 
-    @When("alias \"([^\"]*)\" at domain \"([^\"]*)\" removes an alias mapping 
\"([^\"]*)\"")
+    @When("alias {string} at domain {string} removes an alias mapping 
{string}")
     public void userAtDomainRemovesAliasMapping(String user, String domain, 
String address) throws Throwable {
         MappingSource source = MappingSource.fromUser(user, domain);
         rewriteTable.removeAliasMapping(source, address);
     }
 
-    @When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a group mapping 
\"([^\"]*)\"")
+    @When("user {string} at domain {string} removes a group mapping {string}")
     public void userAtDomainRemovesGroupMapping(String user, String domain, 
String address) throws Throwable {
         MappingSource source = MappingSource.fromUser(user, domain);
         rewriteTable.removeGroupMapping(source, address);
     }
 
-    @When("wildcard address mapping \"([^\"]*)\" at domain \"([^\"]*)\" is 
removed")
+    @When("wildcard address mapping {string} at domain {string} is removed")
     public void removeWildcardAddressMappingAtDomain(String address, String 
domain) throws Throwable {
         userAtDomainRemovesAddressMapping(address, 
MappingSource.fromDomain(Domain.of(domain)));
     }
 
-    @When("domain mapping \"([^\"]*)\" for \"([^\"]*)\" domain is removed")
+    @When("domain mapping {string} for {string} domain is removed")
     public void removeDomainMappingForDomain(String aliasdomain, String 
domain) throws Throwable {
         
rewriteTable.removeDomainMapping(MappingSource.fromDomain(Domain.of(aliasdomain)),
 Domain.of(domain));
     }
 
-    @When("domain alias \"([^\"]*)\" for \"([^\"]*)\" domain is removed")
+    @When("domain alias {string} for {string} domain is removed")
     public void removeDomainAliasForDomain(String aliasdomain, String domain) 
throws Throwable {
         
rewriteTable.removeDomainAliasMapping(MappingSource.fromDomain(Domain.of(aliasdomain)),
 Domain.of(domain));
     }
@@ -181,27 +183,46 @@ public class RewriteTablesStepdefs {
         assertThat(rewriteTable.getAllMappings()).isNullOrEmpty();
     }
 
-    @Then("mappings for user \"([^\"]*)\" at domain \"([^\"]*)\" should be 
empty")
+    @Then("mappings for user {string} at domain {string} should be empty")
     public void assertMappingsIsEmpty(String user, String domain) throws 
Throwable {
         assertThat(rewriteTable.getResolvedMappings(user, 
Domain.of(domain))).isNullOrEmpty();
     }
 
-    @Then("mappings for user \"([^\"]*)\" at domain \"([^\"]*)\" should 
contain only \"([^\"]*)\"")
-    public void assertMappingsForUser(String user, String domain, List<String> 
mappings) throws Throwable {
-        assertThat(rewriteTable.getResolvedMappings(user, 
Domain.of(domain)).asStrings()).containsOnly(mappings.toArray(new String[0]));
+    @Then("mappings for user {string} at domain {string} should contain only 
{string}")
+    public void assertMappingsForUser(String user, String domain, String 
mappings) throws Throwable {
+        assertThat(rewriteTable.getResolvedMappings(user, 
Domain.of(domain)).asStrings()).containsOnly(asList(mappings).toArray(new 
String[0]));
     }
 
-    @Then("mappings for alias \"([^\"]*)\" at domain \"([^\"]*)\" should 
contain only \"([^\"]*)\"")
-    public void assertMappingsForAlias(String alias, String domain, 
List<String> mappings) throws Throwable {
-        assertThat(rewriteTable.getResolvedMappings(alias, 
Domain.of(domain)).asStrings()).containsOnly(mappings.toArray(new String[0]));
+    @Then("mappings for alias {string} at domain {string} should contain only 
{string}")
+    public void assertMappingsForAlias(String alias, String domain, String 
mappings) throws Throwable {
+        assertThat(rewriteTable.getResolvedMappings(alias, 
Domain.of(domain)).asStrings()).containsOnly(asList(mappings).toArray(new 
String[0]));
     }
 
-    @Then("a \"([^\"]*)\" exception should have been thrown")
+    private List<String> asList(String value) {
+        return Splitter.on(',')
+            .trimResults()
+            .splitToStream(value)
+            .map(s -> {
+                if (s.startsWith("\"")) {
+                    return s.substring(1);
+                }
+                return s;
+            })
+            .map(s -> {
+                if (s.endsWith("\"")) {
+                    return s.substring(0, s.length() - 1);
+                }
+                return s;
+            })
+            .collect(ImmutableList.toImmutableList());
+    }
+
+    @Then("a {string} exception should have been thrown")
     public void assertException(String exceptionClass) throws Throwable {
         
assertThat(exception.getClass().getSimpleName()).isEqualTo(exceptionClass);
     }
 
-    @Then("retrieving mappings for user \"([^\"]*)\" at domain \"([^\"]*)\" 
should raise an ErrorMappingException with message \"([^\"]*)\"")
+    @Then("retrieving mappings for user {string} at domain {string} should 
raise an ErrorMappingException with message {string}")
     public void retrievingMappingsForUserAtDomainShouldRaiseAnException(String 
user, String domain, String message) throws Exception {
         assertThatThrownBy(() -> rewriteTable.getResolvedMappings(user, 
Domain.of(domain)))
             .isInstanceOf(ErrorMappingException.class)
diff --git a/server/data/data-memory/pom.xml b/server/data/data-memory/pom.xml
index 5c8ed0fc00..b2e99fefab 100644
--- a/server/data/data-memory/pom.xml
+++ b/server/data/data-memory/pom.xml
@@ -85,7 +85,7 @@
         </dependency>
         <dependency>
             <groupId>io.cucumber</groupId>
-            <artifactId>cucumber-junit</artifactId>
+            <artifactId>cucumber-junit-platform-engine</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -98,6 +98,11 @@
             <artifactId>awaitility</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-suite</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
diff --git 
a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java
 
b/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java
index 8e9e2f612d..6a6fcd57c7 100644
--- 
a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java
+++ 
b/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java
@@ -28,7 +28,7 @@ import org.apache.james.user.memory.MemoryUsersRepository;
 
 import com.github.fge.lambdas.Throwing;
 
-import cucumber.api.java.Before;
+import io.cucumber.java.Before;
 
 public class InMemoryStepdefs {
 
diff --git 
a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/RewriteTablesTest.java
 
b/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/RewriteTablesTest.java
index ee218f92be..aba5dc7f3d 100644
--- 
a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/RewriteTablesTest.java
+++ 
b/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/RewriteTablesTest.java
@@ -18,15 +18,16 @@
  ****************************************************************/
 package org.apache.james.rrt.memory;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(
-        features = { "classpath:cucumber/" },
-        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.memory" }
-    )
+@Suite
+@IncludeEngines("cucumber")
+@SelectClasspathResource("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.rrt.lib,org.apache.james.rrt.memory")
 public class RewriteTablesTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/DownloadStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/DownloadStepdefs.java
index 9315d0cd82..d46ac36203 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/DownloadStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/DownloadStepdefs.java
@@ -63,10 +63,10 @@ import com.google.common.base.Strings;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.Multimap;
 
-import cucumber.api.java.en.Given;
-import cucumber.api.java.en.Then;
-import cucumber.api.java.en.When;
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.guice.ScenarioScoped;
+import io.cucumber.java.en.Given;
+import io.cucumber.java.en.Then;
+import io.cucumber.java.en.When;
 
 @ScenarioScoped
 public class DownloadStepdefs {
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMailboxesMethodStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMailboxesMethodStepdefs.java
index 9fc74ea413..83c77f4bdf 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMailboxesMethodStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMailboxesMethodStepdefs.java
@@ -35,10 +35,10 @@ import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 
-import cucumber.api.java.en.Given;
-import cucumber.api.java.en.Then;
-import cucumber.api.java.en.When;
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.guice.ScenarioScoped;
+import io.cucumber.java.en.Given;
+import io.cucumber.java.en.Then;
+import io.cucumber.java.en.When;
 
 @ScenarioScoped
 public class GetMailboxesMethodStepdefs {
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessageListMethodStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessageListMethodStepdefs.java
index 516bdb5568..676f9fa0dc 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessageListMethodStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessageListMethodStepdefs.java
@@ -29,9 +29,9 @@ import javax.inject.Inject;
 
 import org.apache.james.mailbox.model.MessageId;
 
-import cucumber.api.java.en.Then;
-import cucumber.api.java.en.When;
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.guice.ScenarioScoped;
+import io.cucumber.java.en.Then;
+import io.cucumber.java.en.When;
 
 @ScenarioScoped
 public class GetMessageListMethodStepdefs {
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
index 832f3e4092..6044ac0c6b 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
@@ -37,6 +37,7 @@ import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import io.cucumber.datatable.DataTable;
 import javax.inject.Inject;
 
 import jakarta.mail.Flags;
@@ -58,11 +59,10 @@ import com.github.fge.lambdas.Throwing;
 import com.google.common.base.Splitter;
 import com.google.common.collect.ImmutableList;
 
-import cucumber.api.DataTable;
-import cucumber.api.java.en.Given;
-import cucumber.api.java.en.Then;
-import cucumber.api.java.en.When;
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.guice.ScenarioScoped;
+import io.cucumber.java.en.Given;
+import io.cucumber.java.en.Then;
+import io.cucumber.java.en.When;
 import net.minidev.json.JSONArray;
 
 @ScenarioScoped
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/ImapStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/ImapStepdefs.java
index ba4a6ecf52..7fdd9775b3 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/ImapStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/ImapStepdefs.java
@@ -32,10 +32,10 @@ import org.apache.james.utils.TestIMAPClient;
 import com.github.fge.lambdas.Throwing;
 import com.google.common.collect.Maps;
 
-import cucumber.api.java.en.Given;
-import cucumber.api.java.en.Then;
-import cucumber.api.java.en.When;
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.guice.ScenarioScoped;
+import io.cucumber.java.en.Given;
+import io.cucumber.java.en.Then;
+import io.cucumber.java.en.When;
 
 @ScenarioScoped
 public class ImapStepdefs {
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MainStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MainStepdefs.java
index f23f6971be..7373b9cb49 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MainStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MainStepdefs.java
@@ -37,7 +37,7 @@ import org.apache.james.utils.DataProbeImpl;
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableList;
 
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.guice.ScenarioScoped;
 
 @ScenarioScoped
 public class MainStepdefs {
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MessageIdStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MessageIdStepdefs.java
index 42c54f1c91..7ceb06a3da 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MessageIdStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MessageIdStepdefs.java
@@ -26,7 +26,7 @@ import javax.inject.Inject;
 
 import org.apache.james.mailbox.model.MessageId;
 
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.guice.ScenarioScoped;
 
 @ScenarioScoped
 public class MessageIdStepdefs {
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
index b572d83440..5edc82c2e4 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
@@ -46,10 +46,10 @@ import com.google.common.collect.Maps;
 import com.jayway.jsonpath.DocumentContext;
 import com.jayway.jsonpath.JsonPath;
 
-import cucumber.api.java.en.Given;
-import cucumber.api.java.en.Then;
-import cucumber.api.java.en.When;
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.guice.ScenarioScoped;
+import io.cucumber.java.en.Given;
+import io.cucumber.java.en.Then;
+import io.cucumber.java.en.When;
 
 @ScenarioScoped
 public class SetMailboxesMethodStepdefs {
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMessagesMethodStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMessagesMethodStepdefs.java
index a41d86103c..70532ec8c8 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMessagesMethodStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMessagesMethodStepdefs.java
@@ -37,10 +37,10 @@ import org.apache.james.mailbox.model.MessageId;
 
 import com.google.common.collect.ImmutableList;
 
-import cucumber.api.java.en.Given;
-import cucumber.api.java.en.Then;
-import cucumber.api.java.en.When;
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.guice.ScenarioScoped;
+import io.cucumber.java.en.Given;
+import io.cucumber.java.en.Then;
+import io.cucumber.java.en.When;
 
 @ScenarioScoped
 public class SetMessagesMethodStepdefs {
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UploadStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UploadStepdefs.java
index 5266fc7517..5639418d07 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UploadStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UploadStepdefs.java
@@ -29,7 +29,6 @@ import java.nio.charset.StandardCharsets;
 import java.util.Locale;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Future;
-
 import javax.inject.Inject;
 
 import org.apache.http.HttpResponse;
@@ -48,10 +47,10 @@ import com.google.common.base.CharMatcher;
 import com.jayway.jsonpath.DocumentContext;
 import com.jayway.jsonpath.JsonPath;
 
-import cucumber.api.java.en.Given;
-import cucumber.api.java.en.Then;
-import cucumber.api.java.en.When;
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.guice.ScenarioScoped;
+import io.cucumber.java.en.Given;
+import io.cucumber.java.en.Then;
+import io.cucumber.java.en.When;
 
 @ScenarioScoped
 public class UploadStepdefs {
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UserStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UserStepdefs.java
index 5615ee2bad..e05bb80b26 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UserStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UserStepdefs.java
@@ -40,8 +40,8 @@ import com.github.fge.lambdas.runnable.ThrowingRunnable;
 import com.google.common.base.Preconditions;
 import com.google.common.hash.Hashing;
 
-import cucumber.api.java.en.Given;
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.guice.ScenarioScoped;
+import io.cucumber.java.en.Given;
 
 @ScenarioScoped
 public class UserStepdefs {
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
index db40bbf999..3ef8e851c8 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
@@ -124,7 +124,7 @@
         </dependency>
         <dependency>
             <groupId>io.cucumber</groupId>
-            <artifactId>cucumber-junit</artifactId>
+            <artifactId>cucumber-junit-platform-engine</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -146,6 +146,11 @@
             <groupId>org.hamcrest</groupId>
             <artifactId>java-hamcrest</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-suite</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.testcontainers</groupId>
             <artifactId>testcontainers</artifactId>
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadCucumberTest.java
index cc4273f81c..96fa0e48ac 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadCucumberTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadCucumberTest.java
@@ -19,15 +19,18 @@
 
 package org.apache.james.jmap.memory.cucumber;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = {"classpath:cucumber/DownloadEndpoint.feature", 
"classpath:cucumber/DownloadGet.feature", 
"classpath:cucumber/DownloadPost.feature"},
-                glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.memory.cucumber"},
-                tags = {"not @Ignore"},
-                strict = true)
+@Suite
+@SelectClasspathResource("cucumber/DownloadEndpoint.feature,cucumber/DownloadGet.feature,cucumber/DownloadPost.feature")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
 public class MemoryDownloadCucumberTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryGetMessagesMethodTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryGetMessagesMethodTest.java
index f291f43577..e1028f2ea0 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryGetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryGetMessagesMethodTest.java
@@ -19,14 +19,18 @@
 
 package org.apache.james.jmap.memory.cucumber;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = "classpath:cucumber/GetMessages.feature",
-                glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.memory.cucumber"},
-                strict = true)
+@Suite
+@SelectClasspathResource("cucumber/GetMessages.feature")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
 public class MemoryGetMessagesMethodTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryIMAPKeywordsInconsistenciesTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryIMAPKeywordsInconsistenciesTest.java
index f15588d70a..d60c854f55 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryIMAPKeywordsInconsistenciesTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryIMAPKeywordsInconsistenciesTest.java
@@ -19,14 +19,18 @@
 
 package org.apache.james.jmap.memory.cucumber;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = 
"classpath:cucumber/ImapKeywordsConsistency.feature",
-    glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.memory.cucumber"},
-    strict = true)
+@Suite
+@SelectClasspathResource("cucumber/ImapKeywordsConsistency.feature")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
 public class MemoryIMAPKeywordsInconsistenciesTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryIMAPSetMessagesCompatibilityTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryIMAPSetMessagesCompatibilityTest.java
index cc4cade0ae..fdf20aae3b 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryIMAPSetMessagesCompatibilityTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryIMAPSetMessagesCompatibilityTest.java
@@ -19,14 +19,18 @@
 
 package org.apache.james.jmap.memory.cucumber;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = 
"classpath:cucumber/ImapSetMessagesMailboxesUpdatesCompatibility.feature",
-    glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.memory.cucumber"},
-    strict = true)
+@Suite
+@SelectClasspathResource("cucumber/ImapSetMessagesMailboxesUpdatesCompatibility.feature")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
 public class MemoryIMAPSetMessagesCompatibilityTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMailboxesMethodCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMailboxesMethodCucumberTest.java
index be7abdbf1a..8ed62271e7 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMailboxesMethodCucumberTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMailboxesMethodCucumberTest.java
@@ -19,14 +19,18 @@
 
 package org.apache.james.jmap.memory.cucumber;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = { 
"classpath:cucumber/MailboxModification.feature", 
"classpath:cucumber/SetMailboxes.feature" },
-                glue = { "org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.memory.cucumber" },
-                strict = true)
+@Suite
+@SelectClasspathResource("cucumber/MailboxModification.feature,cucumber/SetMailboxes.feature")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
 public class MemorySetMailboxesMethodCucumberTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMessagesMethodCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMessagesMethodCucumberTest.java
index 3d4c71c9d1..e9a80e4cc2 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMessagesMethodCucumberTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMessagesMethodCucumberTest.java
@@ -19,14 +19,18 @@
 
 package org.apache.james.jmap.memory.cucumber;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = "classpath:cucumber/SetMessages.feature",
-                glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.memory.cucumber"},
-                strict = true)
+@Suite
+@SelectClasspathResource("cucumber/SetMessages.feature")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
 public class MemorySetMessagesMethodCucumberTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySharingTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySharingTest.java
index f31f0548a4..1f4c40b4fe 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySharingTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySharingTest.java
@@ -19,30 +19,18 @@
 
 package org.apache.james.jmap.memory.cucumber;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = {
-    
"classpath:cucumber/sharing/SharingParentMailboxWithAndWithoutChildren.feature",
-    "classpath:cucumber/sharing/SharingChildrenWithoutSharingParent.feature",
-    "classpath:cucumber/sharing/GetMessageAndSharing.feature",
-    "classpath:cucumber/sharing/SharingMailboxWithOtherDomain.feature",
-    "classpath:cucumber/sharing/MailboxCreationAndSharing.feature",
-    "classpath:cucumber/sharing/MailboxDeletionAndSharing.feature",
-    "classpath:cucumber/sharing/SetMessagesOnSharedMailbox.feature",
-    "classpath:cucumber/sharing/DownloadAndSharing.feature",
-    
"classpath:cucumber/sharing/KeywordsConsistencyOnDelegationMailbox.feature",
-    "classpath:cucumber/sharing/GetMessageListAndSharing.feature",
-    "classpath:cucumber/sharing/MoveMessageAndSharing.feature",
-    "classpath:cucumber/sharing/MoveMailboxAndSharing.feature",
-    "classpath:cucumber/sharing/SetFlagAndSharing.feature",
-    "classpath:cucumber/sharing/RenamingMailboxAndSharing.feature",
-    "classpath:cucumber/sharing/CopyAndSharing.feature" },
-    glue = { "org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.memory.cucumber" },
-    tags = {"not @Ignore"},
-    strict = true)
+@Suite
+@SelectClasspathResource("cucumber/sharing")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
 public class MemorySharingTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
index 623728808f..1c9a39687c 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
@@ -21,6 +21,7 @@ package org.apache.james.jmap.memory.cucumber;
 
 import static 
org.apache.james.data.UsersRepositoryModuleChooser.Implementation.DEFAULT;
 
+import io.cucumber.guice.ScenarioScoped;
 import javax.inject.Inject;
 
 import org.apache.james.MemoryJamesConfiguration;
@@ -32,14 +33,11 @@ import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.junit.rules.TemporaryFolder;
 
-import cucumber.api.java.After;
-import cucumber.api.java.Before;
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.java.After;
+import io.cucumber.java.Before;
 
 @ScenarioScoped
 public class MemoryStepdefs {
-
-    private static final long LIMIT_TO_3_MESSAGES = 3;
     private final MainStepdefs mainStepdefs;
     private final ImapStepdefs imapStepdefs;
     private final TemporaryFolder temporaryFolder;
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryUploadCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryUploadCucumberTest.java
index fcdebdfff4..383a024721 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryUploadCucumberTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryUploadCucumberTest.java
@@ -19,15 +19,18 @@
 
 package org.apache.james.jmap.memory.cucumber;
 
-import org.junit.runner.RunWith;
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = {"classpath:cucumber/UploadEndpoint.feature"},
-                glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.memory.cucumber"},
-                tags = {"not @Ignore"},
-                strict = true)
+@Suite
+@SelectClasspathResource("cucumber/UploadEndpoint.feature")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
 public class MemoryUploadCucumberTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
index a03e2edc84..6458fe246b 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
+++ 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
@@ -119,7 +119,7 @@
         </dependency>
         <dependency>
             <groupId>io.cucumber</groupId>
-            <artifactId>cucumber-junit</artifactId>
+            <artifactId>cucumber-junit-platform-engine</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -142,6 +142,11 @@
             <artifactId>java-hamcrest</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-suite</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.testcontainers</groupId>
             <artifactId>testcontainers</artifactId>
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQAwsS3Stepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQAwsS3Stepdefs.java
index 43f42b294f..6412d813b0 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQAwsS3Stepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQAwsS3Stepdefs.java
@@ -21,6 +21,7 @@ package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import java.util.Arrays;
 
+import io.cucumber.guice.ScenarioScoped;
 import javax.inject.Inject;
 
 import org.apache.james.CassandraRabbitMQJamesConfiguration;
@@ -43,9 +44,8 @@ import org.junit.rules.TemporaryFolder;
 import com.github.fge.lambdas.runnable.ThrowingRunnable;
 import com.google.inject.multibindings.Multibinder;
 
-import cucumber.api.java.After;
-import cucumber.api.java.Before;
-import cucumber.runtime.java.guice.ScenarioScoped;
+import io.cucumber.java.After;
+import io.cucumber.java.Before;
 
 @ScenarioScoped
 public class RabbitMQAwsS3Stepdefs {
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
index cbab08faa0..b0246828ea 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
@@ -19,19 +19,22 @@
 
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
+
 import org.apache.james.jmap.categories.EnableCucumber;
 import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = {"classpath:cucumber/DownloadEndpoint.feature", 
"classpath:cucumber/DownloadGet.feature", 
"classpath:cucumber/DownloadPost.feature"},
-                glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.rabbitmq.cucumber.awss3"},
-                tags = {"not @Ignore", "@BasicFeature"},
-                strict = true)
 @Category({EnableCucumber.class, Unstable.class})
+@Suite
+@IncludeEngines("cucumber")
+@SelectClasspathResource("cucumber/DownloadEndpoint.feature,cucumber/DownloadGet.feature,cucumber/DownloadPost.feature")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
 public class RabbitMQDownloadCucumberTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
index 9ecab7d175..ed26f92d7f 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
@@ -19,19 +19,22 @@
 
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
+
 import org.apache.james.jmap.categories.EnableCucumber;
 import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = "classpath:cucumber/GetMessages.feature",
-                glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.rabbitmq.cucumber.awss3"},
-                tags = {"not @Ignore", "@BasicFeature"},
-                strict = true)
 @Category({EnableCucumber.class, Unstable.class})
+@Suite
+@IncludeEngines("cucumber/GetMessages.feature")
+@SelectClasspathResource("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
 public class RabbitMQGetMessagesMethodTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPKeywordsInconsistenciesTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPKeywordsInconsistenciesTest.java
index 41c2ab754c..0a4a14e849 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPKeywordsInconsistenciesTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPKeywordsInconsistenciesTest.java
@@ -19,18 +19,21 @@
 
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
+
 import org.apache.james.jmap.categories.EnableCucumber;
 import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = 
"classpath:cucumber/ImapKeywordsConsistency.feature",
-    glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.rabbitmq.cucumber.awss3"},
-    tags = {"not @Ignore", "@BasicFeature"},
-    strict = true)
 @Category(EnableCucumber.class)
+@Suite
+@SelectClasspathResource("cucumber/ImapKeywordsConsistency.feature")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
 public class RabbitMQIMAPKeywordsInconsistenciesTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPSetMessagesCompatibilityTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPSetMessagesCompatibilityTest.java
index aa9049bb23..9abba3d18a 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPSetMessagesCompatibilityTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPSetMessagesCompatibilityTest.java
@@ -19,18 +19,21 @@
 
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
+
 import org.apache.james.jmap.categories.EnableCucumber;
 import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = 
"classpath:cucumber/ImapSetMessagesMailboxesUpdatesCompatibility.feature",
-    glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.rabbitmq.cucumber.awss3"},
-    tags = {"not @Ignore", "@BasicFeature"},
-    strict = true)
 @Category(EnableCucumber.class)
+@Suite
+@SelectClasspathResource("cucumber/ImapSetMessagesMailboxesUpdatesCompatibility.feature")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
 public class RabbitMQIMAPSetMessagesCompatibilityTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMailboxSharingTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMailboxSharingTest.java
deleted file mode 100644
index 46efe3f42b..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMailboxSharingTest.java
+++ /dev/null
@@ -1,44 +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.james.jmap.rabbitmq.cucumber.awss3;
-
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.apache.james.junit.categories.Unstable;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
-
-@RunWith(Cucumber.class)
-@CucumberOptions(features = {
-    
"classpath:cucumber/sharing/SharingParentMailboxWithAndWithoutChildren.feature",
-    "classpath:cucumber/sharing/SharingChildrenWithoutSharingParent.feature",
-    "classpath:cucumber/sharing/SharingMailboxWithOtherDomain.feature",
-    "classpath:cucumber/sharing/MailboxCreationAndSharing.feature",
-    "classpath:cucumber/sharing/MailboxDeletionAndSharing.feature",
-    "classpath:cucumber/sharing/MoveMailboxAndSharing.feature",
-    "classpath:cucumber/sharing/RenamingMailboxAndSharing.feature" },
-    glue = { "org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.rabbitmq.cucumber.awss3" },
-    tags = {"not @Ignore", "@BasicFeature"},
-    strict = true)
-@Category({EnableCucumber.class, Unstable.class})
-public class RabbitMQMailboxSharingTest {
-}
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMessageSharingTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMessageSharingTest.java
deleted file mode 100644
index e169391115..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMessageSharingTest.java
+++ /dev/null
@@ -1,45 +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.james.jmap.rabbitmq.cucumber.awss3;
-
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.apache.james.junit.categories.Unstable;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
-
-@RunWith(Cucumber.class)
-@CucumberOptions(features = {
-    "classpath:cucumber/sharing/GetMessageAndSharing.feature",
-    "classpath:cucumber/sharing/SetMessagesOnSharedMailbox.feature",
-    "classpath:cucumber/sharing/DownloadAndSharing.feature",
-    
"classpath:cucumber/sharing/KeywordsConsistencyOnDelegationMailbox.feature",
-    "classpath:cucumber/sharing/GetMessageListAndSharing.feature",
-    "classpath:cucumber/sharing/MoveMessageAndSharing.feature",
-    "classpath:cucumber/sharing/SetFlagAndSharing.feature",
-    "classpath:cucumber/sharing/CopyAndSharing.feature" },
-    glue = { "org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.rabbitmq.cucumber.awss3" },
-    tags = {"not @Ignore", "@BasicFeature"},
-    strict = true)
-@Category({EnableCucumber.class, Unstable.class})
-public class RabbitMQMessageSharingTest {
-}
\ No newline at end of file
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
index 32191e60a2..46dbc96617 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
@@ -19,19 +19,22 @@
 
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
+
 import org.apache.james.jmap.categories.EnableCucumber;
 import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = { 
"classpath:cucumber/MailboxModification.feature", 
"classpath:cucumber/SetMailboxes.feature" },
-                glue = { "org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.rabbitmq.cucumber.awss3" },
-                tags = {"not @Ignore", "@BasicFeature"},
-                strict = true)
 @Category({EnableCucumber.class, Unstable.class})
+@Suite
+@SelectClasspathResource("cucumber/MailboxModification.feature,cucumber/SetMailboxes.feature")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
 public class RabbitMQSetMailboxesMethodCucumberTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
index 774957a0a2..90be25610f 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
@@ -19,19 +19,22 @@
 
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
+
 import org.apache.james.jmap.categories.EnableCucumber;
 import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = "classpath:cucumber/SetMessages.feature",
-                glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.rabbitmq.cucumber.awss3"},
-                tags = {"not @Ignore", "@BasicFeature"},
-                strict = true)
 @Category({EnableCucumber.class, Unstable.class})
+@Suite
+@IncludeEngines("cucumber")
+@SelectClasspathResource("cucumber/SetMessages.feature")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
 public class RabbitMQSetMessagesMethodCucumberTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSharingTest.java
similarity index 66%
copy from 
server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
copy to 
server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSharingTest.java
index cbab08faa0..787e08452f 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSharingTest.java
@@ -19,19 +19,22 @@
 
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
+
 import org.apache.james.jmap.categories.EnableCucumber;
 import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = {"classpath:cucumber/DownloadEndpoint.feature", 
"classpath:cucumber/DownloadGet.feature", 
"classpath:cucumber/DownloadPost.feature"},
-                glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.rabbitmq.cucumber.awss3"},
-                tags = {"not @Ignore", "@BasicFeature"},
-                strict = true)
 @Category({EnableCucumber.class, Unstable.class})
-public class RabbitMQDownloadCucumberTest {
-}
+@Suite
+@IncludeEngines("cucumber")
+@SelectClasspathResource("cucumber/sharing")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
+public class RabbitMQSharingTest {
+}
\ No newline at end of file
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
index 73d780f825..da6a50f6da 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
@@ -19,19 +19,22 @@
 
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
+import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
+import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
+
 import org.apache.james.jmap.categories.EnableCucumber;
 import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeEngines;
+import org.junit.platform.suite.api.SelectClasspathResource;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Cucumber.class)
-@CucumberOptions(features = {"classpath:cucumber/UploadEndpoint.feature"},
-                glue = {"org.apache.james.jmap.draft.methods.integration", 
"org.apache.james.jmap.rabbitmq.cucumber.awss3"},
-                tags = {"not @Ignore", "@BasicFeature"},
-                strict = true)
 @Category({EnableCucumber.class, Unstable.class})
+@Suite
+@SelectClasspathResource("cucumber/UploadEndpoint.feature")
+@IncludeEngines("cucumber")
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
 public class RabbitMQUploadCucumberTest {
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org


Reply via email to