Error using Selenium WebDriver and Capybara in Rails application

I’m using rails 6.1 with ruby 2.6.5 and I’m creating tests for an Active Admin new page, The best way I found to test this new page was by using the gems Capybara, Webdrivers, and Selenium-Webdrivers. However, I’m having trouble using these gems. Could someone help me fix this or give me some ideas on how I can test an Active Admin page? I already have model and controller tests in place? Below is my configuration.

My Gemfile

gem ‘webdrivers’

gem ‘capybara’

gem ‘selenium-webdriver’

My rails_helper

require 'capybara/rspec'
require 'webdrivers'

Capybara.register_driver :selenium_chrome_headless do |app|
  options = ::Selenium::WebDriver::Options.new
  options.add_argument('--headless')
  options.add_argument('--disable-gpu')
  options.add_argument('--no-sandbox')
  options.add_argument('--disable-dev-shm-usage')
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end

Capybara.default_driver = :selenium_chrome_headless
RSpec.configure do |config|  
  config.include Devise::Test::IntegrationHelpers, type: :request

The test

require 'rails_helper'

RSpec.describe 'Admin TermsAndConditions Management', type: :feature do
  let!(:admin_user) { create(:admin_user) }
  let!(:terms_and_condition) { create(:terms_and_condition, description: 'Initial Terms and Conditions') }

  before do
    login_as(admin_user, scope: :admin_user)
  end

  describe 'Index page' do
    it 'displays the list of terms and conditions' do
      visit admin_terms_and_conditions_path
      expect(page).to have_content('Initial Terms and Conditions')
    end
  end

  describe 'Creating a new TermsAndCondition' do
    it 'creates a new terms and condition' do
      visit new_admin_terms_and_condition_path

      fill_in 'Description', with: 'New Terms and Conditions'
      click_button 'Create Terms and conditions'

      expect(page).to have_content('Terms and condition was successfully created.')
      expect(page).to have_content('New Terms and Conditions')
    end
  end

  describe 'Editing a TermsAndCondition' do
    it 'edits an existing terms and condition' do
      visit edit_admin_terms_and_condition_path(terms_and_condition)

      fill_in 'Description', with: 'Updated Terms and Conditions'
      click_button 'Update Terms and conditions'

      expect(page).to have_content('Terms and condition was successfully updated.')
      expect(page).to have_content('Updated Terms and Conditions')
    end
  end

  describe 'Deleting a TermsAndCondition' do
    it 'deletes an existing terms and condition' do
      visit admin_terms_and_conditions_path

      within("tr", text: terms_and_condition.description) do
        click_link 'Delete'
      end

      expect(page).to have_content('Terms and condition was successfully destroyed.')
      expect(page).not_to have_content(terms_and_condition.description)
    end
  end
end

The errors:

1) Admin TermsAndConditions Management Index page displays the list of terms and conditions
     Failure/Error: options = ::Selenium::WebDriver::Options.new
     
     ArgumentError:
       wrong number of arguments (given 0, expected 1)
     # ./spec/rails_helper.rb:19:in `new'
     # ./spec/rails_helper.rb:19:in `block in '
     # ./spec/features/admin/terms_and_conditions_spec.rb:13:in `block (3 levels) in '

  2) Admin TermsAndConditions Management Creating a new TermsAndCondition creates a new terms and condition
     Failure/Error: options = ::Selenium::WebDriver::Options.new
     
     ArgumentError:
       wrong number of arguments (given 0, expected 1)
     # ./spec/rails_helper.rb:19:in `new'
     # ./spec/rails_helper.rb:19:in `block in '
     # ./spec/features/admin/terms_and_conditions_spec.rb:20:in `block (3 levels) in '

  3) Admin TermsAndConditions Management Editing a TermsAndCondition edits an existing terms and condition
     Failure/Error: options = ::Selenium::WebDriver::Options.new
     
     ArgumentError:
       wrong number of arguments (given 0, expected 1)
     # ./spec/rails_helper.rb:19:in `new'
     # ./spec/rails_helper.rb:19:in `block in '
     # ./spec/features/admin/terms_and_conditions_spec.rb:32:in `block (3 levels) in '

  4) Admin TermsAndConditions Management Deleting a TermsAndCondition deletes an existing terms and condition
     Failure/Error: options = ::Selenium::WebDriver::Options.new
     
     ArgumentError:
       wrong number of arguments (given 0, expected 1)
     # ./spec/rails_helper.rb:19:in `new'
     # ./spec/rails_helper.rb:19:in `block in '
     # ./spec/features/admin/terms_and_conditions_spec.rb:44:in `block (3 levels) in '

Read more here: Source link