capybara_error_intel 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ebab2dc2cf570ed1a3c8a6e578cd2eaa309f21f5
4
- data.tar.gz: 5732238ef77ad3b3a90c9a5386425549fc8b2ac2
2
+ SHA256:
3
+ metadata.gz: 90940dfb41a47dfa93a86282cefe1c87189c9ea73053e1db884575597bcc4751
4
+ data.tar.gz: bec5f80170054c4bf50e34db6c86b3da7dff102f21f19fac442b7d099fea32bc
5
5
  SHA512:
6
- metadata.gz: e0b827c5919d385a41de269a980ac11b5f2f331751ceb26cf179f2d672648221c462f9482cbb9b9a699d280c30f1b760779fdd6c4397c2d945c63bfcfa772d95
7
- data.tar.gz: 5c10884e7d213d895b2c4573e35812502ae5c2014fe9108e869d7ba5a50c987963aa17d731b1fa3dfeeb09a2fca52915f78e2a020d5831810ac753c64c9e1d79
6
+ metadata.gz: 4ca83fca2fab6a4c9b0ac762dbb3033d6c56526f3ec5d4f62f57cce747dd5911f063fc3e01e66b1256aa87cf5523ee862cd079a1148943d9e8c27a322690b2b1
7
+ data.tar.gz: b820708110e40f20c9c52ba1730b8ddb5d5d0537d97e9eca8d03c7d48203eb63d85ce561134859adbe9b5b043fccd5d138961f4d4464cd19957caa7773fc28e9
data/.rubocop.yml CHANGED
@@ -6,4 +6,6 @@ AllCops:
6
6
  Exclude:
7
7
  - '*.gemspec'
8
8
  - 'vendor/**/*'
9
-
9
+ Metrics/BlockLength:
10
+ Exclude:
11
+ - 'spec/**/**'
data/.travis.yml CHANGED
@@ -1,10 +1,10 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
+ - 3.0.0
5
+ - 2.6.3
4
6
  - 2.3.1
5
- - 2.2.0
6
- - 2.1.0
7
- before_install: gem install bundler -v 1.12.5
7
+ before_install: gem install bundler
8
8
  addons:
9
9
  code_climate:
10
10
  repo_token: d11a38ad79ee8bc4d2972305aeaf999e0de48508813f76ba0ec991842dafc45f
