Капибара проверяет, изменился ли класс после клика - PullRequest
0 голосов
/ 06 февраля 2019

Как я могу проверить, был ли класс css добавлен в div после нажатия кнопки?

У меня есть кнопка с классом "btn-success" и модальная форма, которой по умолчанию нет "show "class, но после нажатия на кнопку класс" show "добавляется к модальному.

Мой тест:

it 'shows up popup with form' do
  modal_window = page.find('#data-modal')

  expect(modal_window[:class]).not_to include('show')

  page.find('.btn-success').click

  expect(modal_window[:class]).to include('show')
end

Мой Gemfile:

group :development, :test do
  gem 'rspec-rails', '~> 3.8'
  gem 'factory_bot_rails'
  gem 'rails-controller-testing'
  gem 'webmock'

  gem 'capybara'
  gem 'selenium-webdriver'
  gem 'rails-controller-testing'
end

1 Ответ

0 голосов
/ 06 февраля 2019

Чтобы сделать именно то, что вы просите, самое простое решение будет выглядеть примерно так:

it 'shows up popup with form' do
  expect(page).not_to have_css('#data-modal.show')
  page.find('.btn-success').click
  expect(page).to have_css('#data-modal.show')
end

Однако вам не следует проверять наличие определенных классов в тестах возможностей.Вместо этого вы должны проверить, что модал действительно появляется.Поскольку это поведение, управляемое JS, это означает, что ваш тест выполняется с драйвером, поддерживающим JS, убедитесь, что вы не установили для Capybara.ignore_hidden_elements значение false, а затем выполните

it 'shows up popup with form' do
  # Should initially be hidden so won't be found
  expect(page).not_to have_css('#data-modal')
  page.find('.btn-success').click
  # Should now be found
  expect(page).to have_css('#data-modal')
end
...