t.me/atinfo_chat Telegram группа по автоматизации тестирования

Прикрепить скриншоты к Allure из Xcode (скриншоты делаются но не прикрепляются)

xcode
swift
infrastructure
jenkins
reporting
mobile
allure
Теги: #<Tag:0x00007f21d2da6808> #<Tag:0x00007f21d2da66c8> #<Tag:0x00007f21d2da6538> #<Tag:0x00007f21d2da63f8> #<Tag:0x00007f21d2da62b8> #<Tag:0x00007f21d2da6060> #<Tag:0x00007f21d2da5f20>

(Иван Сороколетов) #1

Вопрос: как прикрепить скриншоты к отчету allure из swift xcode

Я делаю скриншоты вот так в теле своего тест: (файлы сохраняются в *.xcresult/Attachments)

XCTContext.runActivity(named: "TestRunActivity") { (activity) in
        let screen = XCUIScreen.main
        let fullscreenshot = screen.screenshot()
        let fullScreenshotAttachment = XCTAttachment(screenshot: fullscreenshot)
        fullScreenshotAttachment.name = startWord + name
        fullScreenshotAttachment.lifetime = .keepAlways
        activity.add(fullScreenshotAttachment)
    }

Но они не прикрепляются к отчету allure как понимаю нужно для этого еще что-то сделать?
Подскажите плз, как прикрепить эти скриншоты к шагам теста в отчет?


(Иван Сороколетов) #2

Нашел решение кажется:
два пулреквеста на аллюр есть - которые должны устранить проблему
Но теперь другая проблема:
как пересобрать allure?


вот с чем сейчас столкнулся


(Pavel) #3

Для этого нужно использовать аннотацию @Attachment

Вот как у меня прикрепляется видео к тестам

@Attachment(value = "{0}", type = "video/mp4")
    public byte[] attachVideo(){
        try{
            String tmpDir = ".\\Videos\\tmp";
            String workDir = ".\\Videos";
            File video = copyVideo(tmpDir, workDir);

            return Files.toByteArray(video);
        } catch (Exception ignored) {
            return new byte[0];
        }
    }

    public File copyVideo(String tmpDir, String workDir){
        File tmpFolder = new File(tmpDir);
        File tmpVideo;
        File workVideo = null;
        String[] listFiles = tmpFolder.list();

        for(String file : listFiles){
            tmpVideo = new File(tmpDir + "\\" + file);
            workVideo = new File(workDir + "\\" + file);
            try {
                FileUtils.copyFile(tmpVideo, workVideo);
            } catch (IOException e) {
                e.printStackTrace();
            }

            if(workVideo.exists() && tmpVideo.length() == workVideo.length()){
                tmpVideo.delete();
            }
        }

        return workVideo;
    }

Затем в AfterEach вызываю метод

@AfterEach
void tearDown(){ attachVideo(); }

На хабре также есть хорошая статья

https://habr.com/ru/company/sberbank/blog/359302/


(Иван Сороколетов) #4

Спасибо, большое.
Но я так понимаю это для Java и мне на swift такое не совсем подходит?
Аннотации для меня неработают кажется.
В доке по аллюру нет ничего про то как использовать аннотации на Свифте.

В исходных файлах xctest-plugin для алюра нашел подсказки как он парсит аннотации - (как понял будет использовать XCTContext.runActivity(named: “TestRunActivity”) { (activity) in из моих тестов)

Теперь остается пересобрать аллюр и устранить проблему прикрепления скриншотов (которая есть на самом гите в пул реквестах)

Так понял - мне нужно откатить jdk чтобы пересобрать алюр. Тк в 11 jdk не работает импорт библиотеки для работы с Xml