Что-то я никакой ошибки не вижу, кроме кусочка стэка. Что за ошибка-то?
Исходя из названия метода WriteEndRecord
ошибка у вас при записи зипаря…
Попытаюсь как можно подробнее рассказать.
Тесты без загрузки файлов проходят без проблем.
Тест в котором есть загрузка файла, падает в месте загрузки файла.
Фактически передается ссылка где лежит картинка. Причем если меняю имя картинки на не существующее в папке с файлами - при прогоне теста пишет что файл не найден. Поэтмоу я могу сказать что файл точно есть, но видимо так как не Linux , а win, не получается передать его как урл для загрузки файла.
Но возможно другая причина. Возможно нужно использовать не SendKeys, а что-то другое. Я в печали.
2019-09-05_1755 ( если нужен весь прогон - могу приаттачить)
Upload file to selenoid container · Issue #561 · aerokube/selenoid · GitHub нашла похожую проблему, но не вижу решение
У меня скачка файлов не работала в headlessмоде, пришлось для этих тестов делать обычный режим, может таже самая проблема. Потестируйте из под студии в обычном моде и headless
Там решение есть, и оно касается именно прокидывания файлов в сам селенойд контейнер, что вы уже сделали, указав volumes.
У вас тест, я так понимаю, должен взять локальный файл (который вы прокинули в контейнер) и загрузить его на сайт, так?
И этот файл точно лежит в контейнере?
Я не использую headlessмод, поэтому думаю что проблема не в этом.
В решении было написано что:
Finally , i did it, it was missing just /volumes configuration in my browsers.json, thank you for help.
т.е. нужно добавить сюда volumes selenoid/browsers-configuration-file.adoc at master · aerokube/selenoid · GitHub
Добавила и ничего не поменялось 2019-09-06_1010
Headless мод может зависить еще от и CI, например в Azure DevOps или Teamcity если агент запущен как сервис, а не как консольное приложение тесты ранаются в Headless mode
а что такое headless mode?
у нас гитлаб, и если агентов запускать просто через экзешник, то тесты выполняются на моём рабочем столе; если как службу, то в каком-то другом пользовательском пространстве. При этом тесты тянут расширение моего монитора и браузер вроде как реально запускается
может быть, у меня не тянуло разрешение виртуалки, я в подробности не вникал
Я запускаю локально, не CI
- у вас 6 часов тестов
- нет параллелизации
- нет ci
что-то здесь не чисто
так пост ведь как раз о том, что это не устраивает
Ну вот так вот сразу, вместо совета и сочувствия
Добавился еще один проект тестов и решили держать его в общем репозитории, так как он часть функционала. исепользует общие методы, как основу. Результат 6 часов. Ну может быть утрирую, но 6 часов скоро будет.
CI есть, билдится проект, деплой на билд машину, vstest ранит тест, генерится allure report
Сейчас отработала на не большом проекте запуск docker selenoid на виртуалке с генерацией отчета.
Теперь занялась этим динозвром. И проблема теперь в этой, судя из результатов поиска в гугл, мелочи, казалось бы.
что то знакомое…
Looks like the ZipStorer code needs encoding 437. .NET core removes built-in support for many less common encodings, including 437. T
Добавление перед загрузкой файлов Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
. из пакета System.Text.Encoding.CodePages решает эту проблему
Спасибо всем за помощь. Работает!
Суммируя все выше описанное, сделаю вывод для “потомков”
- Для поиска файла в контейнере нужно добавить resultDriver.FileDetector = new LocalFileDetector(); Если файл есть - пояивтся ошибка ‘System.IO.Compression.ZipStorer’
2.Для решения ошибки : ‘System.IO.Compression.ZipStorer’ - Устанавливается библиотека [System.Text.Encoding.CodePages] и добавляется Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) перед загрузкой файла.
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
Part.ModelFile.SendKeys(Utils.GetFileFullPath(manuffilepath));
Сейчас посмотрел на решение, вспомнил, что у самого было похожая проблема, когда перевел тесты на .NetCore 2.1. И тоже эта строчка (плюс установленные пакеты):
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
помогли с решением проблемы (используется BrowserStack).
Привет, а при таком подходе скорость тестов не замедляется? Я например делал параллелизацию при помощи Nunit Parallelize, у меня 4 ядра, тесты для 4х потоков замедлились приблизительно в 4 раза, для двух потоков на 50%. Замедление происходит если я просто локально запускаю, или с помощью Selenoid, который у меня на машине установлен. Не сталкивался с такой проблемой?