Skip to content

Commit 803db1f

Browse files
author
yaroslav-orel
committed
Allow configurable page source
1 parent f50f4b9 commit 803db1f

File tree

2 files changed

+77
-6
lines changed

2 files changed

+77
-6
lines changed

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

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ public class AllureSelenide implements LogEventListener {
4949
private static final Logger LOGGER = LoggerFactory.getLogger(AllureSelenide.class);
5050

5151
private boolean saveScreenshots = true;
52-
private boolean savePageHtml = true;
52+
private boolean savePageSource = true;
53+
private String sourceType = "text/html";
54+
private String sourceExtension = "html";
5355
private final Map<LogType, Level> logTypesToSave = new HashMap<>();
5456
private final AllureLifecycle lifecycle;
5557

@@ -66,8 +68,8 @@ public AllureSelenide screenshots(final boolean saveScreenshots) {
6668
return this;
6769
}
6870

69-
public AllureSelenide savePageSource(final boolean savePageHtml) {
70-
this.savePageHtml = savePageHtml;
71+
public AllureSelenide savePageSource(final boolean savePageSource) {
72+
this.savePageSource = savePageSource;
7173
return this;
7274
}
7375

@@ -83,6 +85,13 @@ public AllureSelenide disableLogs(final LogType logType) {
8385
return this;
8486
}
8587

88+
public AllureSelenide configureSource(String type, String extension){
89+
this.sourceType = type;
90+
this.sourceExtension = extension;
91+
92+
return this;
93+
}
94+
8695
private static Optional<byte[]> getScreenshotBytes() {
8796
try {
8897
return WebDriverRunner.hasWebDriverStarted()
@@ -129,9 +138,9 @@ public void afterEvent(final LogEvent event) {
129138
getScreenshotBytes()
130139
.ifPresent(bytes -> lifecycle.addAttachment("Screenshot", "image/png", "png", bytes));
131140
}
132-
if (savePageHtml) {
141+
if (savePageSource) {
133142
getPageSourceBytes()
134-
.ifPresent(bytes -> lifecycle.addAttachment("Page source", "text/html", "html", bytes));
143+
.ifPresent(bytes -> lifecycle.addAttachment("Page source", sourceType, sourceExtension, bytes));
135144
}
136145
if (!logTypesToSave.isEmpty()) {
137146
logTypesToSave

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

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
import org.junit.jupiter.api.BeforeEach;
3131
import org.junit.jupiter.api.Test;
3232
import org.openqa.selenium.OutputType;
33-
import org.openqa.selenium.WebDriverException;
3433
import org.openqa.selenium.WebDriver.Options;
34+
import org.openqa.selenium.WebDriverException;
3535
import org.openqa.selenium.chrome.ChromeDriver;
3636
import org.openqa.selenium.logging.LogEntries;
3737
import org.openqa.selenium.logging.LogEntry;
@@ -191,6 +191,68 @@ void shouldSavePageSourceOnFail() {
191191
.isEqualTo("dummy-page-source");
192192
}
193193

194+
@AllureFeatures.Attachments
195+
@Test
196+
void shouldHaveHTMLPageSourceAsDefault() {
197+
final ChromeDriver wdMock = mock(ChromeDriver.class);
198+
WebDriverRunner.setWebDriver(wdMock);
199+
doReturn("html-page-source")
200+
.when(wdMock).getPageSource();
201+
202+
final AllureResults results = runWithinTestContext(() -> {
203+
final AllureSelenide selenide = new AllureSelenide()
204+
.screenshots(false)
205+
.savePageSource(true);
206+
SelenideLogger.addListener(UUID.randomUUID().toString(), selenide);
207+
final SelenideLog log = SelenideLogger.beginStep(
208+
"dummy source",
209+
"dummyMethod()",
210+
"param1",
211+
"param2"
212+
);
213+
SelenideLogger.commitStep(log, new Exception("something went wrong"));
214+
});
215+
216+
final StepResult selenideStep = extractStepFromResults(results);
217+
assertThat(selenideStep.getAttachments())
218+
.hasSize(1);
219+
220+
final Attachment attachment = selenideStep.getAttachments().iterator().next();
221+
assertThat(attachment.getType()).isEqualTo("text/html");
222+
}
223+
224+
@AllureFeatures.Attachments
225+
@Test
226+
void shouldAllowToConfigurePageSource() {
227+
final String sourceType = "text/xml";
228+
final ChromeDriver wdMock = mock(ChromeDriver.class);
229+
WebDriverRunner.setWebDriver(wdMock);
230+
doReturn("xml-page-source")
231+
.when(wdMock).getPageSource();
232+
233+
final AllureResults results = runWithinTestContext(() -> {
234+
final AllureSelenide selenide = new AllureSelenide()
235+
.screenshots(false)
236+
.savePageSource(true)
237+
.configureSource(sourceType, "xml");
238+
SelenideLogger.addListener(UUID.randomUUID().toString(), selenide);
239+
final SelenideLog log = SelenideLogger.beginStep(
240+
"dummy source",
241+
"dummyMethod()",
242+
"param1",
243+
"param2"
244+
);
245+
SelenideLogger.commitStep(log, new Exception("something went wrong"));
246+
});
247+
248+
final StepResult selenideStep = extractStepFromResults(results);
249+
assertThat(selenideStep.getAttachments())
250+
.hasSize(1);
251+
252+
final Attachment attachment = selenideStep.getAttachments().iterator().next();
253+
assertThat(attachment.getType()).isEqualTo(sourceType);
254+
}
255+
194256
@AllureFeatures.Attachments
195257
@Test
196258
void shouldNotFailIfBrowserIsNotOpened() {

0 commit comments

Comments
 (0)