Allure не аттачаит картинки, помогите понять причину.

Сейчас постараюсь аккуратно прицепить код.

Я пробовал цеплять текст как аттачмент, пробовал разные варианты с кастомными слушателями, пробовал просто метод из аттачмента использовать в тесте, никаких результатов.

Базовый класс:


Тестовый:

XML для запуска:

Пом:

А что сам отчет строится?
Нуу, для компиллер-плагина надо бы 1.8 поставить версии а не 6.

1 лайк

Я ещё не пробовал версию 2.8.1 Аллюра, но попробуйте ещё версию 2.7.0 (обе зависимости сменить версию), вам проще будет и быстрее. Может, косяк какой в новой версии.

1 лайк

Поставил 2,7,0

Убрал листенер и просто атач дергаю из кода. Но результата никакого. Причем с текстом тоже самое.

Попробовал у себя версию 2.8.1 - аттачи работают.
Попробуйте уберать имплементацию ITestListener.
А зачем ещё зависимость аллюр-жава-коммонс? У берите её временно, попробуйте.

1 лайк

Без джава коммонс не работает, это Алюр сам предлагает добавить его.

Убрал листенер и таже ситуация.

Смотрите, я почитал доку для аппиума, они пишут что команда на снятие скриншота должна быть

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

т.е. вам надо будет сделать что-то типа такого (+придётся обернуть в трай-кэтч):

return Files.readAllBytes( ((TakesScreenshot)getDriver())
.getScreenshotAs(OutputType.FILE)
.getAbsoluteFile().toPath() );

а текст тоже должен быть байтовым массивом - return s.getBytes();

1 лайк

Убрал скрины, хочу хотя бы прикрутить текст, с байтами тоже ничего не получается.
Видимо проблема где-то в другом месте.

Ну ещё testNG попробуйте версию 6.14.3…

1 лайк

Без результатов.

Ковырялся в папке allure-reports, то не нашел нигде непустого атачмента, везде пустые значения.

А BaseTest как организован? Откуда наследуется и т.п.? Тоже сделайте по минимуму, ничего не расширяйте.

1 лайк

Base test ничего не наследует, там только капабилити и сервак.

обратил внимание на такую штуку

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 параметра в сьюте.

1 лайк

Убрал, пересоздал проект, пересмотрел импорты, перезапустил на другой машине даже. Что-то мы упускаем, но не понимаю где именно.

@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} пришлось заменить на полный путь.