Skip to content

Commit 0b69ec6

Browse files
asolntsevbaev
authored andcommitted
only take screenshot for open browser (fixes #379, via #380)
1 parent 09b259f commit 0b69ec6

2 files changed

Lines changed: 40 additions & 7 deletions

File tree

allure-selenide/src/main/java/io/qameta/allure/selenide/AllureSelenide.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,16 @@
2525
import io.qameta.allure.model.StepResult;
2626
import org.openqa.selenium.OutputType;
2727
import org.openqa.selenium.TakesScreenshot;
28-
import org.openqa.selenium.WebDriver;
2928
import org.openqa.selenium.WebDriverException;
3029
import org.slf4j.Logger;
3130
import org.slf4j.LoggerFactory;
3231

33-
import java.nio.charset.StandardCharsets;
3432
import java.util.Optional;
3533
import java.util.UUID;
3634

3735
import static io.qameta.allure.util.ResultsUtils.getStatus;
3836
import static io.qameta.allure.util.ResultsUtils.getStatusDetails;
37+
import static java.nio.charset.StandardCharsets.UTF_8;
3938

4039
/**
4140
* @author Artem Eroshenko.
@@ -70,8 +69,9 @@ public AllureSelenide savePageSource(final boolean savePageHtml) {
7069

7170
private static Optional<byte[]> getScreenshotBytes() {
7271
try {
73-
return Optional.of((TakesScreenshot) WebDriverRunner.getWebDriver())
74-
.map(wd -> wd.getScreenshotAs(OutputType.BYTES));
72+
return WebDriverRunner.hasWebDriverStarted()
73+
? Optional.of(((TakesScreenshot) WebDriverRunner.getWebDriver()).getScreenshotAs(OutputType.BYTES))
74+
: Optional.empty();
7575
} catch (WebDriverException e) {
7676
LOGGER.warn("Could not get screen shot", e);
7777
return Optional.empty();
@@ -80,9 +80,9 @@ private static Optional<byte[]> getScreenshotBytes() {
8080

8181
private static Optional<byte[]> getPageSourceBytes() {
8282
try {
83-
return Optional.of(WebDriverRunner.getWebDriver())
84-
.map(WebDriver::getPageSource)
85-
.map(ps -> ps.getBytes(StandardCharsets.UTF_8));
83+
return WebDriverRunner.hasWebDriverStarted()
84+
? Optional.of(WebDriverRunner.getWebDriver().getPageSource().getBytes(UTF_8))
85+
: Optional.empty();
8686
} catch (WebDriverException e) {
8787
LOGGER.warn("Could not get page source", e);
8888
return Optional.empty();

allure-selenide/src/test/java/io/qameta/allure/selenide/AllureSelenideTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,16 @@
2121
import com.codeborne.selenide.logevents.SelenideLogger;
2222
import io.qameta.allure.Allure;
2323
import io.qameta.allure.model.Attachment;
24+
import io.qameta.allure.model.Stage;
2425
import io.qameta.allure.model.Status;
2526
import io.qameta.allure.model.StepResult;
2627
import io.qameta.allure.test.AllureFeatures;
2728
import io.qameta.allure.test.AllureResults;
29+
import org.junit.jupiter.api.AfterEach;
30+
import org.junit.jupiter.api.BeforeEach;
2831
import org.junit.jupiter.api.Test;
2932
import org.openqa.selenium.OutputType;
33+
import org.openqa.selenium.WebDriverException;
3034
import org.openqa.selenium.chrome.ChromeDriver;
3135

3236
import java.nio.charset.StandardCharsets;
@@ -42,6 +46,12 @@
4246
*/
4347
class AllureSelenideTest {
4448

49+
@BeforeEach
50+
@AfterEach
51+
void closeBrowser() {
52+
WebDriverRunner.closeWebDriver();
53+
}
54+
4555
@AllureFeatures.Steps
4656
@Test
4757
void shouldLogPassedSteps() {
@@ -175,6 +185,29 @@ void shouldSavePageSourceOnFail() {
175185
.isEqualTo("dummy-page-source");
176186
}
177187

188+
@AllureFeatures.Attachments
189+
@Test
190+
void shouldNotFailIfBrowserIsNotOpened() {
191+
final AllureResults results = runWithinTestContext(() -> {
192+
final AllureSelenide selenide = new AllureSelenide()
193+
.savePageSource(false)
194+
.screenshots(true);
195+
SelenideLogger.addListener(UUID.randomUUID().toString(), selenide);
196+
final SelenideLog log = SelenideLogger.beginStep(
197+
"open",
198+
"https://some.url"
199+
);
200+
SelenideLogger.commitStep(log, new WebDriverException("failed to open a browser"));
201+
});
202+
203+
final StepResult selenideStep = extractStepFromResults(results);
204+
assertThat(selenideStep.getStatus()).isEqualTo(Status.BROKEN);
205+
assertThat(selenideStep.getStatusDetails().getMessage()).startsWith("failed to open a browser");
206+
assertThat(selenideStep.getName()).isEqualTo("$(open) https://some.url");
207+
assertThat(selenideStep.getStage()).isEqualTo(Stage.FINISHED);
208+
assertThat(selenideStep.getAttachments()).hasSize(0);
209+
}
210+
178211
@AllureFeatures.Steps
179212
@Test
180213
void shouldLogFailedSteps() {

0 commit comments

Comments
 (0)