Паралельный запуск тестов dotnetcore, nunit3, seleniumc#

Что-то я никакой ошибки не вижу, кроме кусочка стэка. Что за ошибка-то?
Исходя из названия метода 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

что-то здесь не чисто

так пост ведь как раз о том, что это не устраивает

Ну вот так вот сразу, вместо совета и сочувствия :slight_smile:

Добавился еще один проект тестов и решили держать его в общем репозитории, так как он часть функционала. исепользует общие методы, как основу. Результат 6 часов. Ну может быть утрирую, но 6 часов скоро будет.
CI есть, билдится проект, деплой на билд машину, vstest ранит тест, генерится allure report
Сейчас отработала на не большом проекте запуск docker selenoid на виртуалке с генерацией отчета.
Теперь занялась этим динозвром. И проблема теперь в этой, судя из результатов поиска в гугл, мелочи, казалось бы.

@lelik

вы можете положить на gist изолированный case демонстрирующий ощибку пожалуйста

что то знакомое…

Looks like the ZipStorer code needs encoding 437. .NET core removes built-in support for many less common encodings, including 437. T

3 лайка

Добавление перед загрузкой файлов Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) . из пакета System.Text.Encoding.CodePages решает эту проблему

1 лайк

Спасибо всем за помощь. Работает!

Суммируя все выше описанное, сделаю вывод для “потомков”

  1. Для поиска файла в контейнере нужно добавить 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, который у меня на машине установлен. Не сталкивался с такой проблемой?