testplane icon indicating copy to clipboard operation
testplane copied to clipboard

Why is hermione better than mocha-parallel-tests + wedriver.io?

Open tarmolov opened this issue 8 years ago • 22 comments

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? :)

tarmolov avatar Mar 31 '16 13:03 tarmolov

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)

sipayRT avatar Mar 31 '16 14:03 sipayRT

@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.

j0tunn avatar Mar 31 '16 14:03 j0tunn

@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 avatar Mar 31 '16 19:03 tarmolov

@tarmolov tnx, I'll try to explain it in our docs.

sipayRT avatar Apr 01 '16 08:04 sipayRT

fyi @1999

vitalets avatar Nov 18 '16 13:11 vitalets

Кажется прошло полгода, да?

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 avatar Nov 18 '16 17:11 1999

@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.

arikon avatar Nov 18 '16 20:11 arikon

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.

1999 avatar Nov 19 '16 06:11 1999

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.

arikon avatar Nov 20 '16 19:11 arikon

Я выше ведь показал пример, когда запуск тестов в нескольких браузерах сразу - не вариант. multiremote внутри запускает все тесты параллельно, по крайней мере команда за командой.

Про webdriver.io плохо написанный - не буду спорить, мне не очень понятен его код, особенно сейчас. Но когда я смотрю на selenium-webdriver, у меня глаза вытекают. Hermione вроде бы использует внутри именно webdriver.io и заменить его чем-то не особенно получится в ближайшее время, верно?

Про твои вопросы не очень корректно, Серёж. У вас людей больше, есть выделенные люди на инфраструктуру, отсюда и больше тестов. И тем не менее я до сих пор не вижу причину использовать ваш комбайн, а не чистый webdriver.io (например эта issue все еще открыта). Более того, у нас автотесты появились во вменяемом виде около года назад только моими силами: я начал обучать двух наших ручных тестировщиков описывать регрессию в формате тестов на JavaScript + попутно начал вводить интеграционные тесты через Селениум на каждый пулреквест в КиноПоиске.

Сколько тестов (сьютов / сценариев) в вашем проекте?

Если говорить про регрессию, то выйдет около 300 тестов на фронтенд и бэкенд. В каждом тесте в среднем около 10 тесткейсов. В Телепрограмме около 120 с 20 тесткейсами. Сейчас начинаем этот же путь в Музыке.

В каких браузерах эти тесты запускаются?

Только десктопные Хромиум и Firefox, сейчас начинаем смотреть в сторону мобильных браузеров.

За сколько минут ваши тесты проходят?

В среднем от 3 до 10 минут

Бывает ли, что ваши тесты падают и ретраятся? Как часто?

Бывает, часто. Ретраи в mocha-parallel-tests в 99% решают проблему.

Легко ли вам удаётся находить причину падения теста?

Да

Вас текущая инфраструктура для запуска тестов устраивает на 100%, или хочется что-то изменить?

Всегда хочется чего-то лучше и мы постепенно все это внедряем. Каких-то постоянных болей у нас нет.

1999 avatar Nov 20 '16 20:11 1999

Мы только начали писать тесты. Пока не могу ответить на твои вопросы. Через полгодика будет видно :)

tarmolov avatar Nov 20 '16 20:11 tarmolov

например эта issue все еще открыта

а какой смысл его закрывать, если здесь ведется беседа? В доке я отразил все, что посчитал нужным для выбора инструмента. Добавлять в доку сравнения с разными инструментами как-то странно - прийдется постоянно мониторить актуальность этого сравнения. А потом прийдут еще 10 человек и попросят добавить еще сравнение и с другими инструментами. В итоге получится не дока, а сплошное сравнение

Ретраи в mocha-parallel-tests в 99% решают проблему.

видимо, это только из-за того, что тесты гоняются в FF и Chrome (в стабильных браузерах). Если в mocha-parallel-test ничего не поменялось, то тесты перезапускаются в той же сессии, поэтому эит ретраи никак не помогут, если запускать тесты, например, в ie11 или в нагруженных андроидах

sipayRT avatar Nov 21 '16 13:11 sipayRT

Да нет, почему же. В новых сессиях все запускается.

