chop 0.38.8 → 0.38.9
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 +4 -4
- data/.github/workflows/ci.yml +2 -2
- data/Appraisals +2 -10
- data/CLAUDE.md +2 -2
- data/chop.gemspec +1 -1
- data/gemfiles/{rails_7.0.gemfile → rails_8.1.gemfile} +1 -1
- data/lib/chop/form.rb +28 -1
- data/lib/chop/version.rb +1 -1
- metadata +11 -7
- data/gemfiles/rails_7.1.gemfile +0 -10
- data/gemfiles/rails_7.2.gemfile +0 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 33e0405a3677b6e1990ebd590d701b3815c89cbb5a024649b3ac1edaa437b1f9
|
|
4
|
+
data.tar.gz: 7894fbc727c4d526d801b5c7c053345060982389b3c217086de49d739a7f39c7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d87670a9c0c8d0d85e2373f65598784b5bfe0342992e63cdd2d6ca244cee1fe3436af7fa29f9fef42344c9c94e2d522a2354f3e87770d17568ea8e7809e02c19
|
|
7
|
+
data.tar.gz: d80fdc383bdffc7fcd5d6b2219768ae9b5a5fb647b81fd23c3b28f5c311d257909cc6de5278c3eed3d04dacdc8b3b7e4fe0c2c76f6ce6bb8d824ab551d26ab90
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -5,8 +5,8 @@ jobs:
|
|
|
5
5
|
strategy:
|
|
6
6
|
fail-fast: false
|
|
7
7
|
matrix:
|
|
8
|
-
gemfile: [
|
|
9
|
-
ruby: [ 3.
|
|
8
|
+
gemfile: [ rails_8.1 ]
|
|
9
|
+
ruby: [ "3.3", "3.4", "4.0" ]
|
|
10
10
|
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
12
|
env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
|
data/Appraisals
CHANGED
data/CLAUDE.md
CHANGED
|
@@ -20,9 +20,9 @@ Note: RSpec is configured to run only tests marked with `focus: true`. When no f
|
|
|
20
20
|
- `bin/console` - Interactive console for experimentation
|
|
21
21
|
|
|
22
22
|
### Multi-Version Testing
|
|
23
|
-
Tests must pass against Rails
|
|
23
|
+
Tests must pass against Rails 8.1 on Ruby 3.3, 3.4, and 4.0:
|
|
24
24
|
- `bundle exec appraisal install` - Install gems for all Rails versions
|
|
25
|
-
- `bundle exec appraisal rails-
|
|
25
|
+
- `bundle exec appraisal rails-8.1 rspec` - Test against specific Rails version
|
|
26
26
|
- `bundle exec appraisal rspec` - Test against all Rails versions
|
|
27
27
|
|
|
28
28
|
### Gem Management
|
data/chop.gemspec
CHANGED
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
|
23
23
|
spec.add_dependency "cucumber"
|
|
24
24
|
spec.add_dependency "capybara"
|
|
25
25
|
|
|
26
|
-
spec.add_development_dependency "sqlite3", "~>
|
|
26
|
+
spec.add_development_dependency "sqlite3", "~> 2.9", ">= 2.9.6"
|
|
27
27
|
spec.add_development_dependency "appraisal"
|
|
28
28
|
spec.add_development_dependency "rake"
|
|
29
29
|
spec.add_development_dependency "rspec"
|
data/lib/chop/form.rb
CHANGED
|
@@ -62,7 +62,7 @@ module Chop
|
|
|
62
62
|
@locator = locator.to_s
|
|
63
63
|
|
|
64
64
|
@session.document.synchronize do
|
|
65
|
-
@all_fields =
|
|
65
|
+
@all_fields = candidate_fields
|
|
66
66
|
|
|
67
67
|
find_by_direct_attributes ||
|
|
68
68
|
find_by_aria_label ||
|
|
@@ -74,6 +74,33 @@ module Chop
|
|
|
74
74
|
|
|
75
75
|
private
|
|
76
76
|
|
|
77
|
+
def candidate_fields
|
|
78
|
+
narrowed = @session.driver.wait? ? narrowed_fields : []
|
|
79
|
+
narrowed.any? ? narrowed : @session.all(@css_selector, wait: false)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Must stay a superset of what the find_by_* methods match: they decide, this only spares them a round trip per field.
|
|
83
|
+
def narrowed_fields
|
|
84
|
+
scope = @session.current_scope
|
|
85
|
+
root = scope if scope.is_a?(Capybara::Node::Element)
|
|
86
|
+
|
|
87
|
+
fields = @session.evaluate_script(<<~'JS', @css_selector, @locator, root)
|
|
88
|
+
((css, locator, root) => {
|
|
89
|
+
const scope = root || document
|
|
90
|
+
const squash = (text) => String(text).replace(/[\s\u0085\u180e\u200b\u200e\u200f]/g, "")
|
|
91
|
+
const target = squash(locator)
|
|
92
|
+
const labels = [...scope.querySelectorAll("label")].filter((label) => squash(label.textContent).includes(target))
|
|
93
|
+
const labelledIds = new Set(labels.map((label) => label.getAttribute("for")))
|
|
94
|
+
return [...scope.querySelectorAll(css)].filter((field) =>
|
|
95
|
+
["id", "name", "placeholder", "aria-label"].some((name) => field[name] === locator || field.getAttribute(name) === locator)
|
|
96
|
+
|| labelledIds.has(field.id) || labelledIds.has(field.getAttribute("id"))
|
|
97
|
+
|| labels.includes(field.closest("label")))
|
|
98
|
+
})(arguments[0], arguments[1], arguments[2])
|
|
99
|
+
JS
|
|
100
|
+
|
|
101
|
+
@session.config.ignore_hidden_elements ? fields.select(&:visible?) : fields
|
|
102
|
+
end
|
|
103
|
+
|
|
77
104
|
def find_by_direct_attributes
|
|
78
105
|
@all_fields.find do |field|
|
|
79
106
|
field[:id] == @locator ||
|
data/lib/chop/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chop
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.38.
|
|
4
|
+
version: 0.38.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Micah Geisel
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-11-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -58,14 +58,20 @@ dependencies:
|
|
|
58
58
|
requirements:
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
61
|
+
version: '2.9'
|
|
62
|
+
- - ">="
|
|
63
|
+
- !ruby/object:Gem::Version
|
|
64
|
+
version: 2.9.6
|
|
62
65
|
type: :development
|
|
63
66
|
prerelease: false
|
|
64
67
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
68
|
requirements:
|
|
66
69
|
- - "~>"
|
|
67
70
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
71
|
+
version: '2.9'
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: 2.9.6
|
|
69
75
|
- !ruby/object:Gem::Dependency
|
|
70
76
|
name: appraisal
|
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -156,9 +162,7 @@ files:
|
|
|
156
162
|
- bin/setup
|
|
157
163
|
- chop.gemspec
|
|
158
164
|
- gemfiles/.bundle/config
|
|
159
|
-
- gemfiles/
|
|
160
|
-
- gemfiles/rails_7.1.gemfile
|
|
161
|
-
- gemfiles/rails_7.2.gemfile
|
|
165
|
+
- gemfiles/rails_8.1.gemfile
|
|
162
166
|
- lib/chop.rb
|
|
163
167
|
- lib/chop/config.rb
|
|
164
168
|
- lib/chop/create.rb
|
data/gemfiles/rails_7.1.gemfile
DELETED