cucumber-rails 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE.md +52 -0
  3. data/.github/PULL_REQUEST_TEMPLATE.md +42 -0
  4. data/.travis.yml +22 -31
  5. data/Appraisals +29 -35
  6. data/{History.md → CHANGELOG.md} +48 -30
  7. data/CONTRIBUTING.md +1 -1
  8. data/README.md +14 -8
  9. data/Rakefile +3 -3
  10. data/config/cucumber.yml +3 -3
  11. data/cucumber-rails.gemspec +10 -8
  12. data/dev_tasks/yard.rake +2 -2
  13. data/features/capybara_javascript_drivers.feature +6 -5
  14. data/features/choose_javascript_database_strategy.feature +1 -1
  15. data/features/database_cleaner.feature +3 -3
  16. data/features/disable_automatic_database_cleaning.feature +3 -3
  17. data/features/emulate_javascript.feature +12 -10
  18. data/features/no_database.feature +2 -13
  19. data/features/rerun_profile.feature +13 -4
  20. data/features/rest_api.feature +1 -1
  21. data/features/step_definitions/cucumber_rails_steps.rb +35 -11
  22. data/features/support/env.rb +8 -0
  23. data/features/support/legacy_web_steps_support.rb +7 -7
  24. data/gemfiles/rails_4_0.gemfile +5 -2
  25. data/gemfiles/rails_4_1.gemfile +4 -2
  26. data/gemfiles/rails_4_2.gemfile +4 -3
  27. data/gemfiles/rails_5_0.gemfile +3 -2
  28. data/gemfiles/rails_5_1.gemfile +4 -2
  29. data/gemfiles/rails_5_2.gemfile +17 -0
  30. data/lib/cucumber/rails.rb +2 -2
  31. data/lib/cucumber/rails/capybara/javascript_emulation.rb +2 -2
  32. data/lib/cucumber/rails/capybara/select_dates_and_times.rb +3 -3
  33. data/lib/cucumber/rails/hooks/active_record.rb +1 -1
  34. data/lib/cucumber/rails/hooks/database_cleaner.rb +2 -2
  35. data/lib/generators/cucumber/install/templates/config/cucumber.yml.erb +4 -3
  36. data/lib/generators/cucumber/install/templates/support/_rails_each_run.rb.erb +2 -2
  37. data/lib/generators/cucumber/install/templates/tasks/cucumber.rake.erb +9 -9
  38. data/spec/generators/cucumber/install/install_generator_spec.rb +1 -1
  39. data/spec/spec_helper.rb +12 -5
  40. metadata +59 -21
  41. data/gemfiles/lowest_version_bounds.gemfile +0 -26
data/Rakefile CHANGED
@@ -14,9 +14,9 @@ Dir["#{File.dirname(__FILE__)}/dev_tasks/*.rake"].sort.each { |ext| load ext }
14
14
 
15
15
  CLEAN.include('doc', 'tmp')
16
16
 
17
- task :default => :test
17
+ task default: :test
18
18
 
19
- task :test => [:spec, :cucumber]
19
+ task test: [:spec, :cucumber]
20
20
 
21
21
  namespace :test do
22
22
  desc "Run tests against all gemfiles"
@@ -45,5 +45,5 @@ namespace :gemfiles do
45
45
  end
46
46
 
47
47
  desc "Rebuild generated gemfiles and install dependencies"
48
- task :rebuild => [:clean, :install]
48
+ task rebuild: [:clean, :install]
49
49
  end
@@ -5,7 +5,7 @@ path = if failing_scenarios.empty?
5
5
  'features'
6
6
  else
7
7
  puts "Running failed scenarios"
8
- failing_scenarios
8
+ failing_scenarios.gsub /\s/, ' '
9
9
  end
