diff --git a/Gemfile b/Gemfile index 589dcac264..d3402a1e09 100644 --- a/Gemfile +++ b/Gemfile @@ -153,6 +153,7 @@ group :test, :development do gem 'knapsack' gem 'letter_opener', '>= 1.4.1' gem 'rspec-rails', ">= 3.5.2" + gem 'rspec-retry' gem 'rswag-specs' gem 'shoulda-matchers' gem 'timecop' diff --git a/Gemfile.lock b/Gemfile.lock index 125f05ab12..d8725e2f86 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -592,6 +592,8 @@ GEM rspec-expectations (~> 3.10) rspec-mocks (~> 3.10) rspec-support (~> 3.10) + rspec-retry (0.6.2) + rspec-core (> 3.3) rspec-support (3.10.3) rswag-api (2.7.0) railties (>= 3.1, < 7.1) @@ -859,6 +861,7 @@ DEPENDENCIES roadie-rails roo rspec-rails (>= 3.5.2) + rspec-retry rswag-api rswag-specs rswag-ui diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 376299828a..890561b4d6 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -11,6 +11,7 @@ require 'view_component/test_helpers' require_relative "../config/environment" require 'rspec/rails' +require 'rspec/retry' require 'capybara' require 'paper_trail/frameworks/rspec' require "factory_bot_rails" @@ -58,6 +59,9 @@ RSpec.configure do |config| # rspec-rails. config.infer_base_class_for_anonymous_controllers = false + # Show retries in test output + config.verbose_retry = true + # Force colored output, whether or not the output is a TTY config.color_mode = :on diff --git a/spec/support/request/web_helper.rb b/spec/support/request/web_helper.rb index 57fb3b4d42..46449db4e1 100644 --- a/spec/support/request/web_helper.rb +++ b/spec/support/request/web_helper.rb @@ -127,6 +127,11 @@ module WebHelper page.find(:css, 'body').click end + def click_on_select2(value, options) + find("#s2id_#{options[:from]}").click + find(:css, ".select2-result-label", text: options[:select_text] || value).click + end + def tomselect_search_and_select(value, options) tomselect_wrapper = page.find("[name='#{options[:from]}']").sibling(".ts-wrapper") tomselect_wrapper.find(".ts-control").click diff --git a/spec/system/admin/bulk_order_management_spec.rb b/spec/system/admin/bulk_order_management_spec.rb index f2be26c90c..dd02e41ce3 100644 --- a/spec/system/admin/bulk_order_management_spec.rb +++ b/spec/system/admin/bulk_order_management_spec.rb @@ -473,33 +473,31 @@ describe ' visit_bulk_order_management end - xit "allows filters to be used in combination" do - pending "#9811" + it "allows filters to be used in combination", retry: 2 do expect(page).to have_selector "tr#li_#{li1.id}" expect(page).to have_selector "tr#li_#{li2.id}" - select2_select oc1.name, from: "order_cycle_filter" + click_on_select2 oc1.name, from: "order_cycle_filter" expect(page).to have_selector "tr#li_#{li1.id}" expect(page).to have_no_selector "tr#li_#{li2.id}" - select2_select d1.name, from: "distributor_filter" - select2_select s1.name, from: "supplier_filter" + click_on_select2 d1.name, from: "distributor_filter" + click_on_select2 s1.name, from: "supplier_filter" expect(page).to have_selector "tr#li_#{li1.id}" expect(page).to have_no_selector "tr#li_#{li2.id}" - select2_select d2.name, from: "distributor_filter" - select2_select s2.name, from: "supplier_filter" + click_on_select2 d2.name, from: "distributor_filter" + click_on_select2 s2.name, from: "supplier_filter" expect(page).to have_no_selector "tr#li_#{li1.id}" expect(page).to have_no_selector "tr#li_#{li2.id}" - select2_select oc2.name, from: "order_cycle_filter" + click_on_select2 oc2.name, from: "order_cycle_filter" expect(page).to have_no_selector "tr#li_#{li1.id}" expect(page).to have_selector "tr#li_#{li2.id}" end - xit "displays a 'Clear All' button which sets all select filters to 'All'" do - pending "#9810" + it "displays a 'Clear All' button which sets all select filters to 'All'", retry: 2 do expect(page).to have_selector "tr#li_#{li1.id}" expect(page).to have_selector "tr#li_#{li2.id}" - select2_select oc1.name, from: "order_cycle_filter" - select2_select d1.name, from: "distributor_filter" - select2_select s1.name, from: "supplier_filter" + click_on_select2 oc1.name, from: "order_cycle_filter" + click_on_select2 d1.name, from: "distributor_filter" + click_on_select2 s1.name, from: "supplier_filter" expect(page).to have_selector "tr#li_#{li1.id}" expect(page).to have_no_selector "tr#li_#{li2.id}" expect(page).to have_button "Clear All"