Пишем видео
во время прогона автотестов
Сергей Пирогов
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/2931772/pasted-from-clipboard.png)
Сергей Пирогов
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/2188684/pasted-from-clipboard.png)
Senior QA Automation
Testing Center of Excellence
Ciklum
http://automation-remarks.com
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/2931785/3_collor.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/2931787/pasted-from-clipboard.png)
@s_pirogov
Нестабильные тесты
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/2934378/mIo0h.png)
Нестабильные UI тесты
Бесконечная гонка между кодом тестов и асинхронностью web страниц
Кривые руки - плохо написанные тесты
Магия которую невозможно понять
Как понять?
Скриншоты
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/2990968/out14.png)
Запись видео, чего хотим
Легко встраиваться в существующие решения
Контроль видео записи для одного конкретного теста
Кроссплатформенность
Существующие решения
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/3115563/1430989171_1871837159.jpg)
Java Video Recorder
Поддерживает :
Интеграция с Allure и Jenkins CI
-
JUnit
-
TestNg
-
Spock
-
Selenium Grid
Интеграция с JUnit
public class JUnitVideoTest {
@Test
public void shouldLogin() {
// test code here
}
}
public class JUnitVideoTest {
@Rule
public VideoRule videoRule
= new VideoRule();
@Video
@Test
public void shouldLogin() {
// test code here
}
}
Поддержка TestNG
public class TestNgVideoTest {
@Test
public void shouldLogin() {
// test code here
}
}
@Listeners(VideoListener.class)
public class TestNgVideoTest {
@Video
@Test
public void shouldLogin() {
// test code here
}
}
Больше интересностей
public class JUnitVideoTest {
@Video (name = "logoutTest")
@Test
public void shouldLogout() {
// test code here
}
}
Можно задать имя видео файла
Настройки
VideoRecorder.conf()
.withVideoFolder("video_folder")
.videoEnabled(true)
.withRecordMode(ANNOTATED)
.withVideoSaveMode(ALL)
.withFrameRate(24);
Можно настроить все на свой вкус
Настройки
Командная строка
mvn test -Dvideo.folder=folder
-Dvideo.enabled=true
-Dvideo.mode=ANNOTATED
-Dvideo.save.mode=ALL
Поддержка Allure отчетов
@Attachment(value = "video", type = "video/mp4")
private byte[] attachment() {
File video = VideoRecorder.getLastRecording();
return readAllBytes(get(video.absolutePath()));
}
Видео можно встраивать в отчет
Влияние на время прогона тестов:
3 Теста с видео : 25,15 sec
3 Теста без видео: 25,109 sec
Размер видео:
5 мин видео ~ 13 МБ
Где теряем
Реальный пример
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/3015141/movie-watching.png)
Результаты
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/2934382/______________2016-08-22___17.59.58.png)
Количество нестабильных тестов уменьшено на 99%
Все для людей
Github
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/3015126/Screenshot_from_2016-09-17_07_57_15.png)
Помощь Selenide
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/3115592/Screenshot_from_2016-10-14_10_43_32.png)
Спасибо!
http://automation-remarks.com
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/2931785/3_collor.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443868/images/2931787/pasted-from-clipboard.png)
@s_pirogov
Пишем видео во время прогона тестов
By Sergey Pirogov
Пишем видео во время прогона тестов
- 2,277