Я ещё не пробовал версию 2.8.1 Аллюра, но попробуйте ещё версию 2.7.0 (обе зависимости сменить версию), вам проще будет и быстрее. Может, косяк какой в новой версии.
Поставил 2,7,0
Убрал листенер и просто атач дергаю из кода. Но результата никакого. Причем с текстом тоже самое.
Попробовал у себя версию 2.8.1 - аттачи работают.
Попробуйте уберать имплементацию ITestListener.
А зачем ещё зависимость аллюр-жава-коммонс? У берите её временно, попробуйте.
Без джава коммонс не работает, это Алюр сам предлагает добавить его.
Убрал листенер и таже ситуация.
Смотрите, я почитал доку для аппиума, они пишут что команда на снятие скриншота должна быть
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
т.е. вам надо будет сделать что-то типа такого (+придётся обернуть в трай-кэтч):
return Files.readAllBytes( ((TakesScreenshot)getDriver())
.getScreenshotAs(OutputType.FILE)
.getAbsoluteFile().toPath() );
а текст тоже должен быть байтовым массивом - return s.getBytes();
Убрал скрины, хочу хотя бы прикрутить текст, с байтами тоже ничего не получается.
Видимо проблема где-то в другом месте.
Ну ещё testNG попробуйте версию 6.14.3…
Без результатов.
Ковырялся в папке allure-reports, то не нашел нигде непустого атачмента, везде пустые значения.
А BaseTest как организован? Откуда наследуется и т.п.? Тоже сделайте по минимуму, ничего не расширяйте.
обратил внимание на такую штуку
SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See SLF4J Error Codes for further details.
Как то влияет может на алюр?
UPD поправил эту ошибку, без изменений.
В xml уберите всё что связано с параллельным запуском, 2 параметра в сьюте.
Убрал, пересоздал проект, пересмотрел импорты, перезапустил на другой машине даже. Что-то мы упускаем, но не понимаю где именно.
@Step тоже не работает.
Спасибо за помощь!
так что ничего не помогло?
У меня вот так это работает
// OnFailure.class
@Attachment(value = "Device screenshot", type = "image/png")
public byte[] attachDeviceScreenshot() {
return ((TakesScreenshot) BaseTest.getDriver()).getScreenshotAs(OutputType.BYTES);
}
// BaseTest.class
protected AppiumDriver<MobileElement> driver;
@BeforeClass
public void setUp() throws MalformedURLException {
// set up Appium
File appDir = new File(AppProperties.getInstance().getApkPath());
File app = new File(appDir, AppProperties.getInstance().getApkName());
log.info("Path to apk file {}", app.getAbsolutePath());
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, Config.PACKAGE_NAME);
driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
WEB_DRIVER_THREAD_LOCAL.set(driver);
}
Как-то так все было настроено (3 года назад) и оно делало скриноты нормально, и аттачило в репорт тоже. Не спорю, может сейчас инициализация уже по другому делается уже, и это не актуально, но этот код работал у меня
Насколько я понял, помогло указание для maven-surefire-plugin
<systemPropertyVariables>
<allure.results.directory>${project.build.directory}\allure-results</allure.results.directory>
</systemPropertyVariables>
притом, ${project.build.directory} пришлось заменить на полный путь.
Я даже такую настройку не делал в коде,
посмотрите сюда может это как-то поможет с настройками, там default
настройки прописываются
Все заработало когда я прописал путь для алюра. У меня почему-то по дефоту Allure-Results папка сохранялась в корне проекта. Когда я перед ней добавил папку “target” сразу все стало на места, алюр сразу начал генерить все папки в ней и подтянивать нужные данные в репорты. Возможно просто пом нужно заново пересобрать. Лучше скажите как вы детектите, что апа именно крашнулась, а не проблема в какой-то логике показа экранов?
Вот здесь Appium + TestNG + Allure Снять лог с девайса при краше. - #5 от пользователя Funker схожая проблема, используйте logcat
для этого