Как я могу перемещаться по своему сайту с помощью rspec / capybara

#ruby-on-rails #seo #rspec #integration-testing #capybara

#ruby-on-rails #seo #rspec #интеграция-тестирование #capybara

Вопрос:

Я изучаю поисковую оптимизацию и хотел бы провести некоторые базовые SEO-тесты на своем сайте rails. Это будет включать в себя такие вещи, как проверка уникальных заголовков, текста alt на изображениях и т. Д.

Прежде чем я смогу это сделать, мне нужно иметь возможность перемещаться по своему сайту. Я могу сделать это вручную, определив все доступные для посещения маршруты, но мне было интересно, есть ли способ автоматизировать это с помощью rspec и capybara? Возможно, я мог бы использовать файл routes или какой-нибудь файл sitemap gem?

Есть предложения? Спасибо

Комментарии:

1. Это и есть Capybara. Вы можете нажимать на ссылки, находить текст, даже запускать javascript (если вы используете что-то вроде Selenium).

2. Да, но как я могу автоматизировать это, чтобы посещать каждую доступную страницу на моем сайте? Я думаю, мне следует изучить синтаксический анализ sitemap или что-то в этом роде.

Ответ №1:

Вот пример проверки представления с использованием rspec:

 scenario 'autocompletes contact name', js: true do
  visit new_communication_path
  fill_in 'communication_contact_id', with: 'Joh'
  page.should have_content 'John Doe'

  find('#ui-id-2').click

  find('#communication_contact_id').value.should == 'John Doe'
  find('#contact_autocomplete_target', visible: false).value.should ==     contact.id.to_s
 end
  

Что он делает:
1) посещает страницу rails (использует firefox в качестве движка)
2) найдите поле и заполните Joh в этом поле
3) проверьте, есть ли на странице слова John Doe
4) щелкните элемент с идентификатором, указанным выше
, и т.д..

Драгоценные камни включают rspec-rails capybara selenium-webdriver

Чтобы посетить каждую страницу, просто повторите процесс, выполнив итерацию по примеру «rails routes»:

 Rails.application.routes.routes.to_a.each do |route|
 visit route
end  
  

Надеюсь, это поможет.