1999 avatar Nov 21 '16 14:11 1999

@1999 Дима, спасибо за ответы!

Скажи ещё, пожалуйста, используете ли вы WebdriverCSS для тестирования вёрстки скриншотами? Или вы Gemini используете? Или ничего не используете для этого?

И тем не менее я до сих пор не вижу причину использовать ваш комбайн, а не чистый webdriver.io

За сколько минут ваши тесты проходят?

В среднем от 3 до 10 минут

С Hermione ваши тесты могут проходить за 1-2 минуты за счёт запуска в одном браузере в несколько потоков. Неплохая экономия времени разработчика?

Всегда хочется чего-то лучше и мы постепенно все это внедряем. Каких-то постоянных болей у нас нет.

У вас очень ненагруженная инфраструктура тестирования. Нет тяжёлых/проблемных браузеров (Android + ChromeMobile, IE 9-11). В таком случае действительно особо ничего не нужно наворачивать, если скорость прогона тестов устраивает.

arikon avatar Nov 23 '16 21:11 arikon

Мы только начали писать тесты. Пока не могу ответить на твои вопросы. Через полгодика будет видно :)

@tarmolov Будет интересно узнать про ваш опыт

arikon avatar Nov 23 '16 21:11 arikon

С Hermione ваши тесты могут проходить за 1-2 минуты за счёт запуска в одном браузере в несколько потоков

Звучит немного.. странно :) вы запускаете их в разных вкладках? Если да, это можно было бы вынести в отдельную библиотеку, которую можно было бы подключать и в простой webdriver.io, и в selenium-webdriver, и в hermione.

Для тестирования верстки в Телепрограмме используем WebdriverCSS. Гемини щупали, но впечатления не совпали с ожиданиями.

Про браузеры ты абсолютно прав.

1999 avatar Nov 24 '16 06:11 1999

Звучит немного.. странно :) вы запускаете их в разных вкладках?

Мы их запускаем на разных машинах в Selenium Grid параллельно.

Если да, это можно было бы вынести в отдельную библиотеку, которую можно было бы подключать и в простой webdriver.io, и в selenium-webdriver, и в hermione.

Нет, это не легко отчуждаемая функциональность, встраиваемая куда угодно.

Для тестирования верстки в Телепрограмме используем WebdriverCSS. Гемини щупали, но впечатления не совпали с ожиданиями.

А вот тут интересны подробности. Какие у вас были ожидания и какие впечатления с ними не совпали? И как давно вы пробовали Gemini?

На сколько я знаю, в WebdriverCSS попиксельное сравнение скроншотов. Оно у вас ни разу не срабатывало ложно? Проблем с мигающей кареткой, например, нет? Или со сглаживанием закруглённых углов, шрифтов и SVG?

arikon avatar Dec 09 '16 16:12 arikon

Мы их запускаем на разных машинах в Selenium Grid параллельно.

Ну, у нас та же история. Тут разницы никакой нет. А вот про табики идея мне нравится к слову // cc @k03mad

А вот тут интересны подробности. Какие у вас были ожидания и какие впечатления с ними не совпали? И как давно вы пробовали Gemini? На сколько я знаю, в WebdriverCSS попиксельное сравнение скроншотов. Оно у вас ни разу не срабатывало ложно? Проблем с мигающей кареткой, например, нет? Или со сглаживанием закруглённых углов, шрифтов и SVG?

cc @ixax @siauk ребята, поделитесь опытом про gemini/webdrivercss?

1999 avatar Dec 09 '16 23:12 1999

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

просто напомню, что в неактивных табах Хром очень значительно замедляет js.

vitalets avatar Dec 10 '16 09:12 vitalets

Не особо вижу смысла в табах, мы с mocha-parallel-tests запускаем по отдельному Хрому на каждый тест. Квота позволяет.

k03mad avatar Dec 10 '16 09:12 k03mad

@vitalets ты возвращаешь меня на землю :) спасибо! @k03mad обрати внимание на коммент Виталика

1999 avatar Dec 10 '16 09:12 1999

There are two more tools I found:

vitalets avatar Dec 13 '16 15:12 vitalets