Перевели 212 систем...
 
Уведомления
Очистить всё

Перевели 212 системных тестов с Selenium на Cuprite: цифры и грабли

6 Сообщения
6 Пользователи
5 Реакции
539 Просмотры
Ксения 90
Сообщения: 18
Автор темы
Пишет тесты QA-автоматизатор
Присоединился: 4 года назад
[#83]

Делюсь, как прошёл переезд. Было: Rails 7.2, 212 системных тестов на Selenium с headless Chrome, в CI около 9 минут и три-четыре флаки в неделю. Cuprite ходит в Chrome напрямую по протоколу DevTools, без chromedriver, из-за этого и решили попробовать. Подключение у нас такое:

# spec/support/cuprite.rb
require "capybara/cuprite"

Capybara.register_driver(:cuprite) do |app|
  Capybara::Cuprite::Driver.new(
    app,
    window_size: [1400, 900],
    process_timeout: 20,
    timeout: 10,
    browser_options: ENV["CI"] ? { "no-sandbox" => nil } : {}
  )
end

RSpec.configure do |config|
  config.before(:each, type: :system) { driven_by :cuprite }
end

Стало 5 минут 40 секунд. Грабли: 14 тестов использовали page.driver.browser.switch_to.alert, это чисто селениумный API. Переписали на accept_confirm { click_on "Удалить" }, он работает в обоих драйверах. Два теста проверяли скачивание файла через папку загрузок Selenium, их пока оставили на старом драйвере через отдельный тег. Флаки за первые три недели: один, и тот из-за анимации в модалке.


5 ответов
vova73
Сообщения: 2
Только поставил Ruby QA-автоматизатор
Присоединился: 2 года назад

вышло примерно как у нас, минус 35-40% времени. и включите js_errors: true, тогда тест падает на исключении в консоли браузера


Ответ
nautilus
Сообщения: 5
Пишет в irb QA-автоматизатор
Присоединился: 1 год назад

Selenium совсем бросить получается не всегда: если часть тестов надо гонять в Firefox, Cuprite не поможет, он только про Chrome. Но для основного набора идея правильная, и держать два драйвера через тег не так страшно, как кажется: в before смотришь на метаданные примера и выбираешь нужный driven_by.


Ответ
armen_pet
Сообщения: 30
Собрал свой gem DevOps-инженер
Присоединился: 4 года назад

Если CI в Docker, Chrome в контейнере любит память. no-sandbox у вас уже есть, поставьте ещё "disable-dev-shm-usage" => nil в browser_options или увеличьте shm_size, иначе на длинных тестах вкладка тихо падает, и это выглядит как флаки.


Ответ
1 ответ
polina_iva
Присоединился: 3 года назад

Пишет в irb тестировщица
Сообщения: 3

вот да, у меня ровно так падало, пока shm был по умолчанию 64 мегабайта


Ответ
viktor.petrov
Сообщения: 26
Читает чужие PR бэкенд-разработчик
Присоединился: 4 года назад

Ксения, это готовый доклад на 15 минут, с цифрами и граблями. Записываю на сентябрьскую встречу? Скорее всего опять Васильевский


Ответ