capybara_error_intel 1.0.2 → 2.0.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.
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: []