cucumber-rails 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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