10
10
  opts = [
11
11
  "--format #{path == 'features' ? 'progress' : 'pretty'}",
@@ -13,8 +13,8 @@ opts = [
13
13
  ]
14
14
  rails_version = `bundle exec rails --version`.match(/[\d.]+$/).to_s
15
15
  if Gem::Version.new(rails_version) < Gem::Version.new('4.2')
16
- opts << '--tags ~@requires-rails-version-42'
16
+ opts << "--tags 'not @requires-rails-version-42'"
17
17
  end
18
18
  optlist = opts.join(' ')
19
19
  %>
20
- default: <%= path %> <%= optlist %> --tags ~@broken
20
+ default: <%= path %> <%= optlist %> --tags 'not @broken'
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'cucumber-rails'
6
- s.version = '1.5.0'
6
+ s.version = '1.6.0'
7
7
  s.authors = ["Aslak Hellesøy", "Dennis Blöte", "Rob Holland"]
8
8
  s.description = "Cucumber Generator and Runtime for Rails"
9
9
  s.summary = "#{s.name}-#{s.version}"
@@ -12,30 +12,32 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.license = 'MIT'
14
14
 
15
- s.add_runtime_dependency('capybara', ['>= 1.1.2', '< 3'])
16
- s.add_runtime_dependency('cucumber', ['>= 1.3.8', '< 4'])
17
- s.add_runtime_dependency('nokogiri', '~> 1.5')
18
- s.add_runtime_dependency('railties', ['>= 4', '< 5.2'])
15
+ s.add_runtime_dependency('capybara', ['>= 1.1.2', '< 4'])
16
+ s.add_runtime_dependency('cucumber', ['>= 3.0.2', '< 4'])
17
+ s.add_runtime_dependency('nokogiri', '~> 1.8')
18
+ s.add_runtime_dependency('railties', ['>= 4', '< 6'])
19
19
  s.add_runtime_dependency('mime-types', ['>= 1.17', '< 4'])
20
20
 
21
21
  # Main development dependencies
22
- s.add_development_dependency('ammeter', ['>= 1.0.0', '< 1.1.3'])
22
+ s.add_development_dependency('ammeter', ['>= 1.0.0', '!= 1.1.3'])
23
23
  s.add_development_dependency('appraisal', '>= 0.5.1')
24
24
  s.add_development_dependency('aruba', '~> 0.14.2')
25
25
  s.add_development_dependency('builder', ['>= 3.1.0', '< 4'])
26
26
  s.add_development_dependency('bundler', '>= 1.3.5')
27
- s.add_development_dependency('selenium-webdriver', '>= 2.45.0')
27
+ s.add_development_dependency('selenium-webdriver', '>= 3.4.1')
28
28
  s.add_development_dependency('database_cleaner', '>= 1.0.0')
29
- s.add_development_dependency('factory_girl', '>= 3.2')
29
+ s.add_development_dependency('factory_bot', '>= 3.2')
30
30
  s.add_development_dependency('rake', '>= 0.9.2.2')
31
31
  s.add_development_dependency('rspec', '~> 3.0')
32
32
  s.add_development_dependency('rails')
33
+ s.add_development_dependency('sqlite3')
33
34
 
34
35
  # For Documentation:
35
36
  s.add_development_dependency('rdiscount', '>= 2.0.7')
36
37
  s.add_development_dependency('rdoc', '>= 3.4')
37
38
  s.add_development_dependency('yard', '>= 0.8.7')
38
39
 
40
+ s.required_ruby_version = '>= 2.2.0'
39
41
  s.rubygems_version = ">= 1.6.1"
40
42
  s.files = `git ls-files`.split("\n")
41
43
  s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
@@ -20,7 +20,7 @@ namespace :api do
20
20
  mkdir_p dir
21
21
  yard.options = ["--out", dir]
22
22
  end
23
- task :yard => :dir
23
+ task yard: :dir
24
24
 
25
25
  task :release do
26
26
  Dir.chdir(SITE_DIR) do
@@ -31,5 +31,5 @@ namespace :api do
31
31
  end
32
32
 
33
33
  desc "Generate YARD docs for Cucumber-Rails' API"
34
- task :doc => [:yard, :release]
34
+ task doc: [:yard, :release]
35
35
  end
@@ -3,19 +3,20 @@ Feature: Capybara Javascript Drivers
3
3
 
4
4
  Background: A simple calendar app
5
5
  Given I have created a new Rails app and installed cucumber-rails
6
- And I successfully run `bundle exec rails g scaffold appointment name:string when:datetime`
6
+ And I force selenium to run Firefox in headless mode
7
+ And I run `bundle exec rails g scaffold appointment name:string when:datetime`
7
8
  And I write to "features/step_definitions/date_time_steps.rb" with:
8
9
  """
9
10
  When /^(?:|I )select "([^"]+)" as the "([^"]+)" time$/ do |time, selector|
10
- select_time(time, :from => selector)
11
+ select_time(time, from: selector)
11
12
  end
12
13
 
13
14
  When /^(?:|I )select "([^"]+)" as the "([^"]+)" date$/ do |date, selector|
14
- select_date(date, :from => selector)
15
+ select_date(date, from: selector)
15
16
  end
16
17
 
17
18
  When /^(?:|I )select "([^"]+)" as the "([^"]+)" date and time$/ do |datetime, selector|
18
- select_datetime(datetime, :from => selector)
19
+ select_datetime(datetime, from: selector)
19
20
  end
20
21
  """
21
22
 
@@ -55,7 +56,7 @@ Feature: Capybara Javascript Drivers
55
56
  And I write to "features/step_definitions/custom_steps.rb" with:
56
57
  """
57
58
  Given /^a random appointment$/ do
58
- @appointment = Appointment.create!(:name => 'Random appointment', :when => DateTime.now)
59
+ @appointment = Appointment.create!(name: 'Random appointment', when: DateTime.now)
59
60
  end
60
61
 
61
62
  Given /^I am viewing random appointment$/ do
@@ -3,7 +3,7 @@ Feature: Choose javascript database strategy
3
3
  When running a scenario with the @javascript tag, Capybara will fire up a web server
4
4
  in the same process in a separate thread to your cukes. By default, this means ActiveRecord will give it a
5
5
  separate database connection, which in turn means data you put into your database from
6
- Cucumber step definitions (e.g. using FactoryGirl) won't be visible to the web server
6
+ Cucumber step definitions (e.g. using FactoryBot) won't be visible to the web server
7
7
  until the database transaction is committed.
8
8
 
9
9
  So if you use a transaction strategy for cleaning up your database at the end of a scenario,
@@ -16,18 +16,18 @@ Feature: DatabaseCleaner
16
16
  When I create 7 more widgets
17
17
  Then I should have 9 widgets
18
18
  """
19
- And I successfully run `rails generate model widget name:string`
19
+ And I run `rails generate model widget name:string`
20
20
  And I write to "features/step_definitions/widget_steps.rb" with:
21
21
  """
22
22
  Given /^I have (\d+) widgets$/ do |n|
23
23
  n.to_i.times do |i|
24
- Widget.create! :name => "Widget #{Widget.count + i}"
24
+ Widget.create! name: "Widget #{Widget.count + i}"
25
25
  end
26
26
  end
27
27
 
28
28
  When /^I create (\d+) more widgets$/ do |n|
29
29
  n.to_i.times do |i|
30
- Widget.create! :name => "Widget #{Widget.count + i}"
30
+ Widget.create! name: "Widget #{Widget.count + i}"
31
31
  end
32
32
  end
33
33
 
@@ -27,18 +27,18 @@ Feature: Disable automatic database cleaning
27
27
  When I create 5 widgets
28
28
  Then I should have 8 widgets
29
29
  """
30
- And I successfully run `rails generate model widget name:string`
30
+ And I run `rails generate model widget name:string`
31
31
  And I write to "features/step_definitions/widget_steps.rb" with:
32
32
  """
33
33
  Given /^I have (\d+) widgets$/ do |n|
34
34
  n.to_i.times do |i|
35
- Widget.create! :name => "Widget #{Widget.count + i}"
35
+ Widget.create! name: "Widget #{Widget.count + i}"
36
36
  end
37
37
  end
38
38
 
39
39
  When /^I create (\d+) widgets$/ do |n|
40
40
  n.to_i.times do |i|
41
- Widget.create! :name => "Widget #{Widget.count + i}"
41
+ Widget.create! name: "Widget #{Widget.count + i}"
42
42
  end
43
43
  end
44
44
 
@@ -2,7 +2,8 @@ Feature: Emulate Javascript
2
2
 
3
3
  Scenario: See a widget
4
4
  Given I have created a new Rails app and installed cucumber-rails
5
- And I successfully run `rails generate scaffold widget name:string`
5
+ And I force selenium to run Firefox in headless mode
6
+ And I run `rails generate scaffold widget name:string`
6
7
  And I write to "features/f.feature" with:
7
8
  """
8
9
  @javascript
@@ -15,12 +16,12 @@ Feature: Emulate Javascript
15
16
  And I write to "features/step_definitions/s.rb" with:
16
17
  """
17
18
  Given /^there is a widget named "([^"]*)"$/ do |name|
18
- FactoryGirl.create(:widget, :name => name)
19
+ FactoryBot.create(:widget, name: name)
19
20
  end
20
21
  """
21
22
  And I write to "features/support/factories.rb" with:
22
23
  """
23
- FactoryGirl.define do
24
+ FactoryBot.define do
24
25
  factory :widget do
25
26
  name 'testwidget'
26
27
  end
@@ -36,9 +37,9 @@ Feature: Emulate Javascript
36
37
 
37
38
  Scenario: Pass on the CSRF token
38
39
  Given I have created a new Rails app and installed cucumber-rails
39
- And I successfully run `rails generate scaffold widget name:string`
40
- And I successfully run `sed -i -e 's/forgery_protection *= false/forgery_protection = true/' config/environments/test.rb`
41
- And I successfully run `rails generate controller session establish`
40
+ And I run `rails generate scaffold widget name:string`
41
+ And I run `sed -i -e 's/forgery_protection *= false/forgery_protection = true/' config/environments/test.rb`
42
+ And I run `rails generate controller session establish`
42
43
  And I write to "app/controllers/session_controller.rb" with:
43
44
  """
44
45
  class SessionController < ApplicationController
@@ -51,8 +52,8 @@ Feature: Emulate Javascript
51
52
  """
52
53
  class ApplicationController < ActionController::Base
53
54
  protect_from_forgery
54
- before_action :except => :establish do
55
- render :text => "denied", :status => :forbidden and return false unless session[:verified]
55
+ before_action except: :establish do
56
+ render text: "denied", status: :forbidden and return false unless session[:verified]
56
57
  end
57
58
  end
58
59
  """
@@ -72,12 +73,12 @@ Feature: Emulate Javascript
72
73
  And I write to "features/step_definitions/s.rb" with:
73
74
  """
74
75
  Given /^there is a widget named "([^"]*)"$/ do |name|
75
- FactoryGirl.create(:widget, :name => name)
76
+ FactoryBot.create(:widget, name: name)
76
77
  end
77
78
  """
78
79
  And I write to "features/support/factories.rb" with:
79
80
  """
80
- FactoryGirl.define do
81
+ FactoryBot.define do
81
82
  factory :widget do
82
83
  name 'testwidget'
83
84
  end
@@ -90,3 +91,4 @@ Feature: Emulate Javascript
90
91
  1 scenario (1 passed)
91
92
  8 steps (8 passed)
92
93
  """
94
+
@@ -26,19 +26,8 @@ Feature: No Database
26
26
  """
27
27
  require 'cucumber/rails'
28
28
  """
29
- # Remove DatabaseCleaner and SQLite
30
- And I write to "Gemfile" with:
31
- """
32
- source 'http://rubygems.org'
33
- gem 'rails'
34
- gem "cucumber-rails", :group => :test, :path => "../../.."
35
- gem "capybara", :group => :test
36
- gem "rspec-rails", :group => :test
37
- if RUBY_VERSION >= '2.0.0'
38
- gem 'sass-rails'
39
- gem 'uglifier'
40
- end
41
- """
29
+ And I remove the 'database_cleaner' gem from the Gemfile
30
+ And I remove the 'sqlite' gem from the Gemfile
42
31
  And I write to "app/controllers/posts_controller.rb" with:
43
32
  """
44
33
  class PostsController < ApplicationController
@@ -8,6 +8,7 @@ Feature: Rerun profile
8
8
  And a file named "rerun.txt" with:
9
9
  """
10
10
  features/rerun_test.feature:2
11
+ features/rerun_test.feature:5
11
12
  """
12
13
  And a file named "features/rerun_test.feature" with:
13
14
  """
@@ -15,6 +16,9 @@ Feature: Rerun profile
15
16
  Scenario: failing before
16
17
  Given fixed now
17
18
 
19
+ Scenario: still failing
20
+ Given broken
21
+
18
22
  Scenario: always passing
19
23
  Given passing
20
24
  """
@@ -24,14 +28,19 @@ Feature: Rerun profile
24
28
  puts "All fixed now"
25
29
  end
26
30
 
31
+ Given /broken/ do
32
+ raise "I'm broken"
33
+ end
34
+
27
35
  Given /passing/ do
28
36
  puts "I've always been passing"
29
37
  end
30
38
  """
31
- When I successfully run `bundle exec cucumber -p rerun`
32
- Then the feature run should pass with:
39
+ When I run `bundle exec cucumber -p rerun`
40
+ Then it should fail with:
33
41
  """
34
- 1 scenario (1 passed)
35
- 1 step (1 passed)
42
+ 2 scenarios (1 failed, 1 passed)
43
+ 2 steps (1 failed, 1 passed)
36
44
  """
37
45
  And the file "rerun.txt" should not contain "features/rerun_test.feature:2"
46
+ And the file "rerun.txt" should contain "features/rerun_test.feature:5"
@@ -6,7 +6,7 @@ Feature: REST API
6
6
  """
7
7
  class PostsController < ApplicationController
8
8
  def index
9
- render :json => {'hello' => 'world'}.to_json
9
+ render json: {'hello' => 'world'}.to_json
10
10
  end
11
11
  end
12
12
  """
@@ -8,8 +8,7 @@ module CucumberRailsHelper
8
8
  delete_environment_variable 'RUBYOPT'
9
9
  delete_environment_variable 'BUNDLE_BIN_PATH'
10
10
  delete_environment_variable 'BUNDLE_GEMFILE'
11
- # Force older version of nokogiri on older Rubies
12
- gem 'nokogiri', '~> 1.6.8' if RUBY_VERSION < '2.1.0'
11
+
13
12
  run_simple 'bundle install'
14
13
  end
15
14
 
@@ -23,16 +22,12 @@ module CucumberRailsHelper
23
22
  if Gem.loaded_specs['rails'].version < Gem::Version.new('5.1.0')
24
23
  gem 'capybara', group: :test
25
24
  gem 'selenium-webdriver', group: :test
26
- else
27
- # Make sure to restrict the selected selenium-webdriver version
28
- # Since version 3 geckodriver is required to be installed
29
- gemfile_text = File.read(expand_path('Gemfile'))
30
- gemfile_text.gsub!("gem 'selenium-webdriver'", "gem 'selenium-webdriver', '~> 2.0'")
31
- overwrite_file('Gemfile', gemfile_text)
32
25
  end
26
+
27
+ gem 'geckodriver-helper', group: :test
33
28
  gem 'rspec-rails', group: :test
34
29
  gem 'database_cleaner', group: :test unless options.include?(:no_database_cleaner)
35
- gem 'factory_girl', group: :test unless options.include?(:no_factory_girl)
30
+ gem 'factory_bot', group: :test unless options.include?(:no_factory_bot)
36
31
  # Newer versions of rake remove a method used by RSpec older versions
37
32
  # See https://stackoverflow.com/questions/35893584/nomethoderror-undefined-method-last-comment-after-upgrading-to-rake-11#35893625
38
33
  if Gem::Version.new(RSpec::Support::Version::STRING) < Gem::Version.new('3.4.4')
@@ -83,14 +78,14 @@ end
83
78
 
84
79
  Given /^I have created a new Rails app with no database and installed cucumber-rails$/ do
85
80
  rails_new args: '--skip-active-record'
86
- install_cucumber_rails :no_database_cleaner, :no_factory_girl
81
+ install_cucumber_rails :no_database_cleaner, :no_factory_bot
87
82
  overwrite_file('features/support/env.rb', "require 'cucumber/rails'\n")
88
83
  create_web_steps
89
84
  end
90
85
 
91
86
  Given /^I have created a new Rails app "(.*?)" with no database and installed cucumber\-rails$/ do |app_name|
92
87
  rails_new name: app_name, args: '--skip-active-record'
93
- install_cucumber_rails :no_database_cleaner, :no_factory_girl
88
+ install_cucumber_rails :no_database_cleaner, :no_factory_bot
94
89
  overwrite_file('features/support/env.rb', "require 'cucumber/rails'\n")
95
90
  create_web_steps
96
91
  end
@@ -100,6 +95,18 @@ Given /^I have a "([^"]*)" ActiveRecord model object$/ do |name|
100
95
  run_simple('bundle exec rake db:migrate RAILS_ENV=test')
