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 +} pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy