# frozen_string_literal: true Capybara::SpecHelper.spec '#find_button' do before do @session.visit('/form') end it "should find any button" do expect(@session.find_button('med')[:id]).to eq("mediocre") expect(@session.find_button('crap321').value).to eq("crappy") end context "aria_label attribute with Capybara.enable_aria_label" do it "should find when true" do Capybara.enable_aria_label = true expect(@session.find_button('Mediocre Button')[:id]).to eq("mediocre") end it "should not find when false" do Capybara.enable_aria_label = false expect { @session.find_button('Mediocre Button') }.to raise_error(Capybara::ElementNotFound) end end it "casts to string" do expect(@session.find_button(:'med')[:id]).to eq("mediocre") end it "should raise error if the button doesn't exist" do expect do @session.find_button('Does not exist') end.to raise_error(Capybara::ElementNotFound) end context "with :exact option" do it "should accept partial matches when false" do expect(@session.find_button('What an Awesome', exact: false).value).to eq("awesome") end it "should not accept partial matches when true" do expect do @session.find_button('What an Awesome', exact: true) end.to raise_error(Capybara::ElementNotFound) end end context "with :disabled option" do it "should find disabled buttons when true" do expect(@session.find_button('Disabled button', disabled: true).value).to eq("Disabled button") end it "should not find disabled buttons when false" do expect do @session.find_button('Disabled button', disabled: false) end.to raise_error(Capybara::ElementNotFound) end it "should default to not finding disabled buttons" do expect do @session.find_button('Disabled button') end.to raise_error(Capybara::ElementNotFound) end it "should find disabled buttons when :all" do expect(@session.find_button('Disabled button', disabled: :all).value).to eq("Disabled button") end end context "without locator" do it "should use options" do expect(@session.find_button(disabled: true).value).to eq("Disabled button") end end end