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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd1b3c30a7783aa60c7110571a7e7a923cd611f954e7f4f99bb24957c685fb36
4
- data.tar.gz: 13d01c3c911a879fb0e4e665df653f6bd2e11892cfee27e79ece48afffeb9736
3
+ metadata.gz: 33e0405a3677b6e1990ebd590d701b3815c89cbb5a024649b3ac1edaa437b1f9
4
+ data.tar.gz: 7894fbc727c4d526d801b5c7c053345060982389b3c217086de49d739a7f39c7
5
5
  SHA512:
6
- metadata.gz: c17761d8ae82a8365f784ab32d87273d8e88715f54b5eff65d982d1082f4b6a6c9fc92521fb9d19b1ee36fbf7d1ea0cd6cbaa04d2d700351793a51a96862142b
7
- data.tar.gz: 7ac7934e482106c3c7ce468e517d4697590a8d994baa0a6e61c73c7056bae69c2627fd19495432737eea6076652756ec847c9ebb5f5fbe16851c5083562f1481
6
+ metadata.gz: d87670a9c0c8d0d85e2373f65598784b5bfe0342992e63cdd2d6ca244cee1fe3436af7fa29f9fef42344c9c94e2d522a2354f3e87770d17568ea8e7809e02c19
7
+ data.tar.gz: d80fdc383bdffc7fcd5d6b2219768ae9b5a5fb647b81fd23c3b28f5c311d257909cc6de5278c3eed3d04dacdc8b3b7e4fe0c2c76f6ce6bb8d824ab551d26ab90
@@ -5,8 +5,8 @@ jobs:
5
5
  strategy:
6
6
  fail-fast: false
7
7
  matrix:
8
- gemfile: [ rails_7.0, rails_7.1, rails_7.2 ]
9
- ruby: [ 3.1, 3.2, 3.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
@@ -1,12 +1,4 @@
1
- appraise "rails-7.0" do
2
- gem "rails", "~>7.0.0"
3
- end
4
-
5
- appraise "rails-7.1" do
6
- gem "rails", "~>7.1.0"
7
- end
8
-
9
- appraise "rails-7.2" do
10
- gem "rails", "~>7.2.0"
1
+ appraise "rails-8.1" do
2
+ gem "rails", "~>8.1.0"
11
3
  end
12
4
 
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 7.0, 7.1, and 7.2 on Ruby 3.1, 3.2, and 3.3:
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-7.0 rspec` - Test against specific Rails version
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", "~> 1.4"
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"
@@ -5,6 +5,6 @@ source "https://rubygems.org"
5
5
  gem "byebug"
6
6
  gem "puma", "~>5.0"
7
7
  gem "rack", "~>2.0"
8
- gem "rails", "~>7.0.0"
8
+ gem "rails", "~>8.1.0"
9
9
 
10
10
  gemspec path: "../"
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 = @session.all(@css_selector, wait: false)
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
@@ -1,3 +1,3 @@
1
1
  module Chop
2
- VERSION = "0.38.8"
2
+ VERSION = "0.38.9"
3
3
  end
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.8
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-08-13 00:00:00.000000000 Z
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: '1.4'
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: '1.4'
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/rails_7.0.gemfile
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
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "byebug"
6
- gem "puma", "~>5.0"
7
- gem "rack", "~>2.0"
8
- gem "rails", "~>7.1.0"
9
-
10
- gemspec path: "../"
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "byebug"
6
- gem "puma", "~>5.0"
7
- gem "rack", "~>2.0"
8
- gem "rails", "~>7.2.0"
9
-
10
- gemspec path: "../"