data/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ # v2.0.0
2
+
3
+ - Ruby 3.x support (thanks @hasghari)
4
+
5
+ # v1.1.1
6
+
7
+ - Support capybara 3.14 module rename (thanks @tmock12) [Read More](https://github.com/dkarter/capybara_error_intel/pull/6)
8
+
9
+ # v1.1.0
10
+
11
+ - Allow Capybara 3.x, update spec for proper error text (thanks @geoffharcourt)
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in CapybaraErrorIntel.gemspec
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ![CapybaraErrorIntel](img/CapybaraErrorIntel.png)
2
2
 
3
- [![Build Status](https://travis-ci.org/dkarter/capybara_error_intel.svg?branch=master)](https://travis-ci.org/dkarter/capybara_error_intel) [![Code Climate](https://codeclimate.com/github/dkarter/capybara_error_intel/badges/gpa.svg)](https://codeclimate.com/github/dkarter/capybara_error_intel) [![Test Coverage](https://codeclimate.com/github/dkarter/capybara_error_intel/badges/coverage.svg)](https://codeclimate.com/github/dkarter/capybara_error_intel/coverage) [![Issue Count](https://codeclimate.com/github/dkarter/capybara_error_intel/badges/issue_count.svg)](https://codeclimate.com/github/dkarter/capybara_error_intel)
3
+ [![Build Status](https://travis-ci.org/dkarter/capybara_error_intel.svg?branch=master)](https://travis-ci.org/dkarter/capybara_error_intel) [![Code Climate](https://codeclimate.com/github/dkarter/capybara_error_intel/badges/gpa.svg)](https://codeclimate.com/github/dkarter/capybara_error_intel) [![Test Coverage](https://codeclimate.com/github/dkarter/capybara_error_intel/badges/coverage.svg)](https://codeclimate.com/github/dkarter/capybara_error_intel/coverage) [![Issue Count](https://codeclimate.com/github/dkarter/capybara_error_intel/badges/issue_count.svg)](https://codeclimate.com/github/dkarter/capybara_error_intel) [![Gem Version](https://badge.fury.io/rb/capybara_error_intel.svg)](https://badge.fury.io/rb/capybara_error_intel) ![downloads counter](http://ruby-gem-downloads-badge.herokuapp.com/capybara_error_intel)
4
4
 
5
5
  Capybara provides excellent error messages for its built in predicate methods: `has_selector?`, `has_text?`, `has_title?` etc., but when those are used from Page Objects while exposing predicate methods from the PageObjects themselves the error messages are lost and all we get is `expected true, got false`. Including this module into your PageObject by adding `include CapybaraErrorIntel::DSL` after `include Capybara::DSL` will return the heuristic error messages.
6
6
 
@@ -79,6 +79,38 @@ end
79
79
  It should be rather trivial to add more of them. Please open an issue or submit a pull request if something you need is missing.
80
80
 
81
81
 
82
+ ### Accessing original predicate methods from your Page Object
83
+
84
+ If you ever need to access the overwritten Capybara predicate methods you can do
85
+ so by using Capybara's `page` for example:
86
+
87
+
88
+ ```ruby
89
+ module Pages
90
+ class PostIndex
91
+ include Capybara::DSL
92
+ include CapybaraErrorIntel::DSL
93
+
94
+ def has_header?(header_text)
95
+ page.has_selector?('h1', text: header_text)
96
+ end
97
+ end
98
+ end
99
+
100
+ ```
101
+
102
+ This will allow you to have negative assertions. That being said I strongly
103
+ discourage the use of negative assertions, especially with waiting Capybara
104
+ methods such as `has_selector?` since they can make your test suite really slow.
105
+
106
+ ```ruby
107
+ expect(post_index_page).to_not have_header('POSTS')
108
+ ```
109
+
110
+ > Note: I'm considering changing CapybaraErrorIntel for v2 to expose the
111
+ > predicate methods as bang methods, both positive and negative e.g.
112
+ > `has_selector!` and `has_no_selector!`. Please share your thoughts in the
113
+ > issues section.
82
114
 
83
115
  ## Development
84
116
 
@@ -86,6 +118,13 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
86
118
 
87
119
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
88
120
 
121
+ ## Releasing a New Version
122
+ 0. Add a version header to the top of CHANGELOG.md and list all changes as
123
+ bullets below the new version number
124
+ 1. Change the version number in `lib/capybara_error_intel/version.rb`
125
+ 2. In the project's directory run `gem build capybara_error_intel.gemspec`
126
+ 3. Push the gem to RubyGems `gem push capybara_error_intel-##VERSION##.gem`
127
+
89
128
  ## Contributing
90
129
 
91
130
  Bug reports and pull requests are welcome on GitHub at
@@ -94,8 +133,6 @@ https://github.com/dkarter/capybara_error_intel
94
133
  Please make sure the test suite passes and that you added tests for any new
95
134
  method implemented.
96
135
 
97
-
98
-
99
136
  ## License
100
137
 
101
138
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
  require 'rubocop/rake_task'
@@ -5,4 +7,4 @@ require 'rubocop/rake_task'
5
7
  RuboCop::RakeTask.new
6
8
  RSpec::Core::RakeTask.new(:spec)
7
9
 
8
- task default: [:spec, :rubocop]
10
+ task default: %i[spec rubocop]
data/bin/console CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ # frozen_string_literal: true
4
+
3
5
  require 'bundler/setup'
4
6
  require 'capybara_error_intel'
5
7
 
@@ -26,19 +26,19 @@ Gem::Specification.new do |spec|
26
26
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
27
  spec.require_paths = ['lib']
28
28
 
29
- spec.add_development_dependency 'bundler', '~> 1.12'
29
+ spec.add_development_dependency 'bundler'
30
30
  spec.add_development_dependency 'rake', '~> 10.0'
31
31
  spec.add_development_dependency 'sinatra', '~> 1.4', '>= 1.4.7'
32
32
  spec.add_development_dependency 'launchy', '~> 0'
33
33
  spec.add_development_dependency 'rack', '~> 1.6', '>= 1.6.4'
34
34
  spec.add_development_dependency 'rack-test', '~> 0.5', '>= 0.5.4'
35
+ spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0.0'
35
36
  spec.add_development_dependency 'pry'
36
37
  spec.add_development_dependency 'pry-byebug'
37
38
  spec.add_development_dependency 'rubocop'
38
39
  spec.add_development_dependency 'cadre'
39
40
  spec.add_development_dependency 'simplecov'
40
- spec.add_development_dependency 'codeclimate-test-reporter'
41
41
 
42
42
  spec.add_runtime_dependency 'rspec', '>= 2.1', '< 4.x'
43
- spec.add_runtime_dependency 'capybara', '~> 2'
43
+ spec.add_runtime_dependency 'capybara', '>= 2.0', '< 4.x'
44
44
  end
@@ -1,66 +1,76 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module CapybaraErrorIntel
2
4
  # Wraps Capybara::DSL
3
5
  module DSL
4
- def has_selector?(*args)
5
- matcher = has_selector(*args)
6
+ def has_selector?(*args, **kwargs)
7
+ matcher = has_selector(*args, **kwargs)
6
8
  match_or_error(matcher)
7
9
  end
8
10
 
9
- def has_css?(css, options = {})
10
- has_selector?(:css, css, options)
11
+ def has_css?(css, **options)
12
+ has_selector?(:css, css, **options)
11
13
  end
12
14
 
13
- def has_button?(locator, options = {})
14
- has_selector?(:button, locator, options)
15
+ def has_button?(locator, **options)
16
+ has_selector?(:button, locator, **options)
15
17
  end
16
18
 
17
- def has_field?(locator, options = {})
18
- has_selector?(:field, locator, options)
19
+ def has_field?(locator, **options)
20
+ has_selector?(:field, locator, **options)
19
21
  end
20
22
 
21
- def has_xpath?(_xpath, options = {})
22
- has_selector?(:xpath, locator, options)
23
+ def has_xpath?(_xpath, **options)
24
+ has_selector?(:xpath, locator, **options)
23
25
  end
24
26
 
25
- def has_checked_field?(locator, options = {})
26
- has_selector?(:field, locator, options.merge(checked: true))
27
+ def has_checked_field?(locator, **options)
28
+ has_selector?(:field, locator, **options.merge(checked: true))
27
29
  end
28
30
 
29
- def has_unchecked_field?(locator, options = {})
30
- has_selector?(:field, locator, options.merge(unchecked: true))
31
+ def has_unchecked_field?(locator, **options)
32
+ has_selector?(:field, locator, **options.merge(unchecked: true))
31
33
  end
32
34
 
33
- def has_select?(locator, options = {})
34
- has_selector?(:select, locator, options)
35
+ def has_select?(locator, **options)
36
+ has_selector?(:select, locator, **options)
35
37
  end
36
38
 
37
- def has_table?(locator, options = {})
38
- has_selector?(:table, locator, options)
39
+ def has_table?(locator, **options)
40
+ has_selector?(:table, locator, **options)
39
41
  end
40
42
 
41
- def has_text?(*args)
42
- matcher = has_text(*args)
43
+ def has_text?(*args, **kwargs)
44
+ matcher = has_text(*args, **kwargs)
43
45
  match_or_error(matcher)
44
46
  end
45
47
  alias has_content? has_text?
46
48
 
47
- def has_title?(title, options = {})
48
- matcher = has_title(title, options)
49
+ def has_title?(title, **options)
50
+ matcher = has_title(title, **options)
49
51
  match_or_error(matcher)
50
52
  end
51
53
 
52
54
  private
53
55
 
54
- def has_selector(*args)
55
- Capybara::RSpecMatchers::HaveSelector.new(*args)
56
+ def has_selector(*args, **kwargs)
57
+ capybara_matcher_module::HaveSelector.new(*args, **kwargs)
58
+ end
59
+
60
+ def has_text(*args, **kwargs)
61
+ capybara_matcher_module::HaveText.new(*args, **kwargs)
56
62
  end
57
63
 
58
- def has_text(*args)
59
- Capybara::RSpecMatchers::HaveText.new(*args)
64
+ def has_title(title, **options)
65
+ capybara_matcher_module::HaveTitle.new(title, **options)
60
66
  end
61
67
 
62
- def has_title(title, options)
63
- Capybara::RSpecMatchers::HaveTitle.new(title, options)
68
+ def capybara_matcher_module
69
+ if Capybara::VERSION.to_f >= 3.14
70
+ Capybara::RSpecMatchers::Matchers
71
+ else
72
+ Capybara::RSpecMatchers
73
+ end
64
74
  end
65
75
 
66
76
  def match_or_error(matcher)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module CapybaraErrorIntel
2
- VERSION = '1.0.2'.freeze
4
+ VERSION = '2.0.0'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'capybara_error_intel/version'
2
4
  require 'capybara_error_intel/dsl'
3
5
  require 'capybara'
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara_error_intel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Karter
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-28 00:00:00.000000000 Z
11
+ date: 2022-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.12'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.12'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -113,21 +113,21 @@ dependencies:
113
113
  - !ruby/object:Gem::Version
114
114
  version: 0.5.4
115
115
  - !ruby/object:Gem::Dependency
116
- name: pry
116
+ name: codeclimate-test-reporter
117
117
  requirement: !ruby/object:Gem::Requirement
118
118
  requirements:
119
- - - ">="
119
+ - - "~>"
120
120
  - !ruby/object:Gem::Version
121
- version: '0'
121
+ version: 1.0.0
122
122
  type: :development
123
123
  prerelease: false
124
124
  version_requirements: !ruby/object:Gem::Requirement
125
125
  requirements:
126
- - - ">="
126
+ - - "~>"
127
127
  - !ruby/object:Gem::Version
128
- version: '0'
128
+ version: 1.0.0
129
129
  - !ruby/object:Gem::Dependency
130
- name: pry-byebug
130
+ name: pry
131
131
  requirement: !ruby/object:Gem::Requirement
132
132
  requirements:
133
133
  - - ">="
@@ -141,7 +141,7 @@ dependencies:
141
141
  - !ruby/object:Gem::Version
142
142
  version: '0'
143
143
  - !ruby/object:Gem::Dependency
144
- name: rubocop
144
+ name: pry-byebug
145
145
  requirement: !ruby/object:Gem::Requirement
146
146
  requirements:
147
147
  - - ">="
@@ -155,7 +155,7 @@ dependencies:
155
155
  - !ruby/object:Gem::Version
156
156
  version: '0'
157
157
  - !ruby/object:Gem::Dependency
158
- name: cadre
158
+ name: rubocop
159
159
  requirement: !ruby/object:Gem::Requirement
160
160
  requirements:
161
161
  - - ">="
@@ -169,7 +169,7 @@ dependencies:
169
169
  - !ruby/object:Gem::Version
170
170
  version: '0'
171
171
  - !ruby/object:Gem::Dependency
172
- name: simplecov
172
+ name: cadre
173
173
  requirement: !ruby/object:Gem::Requirement
174
174
  requirements:
175
175
  - - ">="
@@ -183,7 +183,7 @@ dependencies:
183
183
  - !ruby/object:Gem::Version
184
184
  version: '0'
185
185
  - !ruby/object:Gem::Dependency
186
- name: codeclimate-test-reporter
186
+ name: simplecov
187
187
  requirement: !ruby/object:Gem::Requirement
188
188
  requirements:
189
189
  - - ">="
@@ -220,16 +220,22 @@ dependencies:
220
220
  name: capybara
221
221
  requirement: !ruby/object:Gem::Requirement
222
222
  requirements:
223
- - - "~>"
223
+ - - ">="
224
224
  - !ruby/object:Gem::Version
225
- version: '2'
225
+ version: '2.0'
226
+ - - "<"
227
+ - !ruby/object:Gem::Version
228
+ version: 4.x
226
229
  type: :runtime
227
230
  prerelease: false
228
231
  version_requirements: !ruby/object:Gem::Requirement
229
232
  requirements:
230
- - - "~>"
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '2.0'
236
+ - - "<"
231
237
  - !ruby/object:Gem::Version
232
- version: '2'
238
+ version: 4.x
233
239
  description: |-
234
240
  Capybara provides excellent error messages for its
235
241
  built in predicate methods: has_selector?, has_text?,
@@ -252,6 +258,7 @@ files:
252
258
  - ".rspec"
253
259
  - ".rubocop.yml"
254
260
  - ".travis.yml"
261
+ - CHANGELOG.md
255
262
  - Gemfile
256
263
  - LICENSE.txt
257
264
  - README.md
@@ -269,7 +276,7 @@ homepage: https://github.com/dkarter/capybara_error_intel
269
276
  licenses:
270
277
  - MIT
271
278
  metadata: {}
272
- post_install_message:
279
+ post_install_message:
273
280
  rdoc_options: []
274
281
  require_paths:
275
282
  - lib
@@ -284,9 +291,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
284
291
  - !ruby/object:Gem::Version
285
292
  version: '0'
286
293
  requirements: []
287
- rubyforge_project:
288
- rubygems_version: 2.5.1
289
- signing_key:
294
+ rubygems_version: 3.3.7
295
+ signing_key:
290
296
  specification_version: 4
291
297
  summary: Provides Capybara's heuristic error messages for Page Objects
292
298
  test_files: []