Обычно это не нужно, так как Selenide автоматически делает скриншоты при падении тестов. Это очень удобно для анализа ошибки.
По умолчанию Selenide складывает скриншоты в папку build/reports/tests
.
Да. Для этого используйте ключик -Dselenide.reportsFolder=test-result/reports
и укажите путь к нужной папке.
Для версии 4 и ниже используйте -Dselenide.reports=test-result/reports
Альтернативный вариант - установить путь к скриншотам прямо в своём коде:
Configuration.reportsFolder = "test-result/reports";
Для пользователей JUnit и TestNG мы сделали дополнительную поддержку.
Повторюсь: в большинстве случаев вам не надо ничего делать, т.к. Селенид сам делает скриншоты в случае падения
проверок типа $.shouldBe(..)
.
А вот если вы хотите делать скриншоты
assertEquals
или assertThat
),то придётся добавить пару строк.
Чтобы автоматически делать скриншот после каждого упавшего теста:
import com.codeborne.selenide.junit.ScreenShooter;
public class MyTest {
@Rule
public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests();
// ...
}
Чтобы автоматически делать скриншот после вообще каждого теста (в т.ч. зелёного):
@Rule
public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();
import com.codeborne.selenide.testng.ScreenShooter;
@Listeners({ ScreenShooter.class})
public class MyTest {
// ...
}
Чтобы делать скриншоты после зелёных тестов, нужно вызвать такую команду перед запуском тестов:
ScreenShooter.captureSuccessfulTests = true;
@ExtendWith({ScreenShooterExtension.class})
public class MyTest {
// ...
}
Как использовать в Java (с тонкими настройками):
public class MyTest {
@RegisterExtension
static ScreenShooterExtension screenshotEmAll = new ScreenShooterExtension(true).to("target/screenshots");
}
@ExtendWith(ScreenShooterExtension::class)
class MyTest {
// ...
}
Как использовать в Kotlin (с тонкими настройками):
class MyTest {
companion object {
@JvmField
@RegisterExtension
val screenshotEmAll: ScreenShooterExtension = ScreenShooterExtension(true).to("target/screenshots");
}
}
Вы также можете сделать скриншот в любом месте теста одной строчкой:
import static com.codeborne.selenide.Selenide.screenshot;
String pngFileName = screenshot("my_file_name");
При этом Selenide создаст два файла: my_file_name.png
и my_file_name.html
Позже появился альтернативный метод, возвращающий скриншот в желаемом формате (т.е. BASE64
, BYTES
или FILE
):
String screenshotAsBase64 = Selenide.screenshot(OutputType.BASE64);
byte[] decoded = Base64.getDecoder().decode(screenshotAsBase64);