diff --git a/spec/support/initializers/cuprite.rb b/spec/support/initializers/cuprite.rb index 9a84a26bf..56b5ae0a9 100644 --- a/spec/support/initializers/cuprite.rb +++ b/spec/support/initializers/cuprite.rb @@ -25,12 +25,10 @@ remote_options = remote_chrome ? { url: REMOTE_CHROME_URL } : {} Capybara.register_driver(:better_cuprite) do |app| Capybara::Cuprite::Driver.new( app, - **{ - window_size: [1200, 800], - browser_options: {}, - process_timeout: 10, - inspector: true, - headless: !ENV["HEADLESS"].in?(%w[n 0 no false]) - }.merge(remote_options), + window_size: [1200, 800], + browser_options: {}, + process_timeout: 30, + inspector: true, + headless: !ENV["HEADLESS"].in?(%w[n 0 no false]), **remote_options ) end diff --git a/spec/system/ahoy/tracking_create_account_spec.rb b/spec/system/ahoy/tracking_create_account_spec.rb index 295a36188..ed9917d6c 100644 --- a/spec/system/ahoy/tracking_create_account_spec.rb +++ b/spec/system/ahoy/tracking_create_account_spec.rb @@ -1,6 +1,6 @@ require "rails_helper" -RSpec.describe "Tracking 'Clicked on Create Account'" do +RSpec.describe "Tracking 'Clicked on Create Account'", :js do context "when on the homepage" do let(:user) { create(:user) } # rubocop:disable RSpec/LetSetup @@ -14,46 +14,38 @@ RSpec.describe "Tracking 'Clicked on Create Account'" do end it "has the necessary initial tracking elements", :aggregate_failures do - expect(page).to have_selector('a[data-tracking-id="ca_top_nav"]') - expect(page).to have_selector('a[data-tracking-id="ca_left_sidebar_home_page"]') + expect(page).to have_css('a[data-tracking-id="ca_top_nav"]') + expect(page).to have_css('a[data-tracking-id="ca_left_sidebar_home_page"]') end - it "has the create account tracking element in the hamburger", { aggregate_failures: true, js: true } do + it "has the create account tracking element in the hamburger", :aggregate_failures do Capybara.current_session.driver.resize(425, 694) first(".js-hamburger-trigger").click - expect(page).to have_selector('a[data-tracking-id="ca_hamburger_home_page"]') + expect(page).to have_css('a[data-tracking-id="ca_hamburger_home_page"]') end - xit "tracks a click with the correct source", { aggregate_failures: true, js: true } do + it "tracks a click with the correct source", :aggregate_failures do expect do find('[data-tracking-id="ca_top_nav"]').click end.to change(Ahoy::Event, :count).by(1) - ahoy_event = Ahoy::Event.find_by(name: "Clicked on Create Account") - expect(ahoy_event).to be_present - expect(ahoy_event.properties).to have_key("source") - expect(ahoy_event.properties).to have_key("page") - expect(ahoy_event.properties).to have_key("version") - - expect(ahoy_event.properties["source"]).to eq("top_navbar") + expect(Ahoy::Event.last.name).to eq("Clicked on Create Account") + expect(Ahoy::Event.last.properties).to include("source", "page", "version", "source" => "top_navbar") end end context "when tracking through the modal" do - it "adds an ahoy event", { aggregate_failures: true, js: true } do + it "adds an ahoy event", :aggregate_failures do article = create(:article, user: create(:user)) visit article.path find(".follow-action-button").click - find(".js-global-signup-modal__create-account").click + expect do + find(".js-global-signup-modal__create-account").click + end.to change(Ahoy::Event, :count).by(1) expect(page).to have_current_path("/enter?state=new-user") - ahoy_event = Ahoy::Event.find_by(name: "Clicked on Create Account") - expect(ahoy_event).to be_present - expect(ahoy_event.properties).to have_key("source") - expect(ahoy_event.properties).to have_key("page") - expect(ahoy_event.properties).to have_key("referring_source") - expect(ahoy_event.properties).to have_key("trigger") - expect(ahoy_event.properties).to have_key("version") + expect(Ahoy::Event.last.name).to eq("Clicked on Create Account") + expect(Ahoy::Event.last.properties).to include("source", "page", "referring_source", "trigger", "version") end end end