bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

Реиспользование selenium сессии в gemini #975

Open alexpts opened 8 years ago

alexpts commented 8 years ago

Есть набор тестов браузерных на основе другого инструмента, который работает с selenium wd также. Эти тесты открывают в сумме все страницы и воспроизводят многие состояния страницы.

Браузерные тесты и тесты на верстку с помощью gemini можно разделить условно на 2 повторяющиеся фазы: 1) Открытие страницы и вызов нужного состояния страницы. 2) Получить что-то со страницы / сделать скриншот.

С одной стороны тесты на верстку и функциональные тесты сами по себе. Но время прогона увеличивается в 2 раза, так как фактически 2 раза состояния воспроизводятся одни. Сначала в браузерных тестах, затем в тестах на верстку.

Если я верно понимаю, то мы можем в 1 инструменте стартануть selenium сессию и получить id сессии. А в другом инструменте (в данном слуаете gemini) послать команду на снятие скриншота. Но для этого нам нужно подсунуть id сессии (возможно еще что-то сделать). На более низком уровне это просто rest вызовы к selenium с указанием параметров и id сессии.

Gemini очень просто было бы внедрить в существующие тесты. Первый инструмент создает и останавливает сессии selenium и приводит страницу к нужному состоянию. А gemini в нужном месте выполняет свои запросы.

Насколько реально такое сделать или нет и почему? В чем сложность такого подхода. Было бы удобно скрестить функционал webdriver.io/nightwatchjs с gemini таким образом.

tadatuta commented 8 years ago

@sipayRT

alexpts commented 8 years ago

Ребят, а у вас slack или gitter чата нет по gemini?

sipayRT commented 8 years ago

кажется, ты пытаешься смешать мух с котлетами :) Если ты не хочешь тратить время в 2 раза больше, то запускай функциональные тесты и тесты gemini параллельно. Ну и такой подход очень нестабильный:

  1. Один функциональный тест может поломать тесты в gemini
  2. gemini при упавшем тесте попытается перезапустить сессию и положит все твои функциональные тесты
  3. как ты представляешь работу двух инструментов на одной странице? Если последовательно, то в чем ты выигрываешь? Если параллельно, то ... тебе нужно будет сделать свою свежуюю фотку и запомнить каким ты был молодым, т.к. после таких запусков ты быстро поседеешь :)

в общем, в этом подходе я пока не увидел ничего полезного

alexpts commented 8 years ago

Я пока только рассуждаю :)

  1. Да, управление состоянием страницы становится сложнее и вероятность side эффекта возрастает.
  2. Это реализация. (Пока это не затрагиваю)
  3. Их работа условно сводится к вызову rest/rpc selenium. Они работают последовательно. Выигрываю в том, что страницу открываю 1 раз на тесты. И состояния воспроизвожу 1 раз. Если взять облачные сервисы вроде browserstack/saucelab, где стартует vm и поднимается браузер, это будет ощутимо.

Параллельный прогон решает сейчас вопрос времени. Но он требует и ресурсов в 2 раза больше. Опять же число воркеров на browserstack/saucelab ограничено.

В целом понял твой посыл :)