diff --git a/intro/Gemfile b/intro/Gemfile index 33c7fba..6781f80 100644 --- a/intro/Gemfile +++ b/intro/Gemfile @@ -1,6 +1,7 @@ source 'https://rubygems.org' -gem 'capybara', '~> 3.13', '>= 3.13.2' # Released: January 24, 2019 +gem 'capybara' # Released: January 24, 2019 +gem 'rexml' gem 'rspec', '~> 3.8' # Released: August 4, 2018 gem 'rubocop', '~> 0.65.0' # Released: Feb 19, 2019 gem 'selenium-webdriver', '~> 3.141' # Released: November 1, 2018 diff --git a/intro/Gemfile.lock b/intro/Gemfile.lock index 885efdc..13ca992 100644 --- a/intro/Gemfile.lock +++ b/intro/Gemfile.lock @@ -1,51 +1,56 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.7.0) - public_suffix (>= 2.0.2, < 5.0) - ast (2.4.0) - capybara (3.29.0) + addressable (2.8.5) + public_suffix (>= 2.0.2, < 6.0) + ast (2.4.2) + capybara (3.39.2) addressable + matrix mini_mime (>= 0.1.3) nokogiri (~> 1.8) rack (>= 1.6.0) rack-test (>= 0.6.3) - regexp_parser (~> 1.5) + regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) childprocess (3.0.0) - diff-lcs (1.3) - ffi (1.12.2) - jaro_winkler (1.5.4) - launchy (2.4.3) - addressable (~> 2.3) - mini_mime (1.0.2) - mini_portile2 (2.4.0) - nokogiri (1.10.8) - mini_portile2 (~> 2.4.0) - parallel (1.19.0) - parser (2.6.5.0) - ast (~> 2.4.0) - powerpack (0.1.2) - psych (3.1.0) - public_suffix (4.0.1) - rack (2.0.7) - rack-test (1.1.0) - rack (>= 1.0, < 3) - rainbow (3.0.0) - regexp_parser (1.6.0) - rspec (3.9.0) - rspec-core (~> 3.9.0) - rspec-expectations (~> 3.9.0) - rspec-mocks (~> 3.9.0) - rspec-core (3.9.0) - rspec-support (~> 3.9.0) - rspec-expectations (3.9.0) + diff-lcs (1.5.0) + ffi (1.16.2) + jaro_winkler (1.5.6) + launchy (2.5.2) + addressable (~> 2.8) + matrix (0.4.2) + mini_mime (1.1.5) + nokogiri (1.15.4-x86_64-darwin) + racc (~> 1.4) + parallel (1.23.0) + parser (3.2.2.3) + ast (~> 2.4.1) + racc + powerpack (0.1.3) + psych (5.1.0) + stringio + public_suffix (5.0.3) + racc (1.7.1) + rack (3.0.8) + rack-test (2.1.0) + rack (>= 1.3) + rainbow (3.1.1) + regexp_parser (2.8.1) + rexml (3.2.6) + rspec (3.12.0) + rspec-core (~> 3.12.0) + rspec-expectations (~> 3.12.0) + rspec-mocks (~> 3.12.0) + rspec-core (3.12.2) + rspec-support (~> 3.12.0) + rspec-expectations (3.12.3) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.9.0) - rspec-mocks (3.9.0) + rspec-support (~> 3.12.0) + rspec-mocks (3.12.6) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.9.0) - rspec-support (3.9.0) + rspec-support (~> 3.12.0) + rspec-support (3.12.1) rubocop (0.65.0) jaro_winkler (~> 1.5.1) parallel (~> 1.10) @@ -55,11 +60,12 @@ GEM rainbow (>= 2.2.2, < 4.0) ruby-progressbar (~> 1.7) unicode-display_width (~> 1.4.0) - ruby-progressbar (1.10.1) - rubyzip (2.0.0) - selenium-webdriver (3.142.6) + ruby-progressbar (1.13.0) + rubyzip (2.3.2) + selenium-webdriver (3.142.7) childprocess (>= 0.5, < 4.0) rubyzip (>= 1.2.2) + stringio (3.0.8) unicode-display_width (1.4.1) webdrivers (4.1.3) nokogiri (~> 1.6) @@ -69,16 +75,17 @@ GEM nokogiri (~> 1.8) PLATFORMS - ruby + x86_64-darwin-22 DEPENDENCIES - capybara (~> 3.13, >= 3.13.2) + capybara ffi (~> 1.11, >= 1.11.3) launchy (~> 2.4, >= 2.4.3) + rexml rspec (~> 3.8) rubocop (~> 0.65.0) selenium-webdriver (~> 3.141) webdrivers (~> 4.1.0) BUNDLED WITH - 1.17.2 + 2.4.20 diff --git a/intro/spec/features/01_visit_home_spec.rb b/intro/spec/features/01_visit_home_spec.rb index c7b25bd..6792acc 100644 --- a/intro/spec/features/01_visit_home_spec.rb +++ b/intro/spec/features/01_visit_home_spec.rb @@ -18,17 +18,57 @@ expect(page).to have_current_path('https://the-internet.herokuapp.com') end - scenario 'Verify Link Exists: Form Authentication' do + scenario 'Verify Page Links Exist' do + expect(page).to have_link('A/B Testing') + expect(page).to have_link('Add/Remove Elements') + expect(page).to have_link('Basic Auth') + expect(page).to have_link('Broken Images') + expect(page).to have_link('Challenging DOM') + expect(page).to have_link('Checkboxes') + expect(page).to have_link('Context Menu') + expect(page).to have_link('Digest Authentication') + expect(page).to have_link('Disappearing Elements') + expect(page).to have_link('Drag and Drop') + expect(page).to have_link('Dropdown') + expect(page).to have_link('Dynamic Content') + expect(page).to have_link('Dynamic Controls') + expect(page).to have_link('Dynamic Loading') + expect(page).to have_link('Entry Ad') + expect(page).to have_link('Exit Intent') + expect(page).to have_link('File Download') + expect(page).to have_link('File Upload') + expect(page).to have_link('Floating Menu') + expect(page).to have_link('Forgot Password') expect(page).to have_link('Form Authentication') + expect(page).to have_link('Frames') + expect(page).to have_link('Geolocation') + expect(page).to have_link('Horizontal Slider') + expect(page).to have_link('Hovers') + expect(page).to have_link('Infinite Scroll') + expect(page).to have_link('Inputs') + expect(page).to have_link('JQuery UI Menus') + expect(page).to have_link('JavaScript Alerts') + expect(page).to have_link('JavaScript onload event error') + expect(page).to have_link('Key Presses') + expect(page).to have_link('Large & Deep DOM') + expect(page).to have_link('Multiple Windows') + expect(page).to have_link('Nested Frames') + expect(page).to have_link('Notification Messages') + expect(page).to have_link('Redirect Link') + expect(page).to have_link('Secure File Download') + expect(page).to have_link('Shadow DOM') + expect(page).to have_link('Shifting Content') + expect(page).to have_link('Slow Resources') + expect(page).to have_link('Sortable Data Tables') + expect(page).to have_link('Status Codes') + expect(page).to have_link('Typos') + expect(page).to have_link('WYSIWYG Editor') end scenario 'Click Link: Form Authentication ==> Navigate to /login' do click_link('Form Authentication') expect(page).to have_current_path('/login') - end - - scenario 'Verify Link Exists: Dropdown' do - expect(page).to have_link('Dropdown') + expect(page).to have_content('Login Page') end scenario 'Click On: Dropdown ==> Navigate to /dropdown' do diff --git a/intro/spec/features/02_within_spec.rb b/intro/spec/features/02_within_spec.rb index 495b08b..3b3ef37 100644 --- a/intro/spec/features/02_within_spec.rb +++ b/intro/spec/features/02_within_spec.rb @@ -16,4 +16,10 @@ expect(page).to have_content('checkbox 2') end end + + scenario 'Within (Page Footer): Elemental Selenium' do + within('div#page-footer.row') do + expect(page).to have_link('Elemental Selenium') + end + end end diff --git a/intro/spec/spec_helper.rb b/intro/spec/spec_helper.rb index 704d0cd..2a7b770 100644 --- a/intro/spec/spec_helper.rb +++ b/intro/spec/spec_helper.rb @@ -3,6 +3,7 @@ require 'bundler' require 'capybara/dsl' require 'capybara/rspec' +#require 'capybara/rails' #add this if the application being tested is a rails app Bundler.setup(:default) Bundler.require @@ -10,9 +11,11 @@ # Which default browser do you want Selenium WebDriver to use? # :selenium_chrome # Selenium driving Chrome # :selenium_chrome_headless # Selenium driving Chrome in a headless configuration +# :selenium # Selenium driving firefox +# :selenium_headless #selenium driving Firefox in a headless configuration # https://github.com/teamcapybara/capybara#selenium -Capybara.default_driver = :selenium_chrome +Capybara.default_driver = :selenium Capybara.app_host = 'https://the-internet.herokuapp.com' Capybara.default_max_wait_time = 10