Spec-Zone.ru › Ruby on Rails 5.2

class ActionDispatch::SystemTestCase

Parent:
IntegrationTest
Included modules:
ActionDispatch::SystemTesting::TestHelpers::ScreenshotHelper

Системное тестирование

Системные тесты позволяют тестировать приложения в браузере. Поскольку системные тесты используют реальный опыт браузера, вы можете легко протестировать весь свой JavaScript из набора тестов.

Чтобы создать системный тест в своем приложении, расширьте свой класс тестов от ApplicationSystemTestCase. Системные тесты используют Capybara в качестве базы и позволяют настраивать параметры через ваш файл application_system_test_case.rb , который генерируется при создании нового приложения или scaffold.

Вот пример системного теста:

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

При генерации приложения или scaffold также будет сгенерирован файл 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 имеет обязательный аргумент для имени драйвера. Ключевые аргументы — :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

Поскольку ActionDispatch::SystemTestCase является обёрткой между Capybara и Rails, любой драйвер, поддерживаемый Capybara, поддерживается и в системных тестах, если вы включите необходимые gem и файлы.

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

driven_by(driver, using: :chrome, screen_size: [1400, 1400], options: {}) Показать исходный код
# File actionpack/lib/action_dispatch/system_test_case.rb, line 137
def self.driven_by(driver, using: :chrome, screen_size: [1400, 1400], options: {})
  self.driver = SystemTesting::Driver.new(driver, using: using, screen_size: screen_size, options: options)
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–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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