site_prism 5.2 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 649181c5bfb2e9481f22a4df67e59e6ee9879fce75433b279de0f230fcc58fc0
4
- data.tar.gz: 5492e1875a4369dc72d6f8101eb77abc74a1ee299f18949cc2443de58b837839
3
+ metadata.gz: 0b74cd59603d8fff11657b6d51ccfe37bddf78004ab4b55bb692f11a54754fc4
4
+ data.tar.gz: 618953ce4d7c07d4cac6ed0ed6dbc54b4e1dbd835cf28e39b6488dfb7c8d8698
5
5
  SHA512:
6
- metadata.gz: 682014ffab6661db3b30f7cdee3f6b013d1d1782675e518810dbdfdcadd886381162de313379d8cd63102a68b93eca1617d16d1c87f2524ea1eecd4ec62bbcf5
7
- data.tar.gz: 58865c5e2a82b41df83dabfd90137fb5a66f4f6923444c9969af26856c76d2c83155e2907f18a69663af18cb828153f6a1a6daac2b89a1498e20ce09c2bc0d14
6
+ metadata.gz: 8a7bd17d94fd99d4772e94df111312047fc644a21f80a6d8343a8167a4e84529692e8a0e6048232f54320961fa451ae670e746eca0df5854cb6bf7139e0fa94b
7
+ data.tar.gz: 53c0d351c47adefab78baf703f5e571dbc03914cc69c6906e52dd8bf7761fc246dbd0693f6b77e710a2c058e6c244813868190644154d0b8174238eaf9aaa38b
data/README.md CHANGED
@@ -16,7 +16,7 @@ Make sure to add your project/company to https://github.com/site-prism/site_pris
16
16
 
