From 1ff1d10571cd108ae2ddd5d188033c2bb9acd123 Mon Sep 17 00:00:00 2001 From: titusfortner Date: Thu, 17 Apr 2025 16:25:15 -0700 Subject: [PATCH 1/3] [rb] add linting test --- .github/workflows/ruby-examples.yml | 17 +++++++++++++++++ examples/ruby/.rubocop.yml | 5 +++-- examples/ruby/spec/elements/finders_spec.rb | 14 +++++++------- .../spec/getting_started/using_selenium_spec.rb | 2 +- examples/ruby/spec/spec_helper.rb | 4 ++-- 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ruby-examples.yml b/.github/workflows/ruby-examples.yml index da4fb0f0d169..b0717816e088 100644 --- a/.github/workflows/ruby-examples.yml +++ b/.github/workflows/ruby-examples.yml @@ -110,3 +110,20 @@ jobs: new_command_on_retry: | cd examples/ruby DEBUG=true bundle exec rspec --only-failures --backtrace + + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout GitHub repo + uses: actions/checkout@v4 + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.1 + bundler-cache: true + - name: Install dependencies + working-directory: ./examples/ruby + run: bundle install + - name: Run RuboCop + working-directory: ./examples/ruby + run: bundle exec rubocop diff --git a/examples/ruby/.rubocop.yml b/examples/ruby/.rubocop.yml index b88b233a689b..492720f45e42 100644 --- a/examples/ruby/.rubocop.yml +++ b/examples/ruby/.rubocop.yml @@ -1,9 +1,10 @@ inherit_from: .rubocop_todo.yml -require: rubocop-rspec +plugins: + - rubocop-rspec AllCops: - TargetRubyVersion: 3.0 + TargetRubyVersion: 3.1 NewCops: enable SuggestExtensions: rubocop-rake: false diff --git a/examples/ruby/spec/elements/finders_spec.rb b/examples/ruby/spec/elements/finders_spec.rb index f6523ea029fd..5c6aa67dc841 100644 --- a/examples/ruby/spec/elements/finders_spec.rb +++ b/examples/ruby/spec/elements/finders_spec.rb @@ -12,31 +12,31 @@ it 'uses a subset of the dom to find an element' do fruits = driver.find_element(id: 'fruits') - fruit = fruits.find_element(class: 'tomatoes') + fruits.find_element(class: 'tomatoes') end it 'uses an optimized locator' do - fruit = driver.find_element(css: '#fruits .tomatoes') + driver.find_element(css: '#fruits .tomatoes') end it 'finds all matching elements' do - plants = driver.find_elements(tag_name: 'li') + driver.find_elements(tag_name: 'li') end it 'gets an element from a collection' do - elements = driver.find_elements(:tag_name,'p') + elements = driver.find_elements(:tag_name, 'p') elements.each { |e| puts e.text } end it 'finds element from element' do - element = driver.find_element(:tag_name,'div') - elements = element.find_elements(:tag_name,'p') + element = driver.find_element(:tag_name, 'div') + elements = element.find_elements(:tag_name, 'p') elements.each { |e| puts e.text } end it 'find active element' do driver.find_element(css: '[name="q"]').send_keys('webElement') - attr = driver.switch_to.active_element.attribute('title') + driver.switch_to.active_element.attribute('title') end end end diff --git a/examples/ruby/spec/getting_started/using_selenium_spec.rb b/examples/ruby/spec/getting_started/using_selenium_spec.rb index 8e50e32f5f1c..f972389fca0b 100644 --- a/examples/ruby/spec/getting_started/using_selenium_spec.rb +++ b/examples/ruby/spec/getting_started/using_selenium_spec.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true + require 'spec_helper' require 'selenium-webdriver' - RSpec.describe 'Using Selenium' do before do @driver = Selenium::WebDriver.for :chrome diff --git a/examples/ruby/spec/spec_helper.rb b/examples/ruby/spec/spec_helper.rb index 9067d5dae8aa..a68a4526f0be 100644 --- a/examples/ruby/spec/spec_helper.rb +++ b/examples/ruby/spec/spec_helper.rb @@ -10,14 +10,14 @@ # Disable RSpec exposing methods globally on `Module` and `main` config.disable_monkey_patching! Dir.mktmpdir('tmp') - config.example_status_persistence_file_path = "tmp/examples.txt" + config.example_status_persistence_file_path = 'tmp/examples.txt' config.expect_with :rspec do |c| c.syntax = :expect end config.before do |example| - bug_tracker = 'https://gigithub.com/SeleniumHQ/seleniumhq.github.io/issues' + bug_tracker = 'https://github.com/SeleniumHQ/seleniumhq.github.io/issues' guards = Selenium::WebDriver::Support::Guards.new(example, bug_tracker: bug_tracker) guards.add_condition(:platform, Selenium::WebDriver::Platform.os) From 3ab8639cba899e616f268f989b939a84ce5690aa Mon Sep 17 00:00:00 2001 From: titusfortner Date: Thu, 17 Apr 2025 16:26:07 -0700 Subject: [PATCH 2/3] [rb] update devtools version --- examples/ruby/Gemfile | 2 +- examples/ruby/Gemfile.lock | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/ruby/Gemfile b/examples/ruby/Gemfile index 076f764090a6..04e0ad6e143f 100644 --- a/examples/ruby/Gemfile +++ b/examples/ruby/Gemfile @@ -7,5 +7,5 @@ gem 'rake', '~> 13.0' gem 'rspec', '~> 3.0' gem 'rubocop', '~> 1.35' gem 'rubocop-rspec', '~> 3.0' -gem 'selenium-devtools', '= 0.134.0' +gem 'selenium-devtools', '= 0.135.0' gem 'selenium-webdriver', '= 4.31.0' diff --git a/examples/ruby/Gemfile.lock b/examples/ruby/Gemfile.lock index af6dacc1e135..16522b30d407 100644 --- a/examples/ruby/Gemfile.lock +++ b/examples/ruby/Gemfile.lock @@ -48,7 +48,7 @@ GEM rubocop (~> 1.72, >= 1.72.1) ruby-progressbar (1.13.0) rubyzip (2.4.1) - selenium-devtools (0.134.0) + selenium-devtools (0.135.0) selenium-webdriver (~> 4.2) selenium-webdriver (4.31.0) base64 (~> 0.2) @@ -64,6 +64,7 @@ PLATFORMS arm64-darwin-22 arm64-darwin-23 arm64-darwin-24 + ruby x86_64-darwin-19 x86_64-darwin-20 x86_64-darwin-22 @@ -74,7 +75,7 @@ DEPENDENCIES rspec (~> 3.0) rubocop (~> 1.35) rubocop-rspec (~> 3.0) - selenium-devtools (= 0.134.0) + selenium-devtools (= 0.135.0) selenium-webdriver (= 4.31.0) BUNDLED WITH From 0a2d040c27c61ce8896bb28498ae6c45172799e2 Mon Sep 17 00:00:00 2001 From: titusfortner Date: Thu, 17 Apr 2025 16:29:59 -0700 Subject: [PATCH 3/3] [rb] fix extensions --- examples/ruby/spec/browsers/firefox_spec.rb | 6 +++--- .../webextensions-selenium-example.crx | Bin 1192 -> 1281 bytes .../manifest.json | 10 +++++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/examples/ruby/spec/browsers/firefox_spec.rb b/examples/ruby/spec/browsers/firefox_spec.rb index 16928c9aa5fc..7a56053e4838 100644 --- a/examples/ruby/spec/browsers/firefox_spec.rb +++ b/examples/ruby/spec/browsers/firefox_spec.rb @@ -89,7 +89,7 @@ describe 'Features' do let(:driver) { start_firefox } - it 'installs addon', :skip => "Skipping tests until Firefox 127 is released" do + it 'installs addon' do extension_file_path = File.expand_path('../spec_support/extensions/webextensions-selenium-example.xpi', __dir__) driver.install_addon(extension_file_path) @@ -99,7 +99,7 @@ expect(injected.text).to eq 'Content injected by webextensions-selenium-example' end - it 'uninstalls addon', :skip => "Skipping tests until Firefox 127 is released" do + it 'uninstalls addon' do extension_file_path = File.expand_path('../spec_support/extensions/webextensions-selenium-example.xpi', __dir__) extension_id = driver.install_addon(extension_file_path) @@ -109,7 +109,7 @@ expect(driver.find_elements(id: 'webextensions-selenium-example')).to be_empty end - it 'installs unsigned addon', :skip => "Skipping tests until Firefox 127 is released" do + it 'installs unsigned addon' do extension_dir_path = File.expand_path('../spec_support/extensions/webextensions-selenium-example/', __dir__) driver.install_addon(extension_dir_path, true) diff --git a/examples/ruby/spec/spec_support/extensions/webextensions-selenium-example.crx b/examples/ruby/spec/spec_support/extensions/webextensions-selenium-example.crx index 38b38003b7ec30d3c654745fa64909bd2899d9c7..941114eb446e8f4621f70aa9945066908a397a5f 100644 GIT binary patch literal 1281 zcmZ=RGBROiU|?`%Vqg$j!@{+U$)Jf*$$*!QQ>)FR?K>|cBO@yVa}y&!15licsfm%1 z;X#p&OrGOG|JZo-wk{!E9?@%sXF%QAEzP+6=bWOQ5`Uh5mU!KHj47j1voON>)MX>bpuCr%MgoF9zA3?7LY?(% z*e(1{vdmw_*&cgt=?RU+5$Y=rah|(yZ|Ag{*yi|>3aj(>SMNx^V^A_YHS>z>lE)#x z_RWYFOMm{GO>Bp|hqm>PB6G1-I@K5d=t>`MZTZaFe#qrR^URe;%g#JWdNSEHZ^wk& za;hzh65iiF`AYK9^!~;D2Kl#Af8Kr}v!SW6W9_A*68o)kchFqORd&#H~#)FP4h#-HX)>(Qtd+rIz* z{yTS{|H!*M(KVtq$EQpuY-h`RgOVhxf}q>gIcq+eXf1x<_*QTJpN*HVCiU#ipK^Gz z;(h&d3BHoAjfGWo&L=QDT*I*_ z26!{G=rS;Ha4<0II7dd^c=K^GFnPTIVonAThRnRI)Z`MqtYSt60iX~nsP#Y1)odWJ z=ef3+z9-)==0~2t6b*MTjeg`-;yd+Hz5X<>{Jm#+4%^Jxy-sNAW{We0vYuBCUuKwM zz+BYG=eM`hn02Z5qGrqPm^JylGTYh&tv2vWWdu)Z-K_J~sk7z!#$~!a!AifsYUSQa z4-{(UTP3{dj;59(kM$q^Rd#EiuTgw_uO(CI;J;&>vPB=)R{p%NoPQ7D8^_GxNISvC z)6$F#49URE!VC0GZem_$T52)KKlypseAF6b>wnll;O=K_Kl899jHRcKFbNqmGdl&o zikX!yZT(5sGjQtvzDF}eL|MA+@9qBnZr;;kriR?iooW{ssq4SddA4EaOpfSnEtU@) zqOCMfwcwQUnoW0U5HHxy5>u!oTS#6y$=UMnc*_qAJ>w;&z`Y%7>+w9*J zG1Au`36=XCdm)FR?K>|cBO@yVa}y&!15licsfm%1 zVb()Sy_mZZ&c@#qeC-St2ff^>nW5)1B|p9JbI$Cq+ZC4lHn(8vCnkuReWwi#*vljV< z6*SA|t^c-tO1}NG3kehW)r<^-Ow5WqGWNTyRP8ovRCJi3|4gf5;f>_~ZYLKR6i)c` z>gAs6to6HYT5rDNv7lG;cZ6X0^YU{GUKb=Su)7;*Z)ktG(pT_@RJ-sr&jKF@8r z|BKtwe65?tj)5$Xei@a2t|^M&v^DD8bQg3ZY^4|)~H6t=v!N%%YIRvZ>AcZpS?~CD!+R# z_E+tTq6O;$Ev-MhZgiD5OIB{EGCckCuwF&eM;0M2fkP+Lc+W`GFO2Q*Ss5h7+Zy1_ z%p$_Tz`?2JE-{*a z_%0*BZpgSjUSY0K#p1`8`=#8>=QQfte0Eqn`_=WW(uz0#yB**C%Fg}LxnpIPPZAW1 z-hY&SFe@u6ro_GTfZvh!*x3A6ywf<>CdA)+vV6^xEm5Ku?F@_8c($DSJ#TAN-Ug4! z{B;xTc1w57nEl`X*N%Nt%hXBv^6P)MQYQ)b<V zTxXhf7r9Pf73;QBQN*BB`mcRRZOr$G*k@}$9%gv>O-eZW>xCHq@4rvT#szpY0!s$m r5ejrZ12Ar(03~|SwW50)qz9r^6iC4XA;6oJ4J5?`ghfF5JXj3?S108f diff --git a/examples/ruby/spec/spec_support/extensions/webextensions-selenium-example/manifest.json b/examples/ruby/spec/spec_support/extensions/webextensions-selenium-example/manifest.json index a8b4fec6e60f..69e480dc60dd 100644 --- a/examples/ruby/spec/spec_support/extensions/webextensions-selenium-example/manifest.json +++ b/examples/ruby/spec/spec_support/extensions/webextensions-selenium-example/manifest.json @@ -14,9 +14,17 @@ ] } ], + "permissions": [ + "storage", + "scripting" + ], + "host_permissions": [ + "https://*/*", + "http://*/*" + ], "browser_specific_settings": { "gecko": { "id": "webextensions-selenium-example-v3@example.com" } } -} \ No newline at end of file +}