Добрый День коллеги. Нужна ваша помощь, а лучше направить к решение дабы сделать самому.
Вопрос будет больше связан с java, не могу понять как сделать правильно или воообще это можно сделать.
Стек: Java, JUnit5, Playwright, Gradle.
Проблема:
Сделать реализацию добавление скриншота когда тест упал в CustomWatcher implements TestWatcher.
Рассмотрим пример в виде скринов дабы было более понятно:
BaseTest - класс который есть родителем для всех тестов.
Добавлен Extension → CustomWatcher который implements TestWatcher - где реализуется метод testFailed в котором собственно нужно реализовать сделать скриншот.
через org.junit.jupiter.api.extension.ExtensionContext.getRequiredTestInstance() и рефлексию
и org.junit.jupiter.api.extension.ExtensionContext.Store.getOrDefault(Object key, Class<String> requiredType, String defaultValue) - второй вариант у меня получился наполовину но может потом отлажу
Ага понял, не дочитал) Я вижу это так:
Сделать класс с переменной, в которой будет храниться значение browserContext, пока выполняется тест
Если тест падает, то вытаскиваете значение browserContext в CustomWatcher.
Т.е, что-то такое
public class BrowserContextTemp {
private BrowserContext bContext;
public static setBrowserContext(BrowserContext context) {
bContext = context;
}
public static getBrowserContext() {
return bContext;
}
}
lombok - да в курсе, с этой библиотекой работаю постоянно.
Сейчас проверяю как будет при параллельном запуске при разных потоках.
Еще раз вам спасибо что не прошли мимо.
Хорошего Вам вечера.