101
96
  end
102
97
 
98
+ Given /^I force selenium to run Firefox in headless mode$/ do
99
+ selenium_config = %{
100
+ Capybara.register_driver :selenium do |app|
101
+ browser_options = ::Selenium::WebDriver::Firefox::Options.new()
102
+ browser_options.args << '--headless'
103
+ Capybara::Selenium::Driver.new(app, browser: :firefox, options: browser_options)
104
+ end
105
+ }
106
+
107
+ step 'I append to "features/support/env.rb" with:', selenium_config
108
+ end
109
+
103
110
  When /^I run the cukes$/ do
104
111
  run_simple('bundle exec cucumber')
105
112
  end
@@ -111,3 +118,20 @@ Then /^the feature run should pass with:$/ do |string|
111
118
  step 'the exit status should be 0'
112
119
  step 'the output should contain:', string
113
120
  end
121
+
122
+ Given("I remove the {string} gem from the Gemfile") do |gem_name|
123
+ run 'pwd'
124
+ app_path = last_command_started.output.strip
125
+ gemfile_path = File.join(app_path, 'Gemfile')
126
+
127
+ content = File.open(gemfile_path, 'r').readlines
128
+ new_content = []
129
+
130
+ content.each do |line|
131
+ next if line =~ /gem ["|']#{gem_name}["|'].*/
132
+
133
+ new_content << line
134
+ end
135
+
136
+ overwrite_file(gemfile_path, new_content.join("\r\n"))
137
+ end
@@ -30,3 +30,11 @@ if(ENV['ARUBA_REPORT_DIR'])
30
30
  end
31
31
  end
32
32
  end
33
+
34
+ After do |scenario|
35
+ if scenario.failed?
36
+ puts last_command_stopped.stdout
37
+ puts last_command_stopped.stderr
38
+ end
39
+ end
40
+
@@ -53,11 +53,11 @@ When /^(?:|I )follow "([^"]*)"$/ do |link|
53
53
  end
