Can Selenide take screenshots?

Yes, Selenide takes screenshotsautomaticallyon every test failure. This is very useful for error analysis.

By default Selenide puts screenshots to folderbuild/reports/tests.

Can I tell Selenide to put screenshots to a specific folder?

Yes. You can use property-Dselenide.reports=test-result/reportsto set any directory to store screenshots to.

Another option is to set this folder directly from your code:

Configuration.reportsFolder = "test-result/reports";

JUnit and TestNG support

For JUnit and TestNG, there is a special support for taking screenshots also on successful tests.

For JUnit:

To automatically take screenshot of every failed test:

import com.codeborne.selenide.junit.ScreenShooter;

@Rule
public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests();

Actually it’s rudiment. You don’t need it, because Selenide does it automatically.

But if you wish to automatically take screenshot of every test (even succeeded), use the following command:

@Rule
public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();

For TestNG:

import com.codeborne.selenide.testng.ScreenShooter;

@Listeners({ ScreenShooter.class})

To automatically take screenshots after every test (even succeeded), execute the following command before running tests:

java ScreenShooter.captureSuccessfulTests = true;

At any moment you wish

Additionally, you can take screenshot at any moment with a single line of code:

import static com.codeborne.selenide.Selenide.screenshot;

screenshot("my_file_name");

Selenide will create two files:my_file_name.pngи my_file_name.html