testplane
testplane copied to clipboard
Why is hermione better than mocha-parallel-tests + wedriver.io?
It'd be great to mention it in Why should you choose hermione? chapter.
To be honest I don't know which killer features hermione
provides to? I'm in crossroads: hermione
or mocha-parallel-tests + wedriver.io
?
Could you convince me to use hermione
? :)
at first, it's retries. Failed test will be retried in new browser session. It minimizes the count of external dependencies errors (for example, unstable grid)
@tarmolov
Using just webdriver.io
you should write in tests all that stuff about browser initialization (desiredCapabilities, etc.). So tell me please how you suppose to launch tests in different browsers in parallel via mocha-parallel-tests
+ webdriver.io
? Same tests. In different browsers.
@sipayRT mocha-parallel-tests
has retry option. Doesn't it work?
@j0tunn what if do I write only an a couple of helpers for the initialization and desiredCapabilities? It seems that mocha-parallel-tests + webdriver.io
can run tests in parallel only in a specific browser but no different browsers. Running tests in parallel not only in one browsers but in different ones is a good point!
Each a new user of hermione
can ask us why it's better than just webdriver.io
or mocha-parallel-tests + webdriver.io
. If we add some refs in our Why should you choose hermione?
, it'll clear up a lot of questions.
@sipayRT @j0tunn what do you think? Could you do that?
@tarmolov tnx, I'll try to explain it in our docs.
fyi @1999
Кажется прошло полгода, да?
Seems like a huge number of time has passed. My colleagues are using either mocha-parallel-tests + webdriver.io or wdio + mocha-parallel-tests. Feeling okay. Probably ava is also a good choice here.
@1999 They should continue to use mocha-parallel-tests
if its fits their needs.
I think hermione
plays at its best on the huge tests codebase with a lot of browsers on several platforms to run tests at. Like in serp/web4
project.
Right now I'm pretty sure that there's no any reason to use hermione over webdriver.io + ava
or webdriver.io + mocha-parallel-tests
at all. hermione
for me is like a huge library-which-does-everything while mocha-parallel-tests
is just a small wrapper on top of mocha
which allows parallel suites + --max-parallel <num>
and --retry <num>
.
Same tests. In different browsers.
If your test is doing something like this:
it('should set like for music track and add it to favorities', async () => {
await browser.url(...);
await browser.doesNotExist('.music-track[data-id="...."]');
await browser.click('.music-track__like-icon');
await browser.waitForVisible('music-track__liked');
await browser.url(favoritiesUrl);
await browser.exists('.music-track[data-id="...."]');
})
Running this test in different browsers in parallel is bad. But if you still want it, multiremote is available.
Running this test in different browsers in parallel is bad.
@1999 Почему?
But if you still want it, multiremote is available.
Из документации Multiremote.
Since more than one browser executes the command we also receive more than one result. ... Multiremote is not meant to execute all your tests in parallel. It should help you to coordinate more than one browser for sophisticated integration tests.
Эмм... Даже не знаю. По-моему, оно совсем про другое.
Дима, у меня несколько вопросов:
- Сколько тестов (сьютов / сценариев) в вашем проекте?
- В каких браузерах эти тесты запускаются?
- За сколько минут ваши тесты проходят?
- Запускаете ли вы все тесты на каждый pull request или запускаете их селективно в зависимости от изменений в файлах? Если селективно, то по каким правилам?
- Бывает ли, что ваши тесты падают и ретраятся? Как часто?
- Легко ли вам удаётся находить причину падения теста?
- Вас текущая инфраструктура для запуска тестов устраивает на 100%, или хочется что-то изменить?
@tarmolov Саша, буду благодарен, если тоже сможешь ответить на эти ☝️ вопросы.
PS: К слову, webdriver.io очень плохо написан; вносить туда изменения очень сложно; даже мейнтейнер боится вносить в ядро мало-мальски сложные изменения, которые мы присылаем в PR.
Я выше ведь показал пример, когда запуск тестов в нескольких браузерах сразу - не вариант. multiremote внутри запускает все тесты параллельно, по крайней мере команда за командой.
Про webdriver.io плохо написанный - не буду спорить, мне не очень понятен его код, особенно сейчас. Но когда я смотрю на selenium-webdriver, у меня глаза вытекают. Hermione вроде бы использует внутри именно webdriver.io и заменить его чем-то не особенно получится в ближайшее время, верно?
Про твои вопросы не очень корректно, Серёж. У вас людей больше, есть выделенные люди на инфраструктуру, отсюда и больше тестов. И тем не менее я до сих пор не вижу причину использовать ваш комбайн, а не чистый webdriver.io (например эта issue все еще открыта). Более того, у нас автотесты появились во вменяемом виде около года назад только моими силами: я начал обучать двух наших ручных тестировщиков описывать регрессию в формате тестов на JavaScript + попутно начал вводить интеграционные тесты через Селениум на каждый пулреквест в КиноПоиске.
Сколько тестов (сьютов / сценариев) в вашем проекте?
Если говорить про регрессию, то выйдет около 300 тестов на фронтенд и бэкенд. В каждом тесте в среднем около 10 тесткейсов. В Телепрограмме около 120 с 20 тесткейсами. Сейчас начинаем этот же путь в Музыке.
В каких браузерах эти тесты запускаются?
Только десктопные Хромиум и Firefox, сейчас начинаем смотреть в сторону мобильных браузеров.
За сколько минут ваши тесты проходят?
В среднем от 3 до 10 минут
Бывает ли, что ваши тесты падают и ретраятся? Как часто?
Бывает, часто. Ретраи в mocha-parallel-tests в 99% решают проблему.
Легко ли вам удаётся находить причину падения теста?
Да
Вас текущая инфраструктура для запуска тестов устраивает на 100%, или хочется что-то изменить?
Всегда хочется чего-то лучше и мы постепенно все это внедряем. Каких-то постоянных болей у нас нет.
Мы только начали писать тесты. Пока не могу ответить на твои вопросы. Через полгодика будет видно :)
например эта issue все еще открыта
а какой смысл его закрывать, если здесь ведется беседа? В доке я отразил все, что посчитал нужным для выбора инструмента. Добавлять в доку сравнения с разными инструментами как-то странно - прийдется постоянно мониторить актуальность этого сравнения. А потом прийдут еще 10 человек и попросят добавить еще сравнение и с другими инструментами. В итоге получится не дока, а сплошное сравнение
Ретраи в mocha-parallel-tests в 99% решают проблему.
видимо, это только из-за того, что тесты гоняются в FF и Chrome (в стабильных браузерах). Если в mocha-parallel-test
ничего не поменялось, то тесты перезапускаются в той же сессии, поэтому эит ретраи никак не помогут, если запускать тесты, например, в ie11 или в нагруженных андроидах
Да нет, почему же. В новых сессиях все запускается.
@1999 Дима, спасибо за ответы!
Скажи ещё, пожалуйста, используете ли вы WebdriverCSS для тестирования вёрстки скриншотами? Или вы Gemini используете? Или ничего не используете для этого?
И тем не менее я до сих пор не вижу причину использовать ваш комбайн, а не чистый webdriver.io
За сколько минут ваши тесты проходят?
В среднем от 3 до 10 минут
С Hermione ваши тесты могут проходить за 1-2 минуты за счёт запуска в одном браузере в несколько потоков. Неплохая экономия времени разработчика?
Всегда хочется чего-то лучше и мы постепенно все это внедряем. Каких-то постоянных болей у нас нет.
У вас очень ненагруженная инфраструктура тестирования. Нет тяжёлых/проблемных браузеров (Android + ChromeMobile, IE 9-11). В таком случае действительно особо ничего не нужно наворачивать, если скорость прогона тестов устраивает.
Мы только начали писать тесты. Пока не могу ответить на твои вопросы. Через полгодика будет видно :)
@tarmolov Будет интересно узнать про ваш опыт
С Hermione ваши тесты могут проходить за 1-2 минуты за счёт запуска в одном браузере в несколько потоков
Звучит немного.. странно :) вы запускаете их в разных вкладках? Если да, это можно было бы вынести в отдельную библиотеку, которую можно было бы подключать и в простой webdriver.io, и в selenium-webdriver, и в hermione.
Для тестирования верстки в Телепрограмме используем WebdriverCSS. Гемини щупали, но впечатления не совпали с ожиданиями.
Про браузеры ты абсолютно прав.
Звучит немного.. странно :) вы запускаете их в разных вкладках?
Мы их запускаем на разных машинах в Selenium Grid параллельно.
Если да, это можно было бы вынести в отдельную библиотеку, которую можно было бы подключать и в простой webdriver.io, и в selenium-webdriver, и в hermione.
Нет, это не легко отчуждаемая функциональность, встраиваемая куда угодно.
Для тестирования верстки в Телепрограмме используем WebdriverCSS. Гемини щупали, но впечатления не совпали с ожиданиями.
А вот тут интересны подробности. Какие у вас были ожидания и какие впечатления с ними не совпали? И как давно вы пробовали Gemini?
На сколько я знаю, в WebdriverCSS попиксельное сравнение скроншотов. Оно у вас ни разу не срабатывало ложно? Проблем с мигающей кареткой, например, нет? Или со сглаживанием закруглённых углов, шрифтов и SVG?
Мы их запускаем на разных машинах в Selenium Grid параллельно.
Ну, у нас та же история. Тут разницы никакой нет. А вот про табики идея мне нравится к слову // cc @k03mad
А вот тут интересны подробности. Какие у вас были ожидания и какие впечатления с ними не совпали? И как давно вы пробовали Gemini? На сколько я знаю, в WebdriverCSS попиксельное сравнение скроншотов. Оно у вас ни разу не срабатывало ложно? Проблем с мигающей кареткой, например, нет? Или со сглаживанием закруглённых углов, шрифтов и SVG?
cc @ixax @siauk ребята, поделитесь опытом про gemini/webdrivercss?
А вот про табики идея мне нравится к слову
просто напомню, что в неактивных табах Хром очень значительно замедляет js.
Не особо вижу смысла в табах, мы с mocha-parallel-tests запускаем по отдельному Хрому на каждый тест. Квота позволяет.
@vitalets ты возвращаешь меня на землю :) спасибо! @k03mad обрати внимание на коммент Виталика