Skip to content

Commit

Permalink
Fixed #3380
Browse files Browse the repository at this point in the history
  • Loading branch information
wakaleo committed Jan 25, 2024
1 parent a997617 commit 5252916
Show file tree
Hide file tree
Showing 6 changed files with 190 additions and 66 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import java.util.stream.Collectors;

import static java.util.Arrays.stream;
import static net.thucydides.core.steps.BaseStepListener.ScreenshotType.OPTIONAL_SCREENSHOT;
import static net.thucydides.model.ThucydidesSystemProperty.SERENITY_ENABLE_WEBDRIVER_IN_FIXTURE_METHODS;

/**
Expand Down Expand Up @@ -949,7 +950,7 @@ public boolean currentTestOutcomeIsDataDriven() {
*/
public void takeScreenshot() {
if (!isDryRun()) {
getBaseStepListener().takeScreenshot();
getBaseStepListener().notifyUIError();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,71 +5,72 @@
import net.thucydides.core.steps.session.TestSession;
import net.thucydides.core.webdriver.SerenityWebdriverManager;
import net.thucydides.core.webdriver.ThucydidesWebDriverSupport;
import net.thucydides.core.webdriver.WebDriverFacade;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.SessionId;

public class ExampleFinishedEvent extends StepEventBusEventBase {

private SessionId webSessionId;

private String driverUsedInThisTest;

private WebDriver webDriver;

public ExampleFinishedEvent() {
saveCurrentWebDriverContext();
}

private void saveCurrentWebDriverContext() {
WebDriver currentDriver = SerenityWebdriverManager.inThisTestThread().getCurrentDriver();
if (currentDriver != null) {
SessionId sessionId = RemoteDriver.of(currentDriver).getSessionId();
setWebSessionId(sessionId);
setWebDriver(currentDriver);
setDriverUsedInThisTest(ThucydidesWebDriverSupport.getDriversUsed());
}
}

@Override
public void play() {
if (getWebSessionId() != null) {
TestSession.getTestSessionContext().setWebSessionId(getWebSessionId());
}
if (getWebDriver() != null) {
TestSession.getTestSessionContext().setWebDriver(getWebDriver());
}
if (getDriverUsedInThisTest() != null) {
TestSession.getTestSessionContext().setDriverUsedInThisTest(getDriverUsedInThisTest());
}
getStepEventBus().exampleFinished();
}

public String toString() {
return("EventBusEvent EXAMPLE_FINISHED_EVENT ");
}


public SessionId getWebSessionId() {
return webSessionId;
}

public void setWebSessionId(SessionId webSessionId) {
this.webSessionId = webSessionId;
}

public String getDriverUsedInThisTest() {
return driverUsedInThisTest;
}

public void setDriverUsedInThisTest(String driverUsedInThisTest) {
this.driverUsedInThisTest = driverUsedInThisTest;
}

public WebDriver getWebDriver() {
return webDriver;
}

public void setWebDriver(WebDriver webDriver) {
this.webDriver = webDriver;
}
private SessionId webSessionId;

private String driverUsedInThisTest;

private WebDriver webDriver;

public ExampleFinishedEvent() {
saveCurrentWebDriverContext();
}

private void saveCurrentWebDriverContext() {
WebDriver currentDriver = SerenityWebdriverManager.inThisTestThread().getCurrentDriver();
if (currentDriver != null && (!(currentDriver instanceof WebDriverFacade) || ((WebDriverFacade) currentDriver).isInstantiated())) {
SessionId sessionId = RemoteDriver.of(currentDriver).getSessionId();
setWebSessionId(sessionId);
setWebDriver(currentDriver);
setDriverUsedInThisTest(ThucydidesWebDriverSupport.getDriversUsed());
}
}

@Override
public void play() {
if (getWebSessionId() != null) {
TestSession.getTestSessionContext().setWebSessionId(getWebSessionId());
}
if (getWebDriver() != null) {
TestSession.getTestSessionContext().setWebDriver(getWebDriver());
}
if (getDriverUsedInThisTest() != null) {
TestSession.getTestSessionContext().setDriverUsedInThisTest(getDriverUsedInThisTest());
}
getStepEventBus().exampleFinished();
}

public String toString() {
return ("EventBusEvent EXAMPLE_FINISHED_EVENT ");
}


public SessionId getWebSessionId() {
return webSessionId;
}

public void setWebSessionId(SessionId webSessionId) {
this.webSessionId = webSessionId;
}

public String getDriverUsedInThisTest() {
return driverUsedInThisTest;
}

public void setDriverUsedInThisTest(String driverUsedInThisTest) {
this.driverUsedInThisTest = driverUsedInThisTest;
}

public WebDriver getWebDriver() {
return webDriver;
}

public void setWebDriver(WebDriver webDriver) {
this.webDriver = webDriver;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,17 @@ object BlackBox {
softAssertions.add(softAssertion)
}

fun renderedAssertionMessages() : String {
if (!softAssertions.isEmpty()) {
val renderedErrorMessages = StringBuilder("SOFT ASSERTION FAILURES" + System.lineSeparator())
softAssertions.forEachIndexed { index, error ->
renderedErrorMessages.append("- ERROR ${index + 1}) ${normaliseSpacingIn(error)} ${System.lineSeparator()}")
}
return renderedErrorMessages.toString();
} else {
return "";
}
}
fun reportAnySoftAssertions() {
if (!softAssertions.isEmpty()) {
val renderedErrorMessages = StringBuilder("SOFT ASSERTION FAILURES" + System.lineSeparator())
Expand All @@ -54,7 +65,7 @@ object BlackBox {
}
endSoftAssertions()
takeScreenshot()
throw AssertionError(renderedErrorMessages)
// throw AssertionError(renderedErrorMessages)
} else {
endSoftAssertions()
}
Expand All @@ -63,4 +74,4 @@ object BlackBox {
fun normaliseSpacingIn(message: String) = message.trim().replace("But got........"," But got.................")
}

class ResolvedAssertion(val actual: String, val expected: String)
class ResolvedAssertion(val actual: String, val expected: String)
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ open class PerformableExpectation<A, E>(
if (BlackBox.isUsingSoftAssertions()) {
BlackBox.softlyAssert(exceptionMessage)
StepEventBus.getParallelEventBus().baseStepListener.updateCurrentStepFailureCause(
AssertionError(exceptionMessageWithDescription)
AssertionError(BlackBox.renderedAssertionMessages())
// AssertionError(exceptionMessage)
)
} else {
takeScreenshot()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package net.serenitybdd.screenplay.ensure;

import com.google.common.collect.ImmutableList;
import net.serenitybdd.junit.runners.SerenityRunner;
import net.serenitybdd.screenplay.Actor;
import net.serenitybdd.screenplay.Question;
import net.serenitybdd.screenplay.ensure.web.NamedExpectation;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestInstance;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;

import static org.hamcrest.Matchers.containsString;

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@RunWith(SerenityRunner.class)
/**
* Some high level smoke tests
*/
public class WhenUsingSoftFluentAssertionsInJava {

Actor aster = Actor.named("Aster");

@Before
public void prepareSoftAsserts() {
Ensure.enableSoftAssertions();
}

@After
public void reportSoftAsserts() {
Ensure.reportSoftAssertions();
}

@Test
public void aTestWithSomeSoftAsserts() {

int age = 20;

aster.attemptsTo(
Ensure.that(age).isEqualTo(20)
);
}

@Test
public void anotherTestWithSomeSoftAsserts() {
Actor aster = Actor.named("Aster");

String color = "red";

aster.attemptsTo(
Ensure.that(color).startsWith("b"),
Ensure.that(color).endsWith("d"),
Ensure.that(color).hasSize(4)
);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package net.serenitybdd.screenplay.webtests;

import net.serenitybdd.annotations.Managed;
import net.serenitybdd.annotations.Steps;
import net.serenitybdd.junit.runners.SerenityRunner;
import net.serenitybdd.screenplay.Actor;
import net.serenitybdd.screenplay.Task;
import net.serenitybdd.screenplay.abilities.BrowseTheWeb;
import net.serenitybdd.screenplay.webtests.questions.ProfileQuestion;
import net.serenitybdd.screenplay.webtests.tasks.OpenTheApplication;
import net.serenitybdd.screenplay.webtests.tasks.UpdateHerProfile;
import net.serenitybdd.screenplay.webtests.tasks.ViewMyProfile;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.WebDriver;

import static net.serenitybdd.screenplay.GivenWhenThen.*;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasProperty;

@RunWith(SerenityRunner.class)
public class WhenSeveralActorsPerformNonWebActions {

private Task createANewProfile() {
return Task.where("Create a new profile");
}
private Task openNewProfile() {
return Task.where("Open profile");
}

@Test
public void multipleUsersCanShareTheSameBrowser() {
Actor dana = new Actor("Dana");
Actor jane = new Actor("Jane");

when(dana).attemptsTo(createANewProfile());
when(jane).attemptsTo(openNewProfile());
}

}

0 comments on commit 5252916

Please sign in to comment.