класс ActionDispatch::SystemTestCase
Системное тестирование
Системные тесты позволяют тестировать приложения в браузере. Поскольку системные тесты используют реальный опыт работы в браузере, вы можете легко тестировать весь ваш JavaScript из набора тестов.
Для создания системного теста в приложении, расширьте ваш тестовый класс от ApplicationSystemTestCase. Системные тесты используют Capybara в качестве основы и позволяют настроить параметры через ваш файл application_system_test_case.rb, который генерируется при создании нового приложения или scaffolding.
Вот пример системного теста:
require 'application_system_test_case'
class Users::CreateTest < ApplicationSystemTestCase
test "adding a new user" do
visit users_path
click_on 'New User'
fill_in 'Name', with: 'Arya'
click_on 'Create User'
assert_text 'Arya'
end
end
При генерации приложения или scaffolding, также будет сгенерирован файл application_system_test_case.rb, содержащий базовый класс для системного тестирования. Здесь вы можете изменить драйвер, добавить параметры Capybara и другую конфигурацию для ваших системных тестов.
require "test_helper" class ApplicationSystemTestCase < ActionDispatch::SystemTestCase driven_by :selenium, using: :chrome, screen_size: [1400, 1400] end
По умолчанию, ActionDispatch::SystemTestCase управляется драйвером Selenium с браузером Chrome и размером экрана 1400x1400.
Изменение параметров конфигурации драйвера легко. Предположим, вы хотите использовать браузер Firefox вместо Chrome. В вашем файле application_system_test_case.rb добавьте следующее:
require "test_helper" class ApplicationSystemTestCase < ActionDispatch::SystemTestCase driven_by :selenium, using: :firefox end
driven_by имеет обязательный аргумент для имени драйвера. Ключевые аргументы — :using для браузера и :screen_size для изменения размера экрана браузера. Эти два параметра не применимы к бесголовым драйверам и будут игнорироваться, если переданы.
Бесголовые браузеры, такие как бесголовый Chrome и бесголовый Firefox, также поддерживаются. Вы можете использовать эти браузеры, установив аргумент :using в :headless_chrome или :headless_firefox.
Чтобы использовать бесголовый драйвер, например, Poltergeist, обновите свой Gemfile, чтобы использовать Poltergeist вместо Selenium, а затем укажите имя драйвера в файле application_system_test_case.rb. В этом случае вы можете опустить опцию :using, потому что драйвер бесголовый, но вы по-прежнему можете использовать :screen_size для изменения размера экрана браузера, а также :options для передачи параметров, поддерживаемых драйвером. Обратитесь к документации вашего драйвера, чтобы узнать о поддерживаемых параметрах.
require "test_helper"
require "capybara/poltergeist"
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :poltergeist, screen_size: [1400, 1400], options:
{ js_errors: true }
end
Некоторые драйверы требуют, чтобы возможности браузера передавались как блок вместо хэша options.
Например, если вы хотите добавить эмуляцию мобильных устройств в Chrome, вам нужно создать экземпляр объекта Chrome::Options Selenium и добавить возможности с помощью блока.
Блок получит экземпляр <Driver>::Options, где вы можете определить требуемые возможности. Обратитесь к документации вашего драйвера, чтобы узнать о поддерживаемых опциях.
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :selenium, using: :chrome, screen_size: [1024, 768] do |driver_option|
driver_option.add_emulation(device_name: 'iPhone 6')
driver_option.add_extension('path/to/chrome_extension.crx')
end
end
Поскольку ActionDispatch::SystemTestCase является посредником между Capybara и Rails, любой драйвер, поддерживаемый Capybara, поддерживается системными тестами, если вы включите необходимые gem и файлы.
Публичные методы класса
# File actionpack/lib/action_dispatch/system_test_case.rb, line 156
def self.driven_by(driver, using: :chrome, screen_size: [1400, 1400], options: {}, &capabilities)
driver_options = { using: using, screen_size: screen_size, options: options }
self.driver = SystemTesting::Driver.new(driver, driver_options, &capabilities)
end Параметры конфигурации системного теста
По умолчанию используется Selenium, браузер Chrome и размер экрана 1400x1400.
Примеры:
driven_by :poltergeist driven_by :selenium, screen_size: [800, 800] driven_by :selenium, using: :chrome driven_by :selenium, using: :headless_chrome driven_by :selenium, using: :firefox driven_by :selenium, using: :headless_firefox
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.