From 367f77f477d028c887aa229c217ab5deb72320c3 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Thu, 20 Oct 2022 10:32:02 +0100 Subject: [PATCH 1/4] Replaces select2_select helper for find/click --- .../admin/bulk_order_management_spec.rb | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/spec/system/admin/bulk_order_management_spec.rb b/spec/system/admin/bulk_order_management_spec.rb index f2be26c90c..7bc2cbcbe3 100644 --- a/spec/system/admin/bulk_order_management_spec.rb +++ b/spec/system/admin/bulk_order_management_spec.rb @@ -473,33 +473,40 @@ 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" 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" + find("#s2id_order_cycle_filter").click + find(".select2-result-label", text: oc1.name.to_s).click 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" + find("#s2id_distributor_filter").click + find(".select2-result-label", text: d1.name.to_s).click + find("#s2id_supplier_filter").click + find(".select2-result-label", text: s1.name.to_s).click 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" + find("#s2id_distributor_filter").click + find(".select2-result-label", text: d2.name.to_s).click + find("#s2id_supplier_filter").click + find(".select2-result-label", text: s2.name.to_s).click 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" + find("#s2id_order_cycle_filter").click + find(".select2-result-label", text: oc2.name.to_s).click 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'" 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" + find("#s2id_order_cycle_filter").click + find(".select2-result-label", text: oc1.name.to_s).click + find("#s2id_distributor_filter").click + find(".select2-result-label", text: d1.name.to_s).click + find("#s2id_supplier_filter").click + find(".select2-result-label", text: s1.name.to_s).click 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" From 3447959a061eb1d3867eee1e5f55556dcdfcfb63 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 24 Oct 2022 18:26:51 +0100 Subject: [PATCH 2/4] Adds click_on_select2 helper --- spec/support/request/web_helper.rb | 5 ++++ .../admin/bulk_order_management_spec.rb | 27 +++++++------------ 2 files changed, 14 insertions(+), 18 deletions(-) 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 7bc2cbcbe3..ccfa1d7f58 100644 --- a/spec/system/admin/bulk_order_management_spec.rb +++ b/spec/system/admin/bulk_order_management_spec.rb @@ -476,24 +476,18 @@ describe ' it "allows filters to be used in combination" do expect(page).to have_selector "tr#li_#{li1.id}" expect(page).to have_selector "tr#li_#{li2.id}" - find("#s2id_order_cycle_filter").click - find(".select2-result-label", text: oc1.name.to_s).click + 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}" - find("#s2id_distributor_filter").click - find(".select2-result-label", text: d1.name.to_s).click - find("#s2id_supplier_filter").click - find(".select2-result-label", text: s1.name.to_s).click + 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}" - find("#s2id_distributor_filter").click - find(".select2-result-label", text: d2.name.to_s).click - find("#s2id_supplier_filter").click - find(".select2-result-label", text: s2.name.to_s).click + 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}" - find("#s2id_order_cycle_filter").click - find(".select2-result-label", text: oc2.name.to_s).click + 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 @@ -501,12 +495,9 @@ describe ' it "displays a 'Clear All' button which sets all select filters to 'All'" do expect(page).to have_selector "tr#li_#{li1.id}" expect(page).to have_selector "tr#li_#{li2.id}" - find("#s2id_order_cycle_filter").click - find(".select2-result-label", text: oc1.name.to_s).click - find("#s2id_distributor_filter").click - find(".select2-result-label", text: d1.name.to_s).click - find("#s2id_supplier_filter").click - find(".select2-result-label", text: s1.name.to_s).click + 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" From aebf84b53f06b9aac72d4a24b90aa05c8d1c518d Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 25 Oct 2022 11:35:50 +0100 Subject: [PATCH 3/4] Brings back rspec-retry gem and configs --- Gemfile | 1 + Gemfile.lock | 3 +++ spec/base_spec_helper.rb | 4 ++++ 3 files changed, 8 insertions(+) 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 6b74c86455..a3b649403e 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.6.0) railties (>= 3.1, < 7.1) @@ -858,6 +860,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 From b53faceebb0dd84780f3b012dbdb59b0560165a4 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 25 Oct 2022 11:55:07 +0100 Subject: [PATCH 4/4] Retries improved but still flaky examples --- spec/system/admin/bulk_order_management_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/system/admin/bulk_order_management_spec.rb b/spec/system/admin/bulk_order_management_spec.rb index ccfa1d7f58..dd02e41ce3 100644 --- a/spec/system/admin/bulk_order_management_spec.rb +++ b/spec/system/admin/bulk_order_management_spec.rb @@ -473,7 +473,7 @@ describe ' visit_bulk_order_management end - it "allows filters to be used in combination" do + 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}" click_on_select2 oc1.name, from: "order_cycle_filter" @@ -492,7 +492,7 @@ describe ' expect(page).to have_selector "tr#li_#{li2.id}" end - it "displays a 'Clear All' button which sets all select filters to 'All'" do + 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}" click_on_select2 oc1.name, from: "order_cycle_filter"