Docker создает подобие chroot со своим собственным воркспейсом и предустановленным environment (делайте аналогию с виртуалкой, которая поднимается с нужной конфигурацией за пару секунд). По сути на одной виртуалке (или реальной машине) в зависимости от ее мощности можно запустить несколько докер контейнеров, которые будут полностью изолированы друг от друга + иметь четко предустановленный environment. У нас мы обычно запускаем по контейнеру на каждый виртуальный cpu. Тест отработал, отдал результаты, докер закончил работу, можно сразу же запускать другой. Кстати очень удобно работать с SWARM - Swarm mode overview | Docker Documentation (Swarm) , по сути сервер, который сам распределяет и поднимает докер контейнеры на нужных машинах и в нужных конфигурациях, так что вам вообще не надо думать о поднятии докера в каждой джобе.
Спасибо за развернутый ответ и ссылки на инфу. Есть над чем подумать. Возможно ето то, что я искал. Если посчасливится поднять весь етот механизм - отпишусь о результатах.
Только примите этот ответ за ОЧЕНЬ грубое описание Потому что если вдаваться в подробности, то докер это просто удобная тулза для управления линукс контейнерами, которым уже больше 5 лет (LXC - Wikipedia) и как правильно замечено в описании в вики - это виртуализация на уровне операционной системы без виртуальной машины.
Я когда пускал через грид 10 потоков - валилось все и постоянно, уменьшил до 5ти - начало работать стабильно, попробуйте просто уменьшить кол-во потоков , если проблема не исчезнет- значит ищите её в чем-ьо другом.
как у вас дела с описаной проблемой на данный момент? Решили вопрос стабильности?
Не-а
Даже при снижении количества потоков есть тесты которые себя не стабильно ведут. Симптомы те же, как описано в заголовке.
В отдельных случаях помогает просто “зацикливание” определенных действий. Т.е. к примеру: “навести мышу на елемент -> проверить что новый елемент появился -> если да - вышли, если нет -> снова навести мышу”. Но такое дублирование крайне избыточно.
Думаю, что вопрос в плагине, который “рисует” “морду”. Каким-то “волшебным” образом браузер получает команду о том, что страница загружена, а елементы либо отсутствуют либо взаимодействие с ними не дает ни какого результата. Во втором случае даже никакого исключения не вылетает, просто тест падает из-за неверно настроенного окружения ну или из-за неправильных результатов. Т.е. WebDriver абсолютно “уверен” в том, что он клацнул на елемент и ввел текст ну или выставил значение в выпадающем списке. На самом деле ничего подобного не произошло. Селенид со своими красивыми ожиданиями тоже бессилен…
Возникает желание просто сделать взаимодействие с проблемными елементами через JS, но мои познания крайне не глубоки, а, скорее всего, ето будет самый стабильный вариант.
Описанного Вами в принципе не может быть.
Когда я слышу “драйвер уверен, но ничего не произошло”, на ум сразу приходит неправильное взаимодействие с элементами. Просто многие либо напрочь игнорируют сопутствующие логи, либо “хэндлят” экспепшены с пустыми кэтчами, либо просто не замечают особенности работы кастомных компонентов… Уверен, что в результате детального анализа, наружу всплыло бы множество занимательных нюансов.
Сам в шоке
Вот етим и буду заниматься. Спасибо.
Подскажите, пожалуйста, а как Вы реализуете параллельный запуск? Я новичёк в многопоточности, быть может есть какие то статьи или заметку на тему параллельных автотестов?
В данном докладе первая тема как раз об основных граблях при использовании многопоточности. Ну и сопутствующая ссылка на GitHub с примерами.
Спасибо, очень интересный доклад, как начинающему, многое не понятно, но подача материала отменная
У нас Jenkis на машине с 8 процессорами. Более менее стабильно бегут 5 потоков параллельно (всё в докер контейнерах). Всегда надо оставлять запас. Таймауты могут быть к тому же потому, что неправильно реализовано ожидание готовности элемента (как вы проверяете, что страница полностью загрузилась?).
PS. А Selenide-то давно пора обновить
А вы что, запускаете контейнеры с тестами прямо на Jenkins тачке?
пока что так, да.
Я потерял нить повествования, откуда в этом обсуждении появился Selenide?
И что именно нужно обновить?
Это я комментировал то, что дано в первом посте у автора. У него версия 2.23
А то, что автор создавал тему год назад, вас значит не смутило?
lol, не думал, что настолько старую тему кто-то поднимет
Любая тема поднимается если в ней пишут)