diff --git a/serenity-smoketests/pom.xml b/serenity-smoketests/pom.xml
index 88c193d9c..465595439 100644
--- a/serenity-smoketests/pom.xml
+++ b/serenity-smoketests/pom.xml
@@ -64,7 +64,12 @@
serenity-junit5
${project.version}
test
-
+
+ net.serenity-bdd
+ serenity-ensure
+ ${project.version}
+ test
+
net.serenity-bdd
serenity-browserstack
diff --git a/serenity-smoketests/src/main/java/net/serenitybdd/demos/todos/screenplay/tasks/CompleteItems.java b/serenity-smoketests/src/main/java/net/serenitybdd/demos/todos/screenplay/tasks/CompleteItems.java
index ed72a5a89..f1692c8ad 100644
--- a/serenity-smoketests/src/main/java/net/serenitybdd/demos/todos/screenplay/tasks/CompleteItems.java
+++ b/serenity-smoketests/src/main/java/net/serenitybdd/demos/todos/screenplay/tasks/CompleteItems.java
@@ -5,13 +5,14 @@
import net.serenitybdd.screenplay.Task;
import net.serenitybdd.screenplay.actions.Click;
+import java.util.Arrays;
import java.util.List;
public class CompleteItems {
- public static Performable called(List itemNames) {
+ public static Performable called(String... itemNames) {
return Task.where("{0} completes the items called: " + itemNames,
actor -> {
- itemNames.forEach(itemName -> actor.attemptsTo(
+ Arrays.asList(itemNames).forEach(itemName -> actor.attemptsTo(
Click.on(TodoListItem.COMPLETE_ITEM.of(itemName))
));
}
diff --git a/serenity-smoketests/src/test/java/net/serenitybdd/demos/todos/screenplay/features/maintain_my_todo_list/FilteringTodos.java b/serenity-smoketests/src/test/java/net/serenitybdd/demos/todos/screenplay/features/maintain_my_todo_list/FilteringTodos.java
index 5b0534c06..f8c1eb77f 100644
--- a/serenity-smoketests/src/test/java/net/serenitybdd/demos/todos/screenplay/features/maintain_my_todo_list/FilteringTodos.java
+++ b/serenity-smoketests/src/test/java/net/serenitybdd/demos/todos/screenplay/features/maintain_my_todo_list/FilteringTodos.java
@@ -10,19 +10,14 @@
import net.serenitybdd.junit5.SerenityJUnit5Extension;
import net.serenitybdd.screenplay.Actor;
import net.serenitybdd.screenplay.abilities.BrowseTheWeb;
+import net.serenitybdd.screenplay.ensure.Ensure;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.WebDriver;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
import static net.serenitybdd.screenplay.GivenWhenThen.*;
-import static org.hamcrest.Matchers.hasItems;
-import static org.hamcrest.Matchers.is;
@ExtendWith(SerenityJUnit5Extension.class)
public class FilteringTodos {
@@ -38,43 +33,38 @@ public void jamesCanBrowseTheWeb() {
}
@ParameterizedTest
- @CsvSource({
- // initialTodos, itemsToComplete, filtersToApply, expectedDisplayedItems, expectedSelectedFilter
- "Walk the dog;Put out the garbage, Walk the dog, Completed, Walk the dog, Completed",
- "Walk the dog;Put out the garbage, Walk the dog, Active, Put out the garbage, Active",
- "Walk the dog;Put out the garbage, Walk the dog, All, Walk the dog;Put out the garbage, All"
- })
- public void should_be_able_to_filter_todos(
- String initialTodos,
- String itemsToComplete,
- String filterToApply,
- String expectedDisplayedItems,
- String expectedSelectedFilter
+ @CsvSource(delimiterString = "|", value = {
+ // initialTodos | itemsToComplete | filters | expectedDisplayedItems | selectedFilter
+ "Walk the dog;Put out the garbage | Walk the dog | Completed | Walk the dog | Completed",
+ "Walk the dog;Put out the garbage | Walk the dog | Active | Put out the garbage | Active",
+ "Walk the dog;Put out the garbage | Walk the dog | All | Walk the dog;Put out the garbage | All",
+ "Walk the dog | Walk the dog | Completed | | Completed"})
+ public void should_be_able_to_filter_todos(String initialTodos, String itemsToComplete, String filter,
+ String expectedDisplayedItems, String selectedFilter
) {
- // Parse the CSV string parameters into lists
- TodoStatusFilter expectedFilter = TodoStatusFilter.valueOf(expectedSelectedFilter);
+ TodoStatusFilter filterToApply = TodoStatusFilter.valueOf(filter);
+ TodoStatusFilter expectedFilter = TodoStatusFilter.valueOf(selectedFilter);
- // Given
- givenThat(james).wasAbleTo(Start.withATodoListContaining(asList(initialTodos)));
+ givenThat(james).wasAbleTo(
+ Start.withATodoListContaining(itemsIn(initialTodos))
+ );
- // When
- james.attemptsTo(
- CompleteItems.called(asList(itemsToComplete)),
- FilterItems.toShow(TodoStatusFilter.valueOf(filterToApply))
+ when(james).attemptsTo(
+ CompleteItems.called(itemsIn(itemsToComplete)),
+ FilterItems.toShow(filterToApply)
);
- // Then
- then(james).should(
- seeThat(TheItems.displayed(), hasItems(expectedDisplayedItems)),
- seeThat(CurrentFilter.selected(), is(expectedFilter))
+ then(james).attemptsTo(
+ Ensure.that(TheItems.displayed()).contains(itemsIn(expectedDisplayedItems)),
+ Ensure.that(CurrentFilter.selected()).isEqualTo(expectedFilter)
);
}
- private List asList(String str) {
- if (str == null || str.trim().isEmpty()) {
- return new ArrayList<>();
+ private String[] itemsIn(String listOfItems) {
+ if (listOfItems == null || listOfItems.trim().isEmpty()) {
+ return new String[]{};
}
- return Arrays.asList(str.split(";"));
+ return listOfItems.split(";");
}
}
diff --git a/serenity-smoketests/src/test/resources/junit-platform.properties b/serenity-smoketests/src/test/resources/junit-platform.properties
new file mode 100644
index 000000000..f59cc5b4b
--- /dev/null
+++ b/serenity-smoketests/src/test/resources/junit-platform.properties
@@ -0,0 +1,4 @@
+junit.jupiter.execution.parallel.enabled=true
+junit.jupiter.execution.parallel.config.strategy=dynamic
+junit.jupiter.execution.parallel.mode.default = concurrent
+junit.jupiter.execution.parallel.mode.classes.default = concurrent
\ No newline at end of file