54
54
 
55
55
  When /^(?:|I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
56
- fill_in(field, :with => value)
56
+ fill_in(field, with: value)
57
57
  end
58
58
 
59
59
  When /^(?:|I )fill in "([^"]*)" for "([^"]*)"$/ do |value, field|
60
- fill_in(field, :with => value)
60
+ fill_in(field, with: value)
61
61
  end
62
62
 
63
63
  # Use this to fill in an entire form with data from a table. Example:
@@ -78,7 +78,7 @@ When /^(?:|I )fill in the following:$/ do |fields|
78
78
  end
79
79
 
80
80
  When /^(?:|I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
81
- select(value, :from => field)
81
+ select(value, from: field)
82
82
  end
83
83
 
84
84
  When /^(?:|I )check "([^"]*)"$/ do |field|
@@ -109,9 +109,9 @@ Then /^(?:|I )should see \\/([^\\/]*)\\/$/ do |regexp|
109
109
  regexp = Regexp.new(regexp)
110
110
 
111
111
  if page.respond_to? :should
112
- page.should have_xpath('//*', :text => regexp)
112
+ page.should have_xpath('//*', text: regexp)
113
113
  else
114
- assert page.has_xpath?('//*', :text => regexp)
114
+ assert page.has_xpath?('//*', text: regexp)
115
115
  end
116
116
  end
117
117
 
@@ -127,9 +127,9 @@ Then /^(?:|I )should not see \\/([^\\/]*)\\/$/ do |regexp|
127
127
  regexp = Regexp.new(regexp)
128
128
 
129
129
  if page.respond_to? :should
130
- page.should have_no_xpath('//*', :text => regexp)
130
+ page.should have_no_xpath('//*', text: regexp)
131
131
  else
132
- assert page.has_no_xpath?('//*', :text => regexp)
132
+ assert page.has_no_xpath?('//*', text: regexp)
133
133
  end
134
134
  end
135
135