Комментарии 12
сколько времени в человеко-часах заняла поиск оптимальноо решения и реализация от начала работы до финального результата?
0
Привет! По времени получилось порядка 20 часов — с разработкой и экспериментами.
0
Cypress тоже записывает видео упавших тестов. Насколько я понял, тоже через Хромовый ScreencastFrame: https://github.com/cypress-io/cypress/blob/f5284c66050690b7d768e241dd5177cf5553c5b7/packages/server/lib/modes/run.js#L503
Им проще — они напрямую работают с браузером, без прослойки в виде puppeteer / webdriver
+1
А зачем так сложно, если есть Selenoid?
Он может просто писать видеопоток из коробки. Дальше если хочется можно отрезать его в духе за 10 секунд до падения или по каким-то иным триггерам и уже отправлять куда-то где его будут смотреть.
Он может просто писать видеопоток из коробки. Дальше если хочется можно отрезать его в духе за 10 секунд до падения или по каким-то иным триггерам и уже отправлять куда-то где его будут смотреть.
+1
Спасибо, за ответ. У нас есть нюанс — перейти на запуск тестов в контейнерах проблематично, так как для нашего софта, требуется установленный Windows клиент. Этим клиентом мы управляем через Microsoft UI Automation. Прошлый раз, когда я поверял — Microsoft UI Automation отказывался корректно работать в windows контейнере.
Отправляется видео у нас в Allure. Про отрезать «за 10 секунд до падения» — отличная идея.
Отправляется видео у нас в Allure. Про отрезать «за 10 секунд до падения» — отличная идея.
0
Тесты могут жить на windows, а Selenoid на отдельной машине с Linux, на которой запускаются контейнеры с браузером.
+1
Спасибо за ответ. У нас браузер должен жить рядом с клиентским приложением на одной машинке (клиент = связка браузера и клиентского приложения). Разнести их не получится.
Решения в которых есть готовая, проверенная, стабильно работающая функциональность из коробки — безусловно лучше собственных костылей с одной стороны. С другой стороны — мы стараемся максимально ограничить как количество сторонних компонент, так и нашу инфраструктуру CI.
То есть, если от решения X нам требуется 0.1% функциональности, которую мы можем сделать самим и избежать зависимости — то стараемся делать сами)
Решения в которых есть готовая, проверенная, стабильно работающая функциональность из коробки — безусловно лучше собственных костылей с одной стороны. С другой стороны — мы стараемся максимально ограничить как количество сторонних компонент, так и нашу инфраструктуру CI.
То есть, если от решения X нам требуется 0.1% функциональности, которую мы можем сделать самим и избежать зависимости — то стараемся делать сами)
0
IvanFilippov, а можешь поделиться опытом использования Allure в C#?
AOP только через PostSharp, а без него из доступных решений находил для себя unickq/allure-nunit с аннотированием всех методов и/или добавление в тесты врапперов
AOP только через PostSharp, а без него из доступных решений находил для себя unickq/allure-nunit с аннотированием всех методов и/или добавление в тесты врапперов
0
Привет! Извини за поздний ответ. С Allure не было особых проблем — настраивал по ссылкам
Allure Documentation docs.qameta.io/allure
Allure CSharp github.com/allure-framework/allure-csharp
Мы используем Specflow — основные шаги, чтобы заработал Allure
1. Install SpecFlow.Allure Nuget for the test project
2. Rename allureConfigTemplate.json to allureConfig.json
3. Add allureConfig.json to output (Right-click on file → Properties → Copy to output directory = Copy if newer)
— видео аттачим в Specflow хуке AfterScenario — примерно так
Allure Documentation docs.qameta.io/allure
Allure CSharp github.com/allure-framework/allure-csharp
Мы используем Specflow — основные шаги, чтобы заработал Allure
1. Install SpecFlow.Allure Nuget for the test project
2. Rename allureConfigTemplate.json to allureConfig.json
3. Add allureConfig.json to output (Right-click on file → Properties → Copy to output directory = Copy if newer)
— видео аттачим в Specflow хуке AfterScenario — примерно так
[AfterScenario]
public void AfterScenario()
{
...
if (ScenarioContext.TestError != null)
{
var videoPath = Path.Combine(currentPath, $"{scenarioTitle}{id}.avi");
try
{
AllureLifecycle.Instance.AddAttachment($"{videoPath}", "video");
}
catch
{
Console.WriteLine($"Cannot save video to {videoPath}!");
}
}
...
}
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Запись видео UI автотестов, работающих в headless Chrome