17
17
  Support us with a monthly donation and help us continue our activities by supporting us as a [backer](https://opencollective.com/site-prism#backer)
18
18
 
19
- Become a sponsor and get your logo on our README on Github with a link to your site. [How to Sponsor SitePrism?](https://opencollective.com/site-prism#sponsor)
19
+ Become a sponsor and get your logo on our README on GitHub with a link to your site: [How to Sponsor SitePrism?](https://opencollective.com/site-prism#sponsor)
20
20
 
21
21
  Free Open Source software can only be maintained with the support of you. If you and/or your company find
22
22
  value in SitePrism and would like to contribute financially to its ongoing maintenance and development,
@@ -30,11 +30,12 @@ We have a brief set of contribution documents [HERE](https://github.com/site-pri
30
30
 
31
31
  ## Supported Rubies / Browsers
32
32
 
33
- SitePrism is built and tested to work on Ruby 2.7 - 3.2.
34
- If you are using SitePrism with Ruby 2.7 it is highly advisable to upgrade to a more modern
35
- Ruby (v3+), if for any other reason, to get a performance improvement!
33
+ SitePrism is built and tested to work on Ruby 3.1 - 4.0
36
34
 
37
- SitePrism should run on all major browsers. The gem's integration tests are run on Chrome and Firefox.
35
+ If you are using SitePrism with Ruby 3.1 it is highly advisable to upgrade to a more modern
36
+ Ruby (v3.3+), if for any other reason, to get a performance improvement!
37
+
38
+ SitePrism should run on all major browsers. The gem's integration tests are run on Chrome and Firefox
38
39
 
39
40
  If you find you cannot integrate nicely with SitePrism, please open an
40
41
  [issue request](https://github.com/site-prism/site_prism/issues/new)
@@ -86,7 +86,7 @@ module SitePrism
86
86
  Addressable::URI.parse(url)
87
87
  rescue Addressable::URI::InvalidURIError
88
88
  SitePrism.logger.fatal("Ensure you don't use templated port numbers.")
89
- raise SitePrism::InvalidUrlMatcherError
89
+ raise SitePrism::Error::InvalidUrlMatcherError
90
90
  end
91
91
  end
92
92
 
@@ -15,7 +15,7 @@ module SitePrism
15
15
  warn("#{old} is being deprecated and should no longer be used.")
16
16
  end
17
17
 
18
- warn("#{old} will be removed in SitePrism v6. You have been warned!")
18
+ warn("#{old} will be removed in SitePrism v7. You have been warned!")
19
19
  end
20
20
 
21
21
  private
@@ -33,7 +33,7 @@ module SitePrism
33
33
  end
34
34
 
35
35
  def invalid_element_name
36
- raise InvalidDSLNameError, dsl_name_error
36
+ raise SitePrism::Error::InvalidDSLNameError, dsl_name_error
37
37
  end
38
38
 
39
39
  def invalid_element_name?(name)
@@ -45,7 +45,7 @@ module SitePrism
45
45
  end
46
46
 
47
47
  def blank_element(name)
48
- raise SitePrism::InvalidElementError, "#{name} has come from an item with no locators."
48
+ raise SitePrism::Error::InvalidElementError, "#{name} has come from an item with no locators."
49
49
  end
50
50
 
51
51
  def add_helper_methods(name, _type, *find_args)
@@ -83,7 +83,7 @@ module SitePrism
83
83
  args = merge_args(find_args, runtime_args, visible: true)
84
84
  return true if element_exists?(*args)
85
85
 
86
- raise SitePrism::ElementVisibilityTimeoutError
86
+ raise SitePrism::Error::ElementVisibilityTimeoutError
87
87
  end
88
88
  end
89
89
  end
@@ -95,7 +95,7 @@ module SitePrism
95
95
  args = merge_args(find_args, runtime_args, visible: true)
96
96
  return true if element_does_not_exist?(*args)
97
97
 
98
- raise SitePrism::ElementInvisibilityTimeoutError
98
+ raise SitePrism::Error::ElementInvisibilityTimeoutError
99
99
  end
100
100
  end
101
101
  end
@@ -106,13 +106,13 @@ module SitePrism
106
106
  yield
107
107
  end
108
108
 
109
- def extract_section_options(args, &block)
109
+ def extract_section_options(args, &)
110
110
  if args.first.is_a?(Class)
111
111
  klass = args.shift
112
112
  section_class = klass if klass <= SitePrism::Section
113
113
  end
114
114
 
115
- section_class = deduce_section_class(section_class, &block)
115
+ section_class = deduce_section_class(section_class, &)
116
116
  arguments = deduce_search_arguments(section_class, args)
117
117
  [section_class, arguments]
118
118
  end
@@ -137,7 +137,8 @@ module SitePrism
137
137
 
138
138
  def invalidate_search_arguments!
139
139
  SitePrism.logger.error('Could not deduce search_arguments')
140
- raise(ArgumentError, 'search arguments are needed in `section` definition or alternatively use `set_default_search_arguments`')
140
+
141
+ raise ArgumentError, 'search arguments are needed in `section` definition or alternatively use `set_default_search_arguments`'
141
142
  end
142
143
  end
143
144
  end
@@ -14,7 +14,6 @@ module SitePrism
14
14
  def _find(*find_args)
15
15
  kwargs = find_args.pop
16
16
  shadow_root = kwargs.delete(:shadow_root) { false }
17
- check_capybara_version_if_creating_shadow_root if shadow_root
18
17
  to_capybara_node.find(*find_args, **kwargs).tap do |element|
19
18
  break element.shadow_root if shadow_root
20
19
  end
@@ -23,7 +22,6 @@ module SitePrism
23
22
  def _all(*find_args)
24
23
  kwargs = find_args.pop
25
24
  shadow_root = kwargs.delete(:shadow_root) { false }
26
- check_capybara_version_if_creating_shadow_root if shadow_root
27
25
  to_capybara_node.all(*find_args, **kwargs).tap do |element|
28
26
  break element.map(&:shadow_root) if shadow_root
29
27
  end
@@ -73,13 +71,6 @@ module SitePrism
73
71
  options.merge!(runtime_args.pop) if runtime_args.last.is_a? Hash
74
72
  options[:wait] = Capybara.default_max_wait_time unless options.key?(:wait)
75
73
  end
76
-
77
- def check_capybara_version_if_creating_shadow_root
78
- minimum_version = '3.37.0'
79
- raise SitePrism::UnsupportedGemVersionError unless Capybara::VERSION >= minimum_version
80
-
81
- SitePrism.logger.error("Shadow root support requires Capybara version >= #{minimum_version}. You are using #{Capybara::VERSION}.")
82
- end
83
74
  end
84
75
  end
85
76
  end
@@ -67,8 +67,8 @@ module SitePrism
67
67
  # Check the sections presence or non-presence -> @return [Boolean]
68
68
  # Wait for the sections to be present or not -> @return [TrueClass, SitePrism::Error]
69
69
  # Validate certain properties about the section
70
- def sections(name, *args, &block)
71
- section_class, find_args = extract_section_options(args, &block)
70
+ def sections(name, *args, &)
71
+ section_class, find_args = extract_section_options(args, &)
72
72
  build(:sections, name, *find_args) do
73
73
  define_method(name) do |*runtime_args, &runtime_block|
74
74
  raise_if_runtime_block_supplied(self, name, runtime_block, :sections)
@@ -85,7 +85,7 @@ module SitePrism
85
85
  scope_find_args = deduce_iframe_scope_find_args(args)
86
86
  build(:iframe, name, *element_find_args) do
87
87
  define_method(name) do |&block|
88
- raise MissingBlockError unless block
88
+ raise SitePrism::Error::MissingBlockError unless block
89
89
 
90
90
  within_frame(*scope_find_args) { block.call(klass.new) }
91
91
  end
@@ -99,7 +99,7 @@ module SitePrism
99
99
 
100
100
  SitePrism.logger.debug("Type passed in: #{type}")
101
101
  SitePrism.logger.error("#{name} has been defined as a '#{type}' item in #{parent_object}. It does not accept build-time blocks.")
102
- raise SitePrism::UnsupportedBlockError
102
+ raise SitePrism::Error::UnsupportedBlockError
103
103
  end
104
104
 
105
105
  def deduce_iframe_element_find_args(args)
@@ -29,7 +29,7 @@ module SitePrism
29
29
 
30
30
  SitePrism.logger.debug("Type passed in: #{type}")
31
31
  SitePrism.logger.error("#{object.class}##{name} cannot accept runtime blocks")
32
- raise SitePrism::UnsupportedBlockError
32
+ raise SitePrism::Error::UnsupportedBlockError
33
33
  end
34
34
  end
35
35
  end
@@ -1,56 +1,49 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SitePrism
4
- # Generic SitePrism family of errors which specific errors are children of
5
- class SitePrismError < StandardError; end
4
+ module Error
5
+ # Generic SitePrism family of errors which specific errors are children of
6
+ class SitePrismError < StandardError; end
6
7
 
7
- # Generic PageLoad family of errors inherit from this error
8
- class PageLoadError < SitePrismError; end
8
+ # A page calls #load with no URL set
9
+ class NoUrlForPageError < SitePrismError; end
9
10
 
10
- # A page calls #load with no URL set
11
- class NoUrlForPageError < PageLoadError; end
11
+ # A page calls #displayed? with no URL matcher set
12
+ class NoUrlMatcherForPageError < SitePrismError; end
12
13
 
13
- # A page calls #displayed? with no URL matcher set
14
- class NoUrlMatcherForPageError < PageLoadError; end
14
+ # The URL matcher was not recognised as a Regex or String and as such
15
+ # it couldn't be parsed by Addressable. It also could be caused by
16
+ # the usage of templated port numbers - which aren't supported
17
+ class InvalidUrlMatcherError < SitePrismError; end
15
18
 
16
- # The URL matcher was not recognised as a Regex or String and as such
17
- # it couldn't be parsed by Addressable. It also could be caused by
18
- # the usage of templated port numbers - which aren't supported
19
- class InvalidUrlMatcherError < PageLoadError; end
19
+ # A SitePrism defined DSL item was defined without a selector
20
+ class InvalidElementError < SitePrismError; end
20
21
 
21
- # A SitePrism defined DSL item was defined without a selector
22
- class InvalidElementError < SitePrismError; end
22
+ # The condition that was being evaluated inside the block did not evaluate
23
+ # to true within the time limit
24
+ class TimeoutError < SitePrismError; end
23
25
 
24
- # The condition that was being evaluated inside the block did not evaluate
25
- # to true within the time limit
26
- class TimeoutError < SitePrismError; end
26
+ # The wait_until_*_visible meta-programmed method didn't evaluate to true
27
+ # within the prescribed time limit
28
+ class ElementVisibilityTimeoutError < TimeoutError; end
27
29
 
28
- # The wait_until_*_visible meta-programmed method didn't evaluate to true
29
- # within the prescribed time limit
30
- class ElementVisibilityTimeoutError < TimeoutError; end
30
+ # The wait_until_*_invisible meta-programmed method didn't evaluate to true
31
+ # within the prescribed time limit
32
+ class ElementInvisibilityTimeoutError < TimeoutError; end
31
33
 
32
- # The wait_until_*_invisible meta-programmed method didn't evaluate to true
33
- # within the prescribed time limit
34
- class ElementInvisibilityTimeoutError < TimeoutError; end
34
+ # A Block was passed to the method, which it cannot interpret
35
+ class UnsupportedBlockError < SitePrismError; end
35
36
 
36
- # Generic Block validation family of errors inherit from this error
37
- class BlockError < SitePrismError; end
37
+ # A Block was required, but not supplied
38
+ class MissingBlockError < SitePrismError; end
38
39
 
39
- # A Block was passed to the method, which it cannot interpret
40
- class UnsupportedBlockError < BlockError; end
40
+ # A page was loaded then failed one of the validations defined by the user
41
+ class FailedLoadValidationError < SitePrismError; end
41
42
 
42
- # A Block was required, but not supplied
43
- class MissingBlockError < BlockError; end
43
+ # DSL items are not permitted to be named in certain ways
44
+ class InvalidDSLNameError < SitePrismError; end
44
45
 
45
- # A page was loaded then failed one of the validations defined by the user
46
- class FailedLoadValidationError < PageLoadError; end
47
-
48
- # Generic Attribute validation family of errors inherit from this error
49
- class AttributeValidationError < SitePrismError; end
50
-
51
- # DSL items are not permitted to be named in certain ways
52
- class InvalidDSLNameError < AttributeValidationError; end
53
-
54
- # The version of the target gem is unsupported, so using that feature is not possible
55
- class UnsupportedGemVersionError < SitePrismError; end
46
+ # The version of the target gem is unsupported, so using that feature is not possible
47
+ class UnsupportedGemVersionError < SitePrismError; end
48
+ end
56
49
  end
@@ -20,6 +20,9 @@ module SitePrism
20
20
  # Executes the given block after the page is loaded.
21
21
  #
22
22
  # The loadable object instance is yielded into the block.
23
+ #
24
+ # NB: This will only trigger load validations if the page is already **not** loaded. If you want to verbosely trigger
25
+ # the load validations irrespective, use `#run_load_validations`; which will clear any previous cache and then re-run the validations
23
26
  def when_loaded
24
27
  # Get original loaded value, in case we are nested
25
28
  # inside another when_loaded block.
@@ -30,7 +33,7 @@ module SitePrism
30
33
 
31
34
  # If the page hasn't loaded. Then crash and return the error message.
32
35
  # If one isn't defined, just return the Error code.
33
- raise SitePrism::FailedLoadValidationError, load_error unless loaded
36
+ raise SitePrism::Error::FailedLoadValidationError, load_error unless loaded
34
37
 
35
38
  # Return the yield value of the block if one was supplied.
36
39
  yield self if block_given?
@@ -53,6 +56,18 @@ module SitePrism
53
56
  load_validations_pass?
54
57
  end
55
58
 
59
+ # Executes the `when_loaded` check to determine if the page is loaded, but also clears any previous cache
60
+ # of the loaded state and load error
61
+ #
62
+ # This is useful if you want to re-run the load validations irrespective of whether the page was previously loaded or not
63
+ #
64
+ # The loadable object instance is yielded into the block.
65
+ def run_load_validations
66
+ self.loaded = false
67
+ self.load_error = nil
68
+ when_loaded
69
+ end
70
+
56
71
  private
57
72
 
58
73
  def load_validations_pass?
@@ -8,8 +8,7 @@ module SitePrism
8
8
  # Instances of this class represent a full web page that can either be dynamically navigated to
9
9
  # through clicking buttons or filling in fields, or verbosely loaded by using the `#load` method
10
10
  #
11
- # All method calls made whilst on a page are scoped using `#to_capybara_node` which defaults to the
12
- # current Capybara session or the `@page` that has been loaded in-line
11
+ # All method calls made whilst on a page are scoped using `#to_capybara_node` which defaults to the current Capybara session
13
12
  class Page
14
13
  include Capybara::DSL
15
14
  include ElementChecker
@@ -44,29 +43,24 @@ module SitePrism
44
43
 
45
44
  # This scopes our calls inside Page correctly to the `Capybara::Session`
46
45
  #
47
- # @return [Capybara::Node::Simple || Capybara::Session]
46
+ # @return Capybara::Session
48
47
  def to_capybara_node
49
- (defined?(@page) && @page) || Capybara.current_session
48
+ Capybara.current_session
50
49
  end
51
50
 
52
51
  # Loads the page.
53
- # @param expansion_or_html
54
- # @param block [&block] An optional block to run once the page is loaded.
55
- # The page will yield the block if defined.
52
+ # @param params - An optional set of parameters
53
+ # @param & - An optional block to run once the page is loaded
54
+ # The page will yield the block if defined
56
55
  #
57
- # Executes the block, if given.
58
- # Runs load validations on the page, unless input is a string
56
+ # Executes the block, if given
59
57
  #
60
- # When calling #load, all the validations that are set will be ran in order
61
- def load(expansion_or_html = {}, &block)
58
+ # When calling #load, all the validations that are set will be run in order
59
+ def load(params = {}, &)
62
60
  self.loaded = false
63
61
  SitePrism.logger.debug("Reset loaded state on #{self.class}.")
64
62
 
65
- return_yield = if expansion_or_html.is_a?(String)
66
- load_html_string(expansion_or_html, &block)
67
- else
68
- load_html_website(expansion_or_html, &block)
69
- end
63
+ return_yield = load_html_website(params, &)
70
64
 
71
65
  # Ensure that we represent that the page we loaded is now indeed loaded!
72
66
  # This ensures that future calls to #loaded? do not perform the
@@ -84,7 +78,7 @@ module SitePrism
84
78
  # @return [Boolean]
85
79
  def displayed?(*args)
86
80
  wait_until_displayed(*args)
87
- rescue SitePrism::TimeoutError
81
+ rescue SitePrism::Error::TimeoutError
88
82
  false
89
83
  end
90
84
 
@@ -94,7 +88,7 @@ module SitePrism
94
88
  #
95
89
  # @return [Boolean]
96
90
  def wait_until_displayed(*args)
97
- raise SitePrism::NoUrlMatcherForPageError unless url_matcher
91
+ raise SitePrism::Error::NoUrlMatcherForPageError unless url_matcher
98
92
 
99
93
  expected_mappings = args.last.is_a?(::Hash) ? args.pop : {}
100
94
  seconds = args&.first || Capybara.default_max_wait_time
@@ -153,7 +147,7 @@ module SitePrism
153
147
  elsif url_matcher.respond_to?(:to_str)
154
148
  url_matches_by_template?(expected_mappings)
155
149
  else
156
- raise SitePrism::InvalidUrlMatcherError
150
+ raise SitePrism::Error::InvalidUrlMatcherError
157
151
  end
158
152
  end
159
153
 
@@ -169,16 +163,10 @@ module SitePrism
169
163
  @matcher_template ||= AddressableUrlMatcher.new(url_matcher)
170
164
  end
171
165
 
172
- def load_html_string(string)
173
- SitePrism::Deprecator.deprecate('Using an input fragment (Loading partials using html strings).')
174
- @page = Capybara.string(string)
175
- yield to_capybara_node if block_given?
176
- end
177
-
178
- def load_html_website(html, &block)
179
- with_validations = html.delete(:with_validations) { true }
180
- expanded_url = url(html)
181
- raise SitePrism::NoUrlForPageError unless expanded_url
166
+ def load_html_website(params, &block)
167
+ with_validations = params.delete(:with_validations) { true }
168
+ expanded_url = url(params)
169
+ raise SitePrism::Error::NoUrlForPageError unless expanded_url
182
170
 
183
171
  visit expanded_url
184
172
  if with_validations
@@ -5,7 +5,7 @@ module SitePrism
5
5
  #
6
6
  # SitePrism Sections are the mid level construct of the POM framework
7
7
  #
8
- # Instances of this class represent a a part of a web page that can either sit inside a SitePrism::Page
8
+ # Instances of this class represent a part of a web page that can either sit inside a SitePrism::Page
9
9
  # or sit inside another N sections, which then eventually will sit inside a page
10
10
  #
11
11
  # All method calls made whilst on a page are scoped using `#to_capybara_node` which will be represented by
@@ -7,8 +7,8 @@ module SitePrism
7
7
  class Timer
8
8
  attr_reader :wait_time
9
9
 
10
- def self.run(wait_time, &block)
11
- new(wait_time).run(&block)
10
+ def self.run(wait_time, &)
11
+ new(wait_time).run(&)
12
12
  end
13
13
 
14
14
  def initialize(wait_time)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SitePrism
4
- VERSION = '5.2'
4
+ VERSION = '6.0'
5
5
  end
@@ -15,7 +15,7 @@ module SitePrism
15
15
 
16
16
  sleep(sleep_duration)
17
17
  end
18
- raise SitePrism::TimeoutError, "Timed out after #{wait_time}s."
18
+ raise SitePrism::Error::TimeoutError, "Timed out after #{wait_time}s."
19
19
  end
20
20
  end
21
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: site_prism
3
3
  version: !ruby/object:Gem::Version
4
- version: '5.2'
4
+ version: '6.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Hill
@@ -29,20 +29,48 @@ dependencies:
29
29
  - - ">="
30
30
  - !ruby/object:Gem::Version
31
31
  version: 2.8.4
32
+ - !ruby/object:Gem::Dependency
33
+ name: base64
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: 0.3.0
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - "~>"
44
+ - !ruby/object:Gem::Version
45
+ version: 0.3.0
32
46
  - !ruby/object:Gem::Dependency
33
47
  name: capybara
34
48
  requirement: !ruby/object:Gem::Requirement
35
49
  requirements:
36
50
  - - "~>"
37
51
  - !ruby/object:Gem::Version
38
- version: '3.34'
52
+ version: '3.37'
39
53
  type: :runtime
40
54
  prerelease: false
41
55
  version_requirements: !ruby/object:Gem::Requirement
42
56
  requirements:
43
57
  - - "~>"
44
58
  - !ruby/object:Gem::Version
45
- version: '3.34'
59
+ version: '3.37'
60
+ - !ruby/object:Gem::Dependency
61
+ name: logger
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '1.7'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '1.7'
46
74
  - !ruby/object:Gem::Dependency
47
75
  name: site_prism-all_there
48
76
  requirement: !ruby/object:Gem::Requirement
@@ -67,16 +95,22 @@ dependencies:
67
95
  name: automation_helpers
68
96
  requirement: !ruby/object:Gem::Requirement
69
97
  requirements:
70
- - - "~>"
98
+ - - ">"
99
+ - !ruby/object:Gem::Version
100
+ version: '5'
101
+ - - "<"
71
102
  - !ruby/object:Gem::Version
72
- version: '5.0'
103
+ version: '7'
73
104
  type: :development
74
105
  prerelease: false
75
106
  version_requirements: !ruby/object:Gem::Requirement
76
107
  requirements:
77
- - - "~>"
108
+ - - ">"
78
109
  - !ruby/object:Gem::Version
79
- version: '5.0'
110
+ version: '5'
111
+ - - "<"
112
+ - !ruby/object:Gem::Version
113
+ version: '7'
80
114
  - !ruby/object:Gem::Dependency
81
115
  name: cucumber
82
116
  requirement: !ruby/object:Gem::Requirement
@@ -86,7 +120,7 @@ dependencies:
86
120
  version: '7'
87
121
  - - "<"
88
122
  - !ruby/object:Gem::Version
89
- version: '10'
123
+ version: '12'
90
124
  type: :development
91
125
  prerelease: false
92
126
  version_requirements: !ruby/object:Gem::Requirement
@@ -96,7 +130,7 @@ dependencies:
96
130
  version: '7'
97
131
  - - "<"
98
132
  - !ruby/object:Gem::Version
99
- version: '10'
133
+ version: '12'
100
134
  - !ruby/object:Gem::Dependency
101
135
  name: rspec
102
136
  requirement: !ruby/object:Gem::Requirement
@@ -117,56 +151,56 @@ dependencies:
117
151
  requirements:
118
152
  - - "~>"
119
153
  - !ruby/object:Gem::Version
120
- version: 1.69.0
154
+ version: 1.85.1
121
155
  type: :development
122
156
  prerelease: false
123
157
  version_requirements: !ruby/object:Gem::Requirement
124
158
  requirements:
125
159
  - - "~>"
126
160
  - !ruby/object:Gem::Version
127
- version: 1.69.0
161
+ version: 1.85.1
128
162
  - !ruby/object:Gem::Dependency
129
163
  name: rubocop-performance
130
164
  requirement: !ruby/object:Gem::Requirement
131
165
  requirements:
132
166
  - - "~>"
133
167
  - !ruby/object:Gem::Version
134
- version: 1.23.0
168
+ version: 1.26.1
135
169
  type: :development
136
170
  prerelease: false
137
171
  version_requirements: !ruby/object:Gem::Requirement
138
172
  requirements:
139
173
  - - "~>"
140
174
  - !ruby/object:Gem::Version
141
- version: 1.23.0
175
+ version: 1.26.1
142
176
  - !ruby/object:Gem::Dependency
143
177
  name: rubocop-rspec
144
178
  requirement: !ruby/object:Gem::Requirement
145
179
  requirements:
146
180
  - - "~>"
147
181
  - !ruby/object:Gem::Version
148
- version: 3.3.0
182
+ version: 3.8.0
149
183
  type: :development
150
184
  prerelease: false
151
185
  version_requirements: !ruby/object:Gem::Requirement
152
186
  requirements:
153
187
  - - "~>"
154
188
  - !ruby/object:Gem::Version
155
- version: 3.3.0
189
+ version: 3.8.0
156
190
  - !ruby/object:Gem::Dependency
157
191
  name: selenium-webdriver
158
192
  requirement: !ruby/object:Gem::Requirement
159
193
  requirements:
160
194
  - - "~>"
161
195
  - !ruby/object:Gem::Version
162
- version: '4.7'
196
+ version: '4.18'
163
197
  type: :development
164
198
  prerelease: false
165
199
  version_requirements: !ruby/object:Gem::Requirement
166
200
  requirements:
167
201
  - - "~>"
168
202
  - !ruby/object:Gem::Version
169
- version: '4.7'
203
+ version: '4.18'
170
204
  - !ruby/object:Gem::Dependency
171
205
  name: simplecov
172
206
  requirement: !ruby/object:Gem::Requirement
@@ -181,20 +215,6 @@ dependencies:
181
215
  - - "~>"
182
216
  - !ruby/object:Gem::Version
183
217
  version: '0.21'
184
- - !ruby/object:Gem::Dependency
185
- name: webdrivers
186
- requirement: !ruby/object:Gem::Requirement
187
- requirements:
188
- - - "~>"
189
- - !ruby/object:Gem::Version
190
- version: '5.3'
191
- type: :development
192
- prerelease: false
193
- version_requirements: !ruby/object:Gem::Requirement
194
- requirements:
195
- - - "~>"
196
- - !ruby/object:Gem::Version
197
- version: '5.3'
198
218
  description: SitePrism gives you a simple, clean and semantic DSL for describing your
199
219
  site. SitePrism implements the Page Object Model pattern on top of Capybara.
200
220
  email:
@@ -237,14 +257,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
237
257
  requirements:
238
258
  - - ">="
239
259
  - !ruby/object:Gem::Version
240
- version: '2.7'
260
+ version: '3.1'
241
261
  required_rubygems_version: !ruby/object:Gem::Requirement
242
262
  requirements:
243
263
  - - ">="
244
264
  - !ruby/object:Gem::Version
245
- version: 3.2.3
265
+ version: 3.2.8
246
266
  requirements: []
247
- rubygems_version: 3.6.9
267
+ rubygems_version: 4.0.6
248
268
  specification_version: 4
249
269
  summary: A Page Object Model DSL for Capybara
250
270
  test_files: []