diff --git a/Gemfile b/Gemfile index c38f3a2..ecc6ce4 100644 --- a/Gemfile +++ b/Gemfile @@ -236,11 +236,7 @@ # Automatically create snapshots when Cucumber steps fail with Capybara and Rails (http://github.com/mattheworiordan/capybara-screenshot) gem "capybara-screenshot" - # The next generation developer focused tool for automated testing of webapps (https://github.com/SeleniumHQ/selenium) - gem "selenium-webdriver", "~> 3.14" - - # Easy installation and use of chromedriver. (https://github.com/flavorjones/chromedriver-helper) - gem "chromedriver-helper", ">= 1.2.0" + gem 'webdrivers', '~> 3.0' gem "rspec-collection_matchers" diff --git a/Gemfile.lock b/Gemfile.lock index 2a4f52a..b8cf9e1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -49,8 +49,6 @@ annotate_gem (0.0.14) bundler (>= 1.1) api-pagination (4.8.2) - archive-zip (0.12.0) - io-like (~> 0.3.0) arel (6.0.4) ast (2.4.0) autoprefixer-rails (9.6.1.1) @@ -87,10 +85,7 @@ capybara-screenshot (1.0.23) capybara (>= 1.0, < 4) launchy - childprocess (1.0.0) - chromedriver-helper (2.1.1) - archive-zip (~> 0.10) - nokogiri (~> 1.8) + childprocess (3.0.0) coderay (1.1.2) concurrent-ruby (1.1.5) contact_us (1.2.0) @@ -200,7 +195,6 @@ rubyzip (>= 1.0) i18n (0.9.5) concurrent-ruby (~> 1.0) - io-like (0.3.0) ipaddress (0.8.3) jaro_winkler (1.5.3) jbuilder (2.6.4) @@ -411,8 +405,8 @@ sprockets-rails tilt sax-machine (1.3.2) - selenium-webdriver (3.142.5) - childprocess (>= 0.5, < 3.0) + selenium-webdriver (3.142.6) + childprocess (>= 0.5, < 4.0) rubyzip (>= 1.2.2) shellany (0.0.1) shoulda (3.6.0) @@ -455,6 +449,10 @@ activemodel (>= 4.2) debug_inspector railties (>= 4.2) + webdrivers (3.9.4) + nokogiri (~> 1.6) + rubyzip (~> 1.0) + selenium-webdriver (~> 3.0) webmock (3.7.6) addressable (>= 2.3.6) crack (>= 0.3.2) @@ -490,7 +488,6 @@ byebug capybara capybara-screenshot - chromedriver-helper (>= 1.2.0) contact_us database_cleaner devise (>= 4.7.1) @@ -538,7 +535,6 @@ ruby_dig sass-rails sassc-rails - selenium-webdriver (~> 3.14) shoulda simplecov spring @@ -546,6 +542,7 @@ text thin web-console + webdrivers (~> 3.0) webmock webpacker (~> 3.5) wicked_pdf (~> 1.1.0) diff --git a/spec/factories/departments.rb b/spec/factories/departments.rb index b480804..75600e1 100644 --- a/spec/factories/departments.rb +++ b/spec/factories/departments.rb @@ -20,6 +20,6 @@ factory :department do name { Faker::Commerce.department } code { SecureRandom.hex(5) } - org_id { Faker::Number.number(5) } + org_id { Faker::Number.number(digits: 5) } end end diff --git a/spec/factories/question_formats.rb b/spec/factories/question_formats.rb index d7e00d0..6b01a84 100644 --- a/spec/factories/question_formats.rb +++ b/spec/factories/question_formats.rb @@ -13,7 +13,7 @@ FactoryBot.define do factory :question_format do - title { Faker::Lorem.words(3).join } + title { Faker::Lorem.words(number: 3).join } description { "http://test.host" } formattype { QuestionFormat::FORMAT_TYPES.sample } diff --git a/spec/factories/stat_created_plan.rb b/spec/factories/stat_created_plan.rb index f0ad5b9..df01c31 100644 --- a/spec/factories/stat_created_plan.rb +++ b/spec/factories/stat_created_plan.rb @@ -2,6 +2,6 @@ factory :stat_created_plan do date { Date.today } org { create(:org) } - count { Faker::Number.number(10) } + count { Faker::Number.number(digits: 10) } end end diff --git a/spec/factories/stat_joined_user.rb b/spec/factories/stat_joined_user.rb index 32205ce..f53cb94 100644 --- a/spec/factories/stat_joined_user.rb +++ b/spec/factories/stat_joined_user.rb @@ -2,6 +2,6 @@ factory :stat_joined_user do date { Date.today } org { create(:org) } - count { Faker::Number.number(10) } + count { Faker::Number.number(digits: 10) } end end diff --git a/spec/mixins/versionable_model.rb b/spec/mixins/versionable_model.rb new file mode 100644 index 0000000..6912171 --- /dev/null +++ b/spec/mixins/versionable_model.rb @@ -0,0 +1,35 @@ +require 'rails_helper' + +UUID_REGEX ||= /\A[\w\d]{8}(\-[\w\d]{4}){3}-[\w\d]{12}\Z/i + +shared_examples_for "VersionableModel" do + + context "attributes" do + + it { is_expected.to have_readonly_attribute(:versionable_id) } + + end + + context "#versionable_id" do + + + before do + subject.valid? + end + + it "is set on validation" do + expect(subject.versionable_id).to be_present + end + + it "is set to a random UUID" do + expect(subject.versionable_id).to match(UUID_REGEX) + end + + it "doesn't change if already set" do + subject.versionable_id = SecureRandom.uuid + expect { subject.valid? }.not_to change { subject.versionable_id } + end + + end + +end diff --git a/spec/mixins/versionable_model_spec.rb b/spec/mixins/versionable_model_spec.rb deleted file mode 100644 index 2135a43..0000000 --- a/spec/mixins/versionable_model_spec.rb +++ /dev/null @@ -1,36 +0,0 @@ -require 'rails_helper' - -UUID_REGEX ||= /\A[\w\d]{8}(\-[\w\d]{4}){3}-[\w\d]{12}\Z/i - -shared_examples_for "VersionableModel" do - - - context "attributes" do - - it { is_expected.to have_readonly_attribute(:versionable_id) } - - end - - context "#versionable_id" do - - - before do - subject.valid? - end - - it "is set on validation" do - expect(subject.versionable_id).to be_present - end - - it "is set to a random UUID" do - expect(subject.versionable_id).to match(UUID_REGEX) - end - - it "doesn't change if already set" do - subject.versionable_id = SecureRandom.uuid - expect { subject.valid? }.not_to change { subject.versionable_id } - end - - end - -end diff --git a/spec/support/capybara.rb b/spec/support/capybara.rb index 9c5e070..5fb9609 100644 --- a/spec/support/capybara.rb +++ b/spec/support/capybara.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +require 'webdrivers/chromedriver' require_relative "helpers/capybara_helper" require_relative "helpers/sessions_helper" require_relative "helpers/tiny_mce_helper" @@ -10,6 +11,9 @@ Capybara.default_driver = :rack_test +# Cache for one hour +Webdrivers.cache_time = 3600 + # This is a customisation of the default :selenium_chrome_headless config in: # https://github.com/teamcapybara/capybara/blob/master/lib/capybara.rb #