Spec-Zone.ru › Ruby on Rails 7.2

класс ActionDispatch::SystemTestCase

Родитель:
ActiveSupport::TestCase
Включенные модули:
ActionDispatch::SystemTesting::TestHelpers::ScreenshotHelper

Тестирование системы

Тесты системы позволяют тестировать приложения в браузере. Поскольку тесты системы используют реальный пользовательский опыт браузера, вы можете легко протестировать весь свой 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 для изменения размера экрана браузера. Эти два параметра не применимы для headless-драйверов и будут молча проигнорированы, если переданы.

Также поддерживаются headless-браузеры, такие как headless Chrome и headless Firefox. Вы можете использовать эти браузеры, установив аргумент :using в значение :headless_chrome или :headless_firefox.

Для использования headless-драйвера, например, Cuprite, обновите свой Gemfile, чтобы использовать Cuprite вместо Selenium, а затем укажите имя драйвера в файле application_system_test_case.rb. В этом случае вы можете опустить параметр :using, так как драйвер headless, но вы всё ещё можете использовать :screen_size для изменения размера экрана браузера, а также :options для передачи параметров, поддерживаемых драйвером. Обратитесь к документации вашего драйвера, чтобы узнать о поддерживаемых параметрах.

require "test_helper"
require "capybara/cuprite"

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
  driven_by :cuprite, 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 и файлов.

Константы

DEFAULT_HOST

Публичные методы класса

driven_by(driver, using: :chrome, screen_size: [1400, 1400], options: {}, &capabilities) Показать исходный код
# File actionpack/lib/action_dispatch/system_test_case.rb, line 158
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 :cuprite

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
served_by(host:, port:) Показать исходный код
# File actionpack/lib/action_dispatch/system_test_case.rb, line 167
def self.served_by(host:, port:)
  Capybara.server_host = host
  Capybara.server_port = port
end

Конфигурация сервера приложения для тестов системы.

По умолчанию это localhost. Этот метод позволяет вручную указать хост и порт.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API