site_prism 3.4.1 → 3.7.1
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/LICENSE.md +1 -1
- data/README.md +111 -31
- data/lib/site_prism.rb +7 -2
- data/lib/site_prism/addressable_url_matcher.rb +8 -6
- data/lib/site_prism/deprecator.rb +11 -0
- data/lib/site_prism/dsl.rb +93 -43
- data/lib/site_prism/element_checker.rb +12 -4
- data/lib/site_prism/error.rb +0 -8
- data/lib/site_prism/loadable.rb +7 -0
- data/lib/site_prism/page.rb +6 -35
- data/lib/site_prism/recursion_checker.rb +2 -1
- data/lib/site_prism/rspec_matchers.rb +48 -0
- data/lib/site_prism/section.rb +49 -51
- data/lib/site_prism/timer.rb +47 -0
- data/lib/site_prism/version.rb +1 -1
- data/lib/site_prism/waiter.rb +7 -20
- metadata +60 -41
@@ -1,6 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module SitePrism
|
4
|
+
# [SitePrism::ElementChecker]
|
5
|
+
#
|
6
|
+
# This allows users to run `#all_there?` checks on an instance.
|
7
|
+
#
|
8
|
+
# NB: This functionality is being removed in v4 in favour of the all_there gem
|
4
9
|
module ElementChecker
|
5
10
|
# Runnable in the scope of any SitePrism::Page or Section.
|
6
11
|
# Returns +true+ when "every item" that is being checked is
|
@@ -21,10 +26,9 @@ module SitePrism
|
|
21
26
|
# Override: 'one' => Perform one recursive dive into all section/sections
|
22
27
|
# items and call #all_there? on all of those items too.
|
23
28
|
def all_there?(recursion: :none)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
all_there_with_recursion
|
29
|
+
case recursion
|
30
|
+
when :none; then elements_to_check.all? { |name| there?(name) }
|
31
|
+
when :one; then all_there_with_recursion
|
28
32
|
else
|
29
33
|
SitePrism.logger.debug("Input value '#{recursion}'. Valid values are :none or :one.")
|
30
34
|
SitePrism.logger.error('Invalid recursion setting, Will not run #all_there?.')
|
@@ -35,6 +39,10 @@ module SitePrism
|
|
35
39
|
_mapped_items.select { |name| there?(name) }
|
36
40
|
end
|
37
41
|
|
42
|
+
def elements_missing
|
43
|
+
elements_to_check.reject { |name| there?(name) }
|
44
|
+
end
|
45
|
+
|
38
46
|
private
|
39
47
|
|
40
48
|
def all_there_with_recursion
|
data/lib/site_prism/error.rb
CHANGED
@@ -25,14 +25,6 @@ module SitePrism
|
|
25
25
|
# Formerly known as `NoSelectorForElement`
|
26
26
|
class InvalidElementError < SitePrismError; end
|
27
27
|
|
28
|
-
# A tool like Timecop is being used to "freeze time" by overriding Time.now
|
29
|
-
# and similar methods. In this case, our waiter functions won't work, because
|
30
|
-
# Time.now does not change.
|
31
|
-
# If you encounter this issue, check that you are not doing Timecop.freeze without
|
32
|
-
# an accompanying Timecop.return.
|
33
|
-
# Also check out Timecop.safe_mode https://github.com/travisjeffery/timecop#timecopsafe_mode
|
34
|
-
class FrozenInTimeError < SitePrismError; end
|
35
|
-
|
36
28
|
# The condition that was being evaluated inside the block did not evaluate
|
37
29
|
# to true within the time limit
|
38
30
|
# Formerly known as `TimeoutException`
|
data/lib/site_prism/loadable.rb
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module SitePrism
|
4
|
+
# [SitePrism::Loadable]
|
5
|
+
#
|
6
|
+
# SitePrism Loadable's are defined as checks or waiters which "must" pass before
|
7
|
+
# the rest of the loading logic can be performed on a class or section.
|
8
|
+
#
|
9
|
+
# Loadable's are primarily used with the `#load` method which will auto-execute them all
|
10
|
+
# in their defined order. But they can be used dynamically wherever desired.
|
4
11
|
module Loadable
|
5
12
|
module ClassMethods
|
6
13
|
# The list of load_validations.
|
data/lib/site_prism/page.rb
CHANGED
@@ -1,9 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'site_prism/loadable'
|
4
|
-
|
5
3
|
module SitePrism
|
6
|
-
# rubocop:disable Metrics/ClassLength
|
7
4
|
class Page
|
8
5
|
include Capybara::DSL
|
9
6
|
include ElementChecker
|
@@ -27,11 +24,7 @@ module SitePrism
|
|
27
24
|
end
|
28
25
|
|
29
26
|
def page
|
30
|
-
|
31
|
-
@page
|
32
|
-
else
|
33
|
-
Capybara.current_session
|
34
|
-
end
|
27
|
+
(defined?(@page) && @page) || Capybara.current_session
|
35
28
|
end
|
36
29
|
|
37
30
|
# Loads the page.
|
@@ -73,24 +66,19 @@ module SitePrism
|
|
73
66
|
raise SitePrism::NoUrlMatcherForPageError unless url_matcher
|
74
67
|
|
75
68
|
expected_mappings = args.last.is_a?(::Hash) ? args.pop : {}
|
76
|
-
seconds = args&.first ||
|
69
|
+
seconds = args&.first || Capybara.default_max_wait_time
|
77
70
|
Waiter.wait_until_true(seconds) { url_matches?(expected_mappings) }
|
78
71
|
end
|
79
72
|
|
80
|
-
def url_matches(seconds =
|
73
|
+
def url_matches(seconds = Capybara.default_max_wait_time)
|
81
74
|
return unless displayed?(seconds)
|
75
|
+
return regexp_backed_matches if url_matcher.is_a?(Regexp)
|
82
76
|
|
83
|
-
|
84
|
-
regexp_backed_matches
|
85
|
-
else
|
86
|
-
template_backed_matches
|
87
|
-
end
|
77
|
+
template_backed_matches
|
88
78
|
end
|
89
79
|
|
90
80
|
def url(expansion = {})
|
91
|
-
|
92
|
-
|
93
|
-
Addressable::Template.new(self.class.url).expand(expansion).to_s
|
81
|
+
self.class.url && Addressable::Template.new(self.class.url).expand(expansion).to_s
|
94
82
|
end
|
95
83
|
|
96
84
|
def url_matcher
|
@@ -103,22 +91,6 @@ module SitePrism
|
|
103
91
|
|
104
92
|
private
|
105
93
|
|
106
|
-
def _find(*find_args)
|
107
|
-
page.find(*find_args)
|
108
|
-
end
|
109
|
-
|
110
|
-
def _all(*find_args)
|
111
|
-
page.all(*find_args)
|
112
|
-
end
|
113
|
-
|
114
|
-
def element_exists?(*find_args)
|
115
|
-
page.has_selector?(*find_args)
|
116
|
-
end
|
117
|
-
|
118
|
-
def element_does_not_exist?(*find_args)
|
119
|
-
page.has_no_selector?(*find_args)
|
120
|
-
end
|
121
|
-
|
122
94
|
def regexp_backed_matches
|
123
95
|
url_matcher.match(page.current_url)
|
124
96
|
end
|
@@ -167,5 +139,4 @@ module SitePrism
|
|
167
139
|
end
|
168
140
|
end
|
169
141
|
end
|
170
|
-
# rubocop:enable Metrics/ClassLength
|
171
142
|
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
module SitePrism
|
4
4
|
class RecursionChecker
|
5
5
|
attr_reader :instance
|
6
|
+
|
6
7
|
private :instance
|
7
8
|
|
8
9
|
def initialize(instance)
|
@@ -28,7 +29,7 @@ module SitePrism
|
|
28
29
|
expected(mapped_items, :elements),
|
29
30
|
expected(mapped_items, :section),
|
30
31
|
expected(mapped_items, :sections),
|
31
|
-
expected(mapped_items, :iframe)
|
32
|
+
expected(mapped_items, :iframe)
|
32
33
|
]
|
33
34
|
end
|
34
35
|
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SitePrism
|
4
|
+
class RspecMatchers
|
5
|
+
attr_reader :element_name
|
6
|
+
|
7
|
+
def initialize(element_name)
|
8
|
+
@element_name = element_name
|
9
|
+
end
|
10
|
+
|
11
|
+
def _create_rspec_existence_matchers
|
12
|
+
SitePrism.logger.debug('Including all relevant matcher names / warnings in RSpec scope.')
|
13
|
+
create_rspec_existence_matchers(matcher, object_method, negated_object_method, warning)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def create_rspec_existence_matchers(matcher, object_method, negated_object_method, warning)
|
19
|
+
RSpec::Matchers.define(matcher) do |*args|
|
20
|
+
match { |actual| actual.public_send(object_method, *args) }
|
21
|
+
match_when_negated do |actual|
|
22
|
+
return actual.public_send(negated_object_method, *args) if actual.respond_to?(negated_object_method)
|
23
|
+
|
24
|
+
SitePrism.logger.debug(warning)
|
25
|
+
!actual.public_send(object_method, *args)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def matcher
|
31
|
+
"have_#{element_name}"
|
32
|
+
end
|
33
|
+
|
34
|
+
def object_method
|
35
|
+
"has_#{element_name}?"
|
36
|
+
end
|
37
|
+
|
38
|
+
def negated_object_method
|
39
|
+
"has_no_#{element_name}?"
|
40
|
+
end
|
41
|
+
|
42
|
+
def warning
|
43
|
+
"The RSpec matcher '#{matcher}' was added by SitePrism, but the object under test "\
|
44
|
+
"does not respond to '#{negated_object_method}' and is probably not a SitePrism object. "\
|
45
|
+
'Falling back to the default RSpec matcher.'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/site_prism/section.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'site_prism/loadable'
|
4
|
-
|
5
3
|
module SitePrism
|
6
4
|
class Section
|
7
|
-
include Capybara::DSL
|
8
5
|
include ElementChecker
|
9
6
|
include Loadable
|
10
7
|
include DSL
|
@@ -12,44 +9,67 @@ module SitePrism
|
|
12
9
|
|
13
10
|
attr_reader :root_element, :parent
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
class << self
|
13
|
+
def set_default_search_arguments(*args)
|
14
|
+
@default_search_arguments = args
|
15
|
+
end
|
16
|
+
|
17
|
+
def default_search_arguments
|
18
|
+
return @default_search_arguments if @default_search_arguments
|
19
|
+
|
20
|
+
superclass.respond_to?(:default_search_arguments) && superclass.default_search_arguments
|
21
|
+
end
|
18
22
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
private
|
24
|
+
|
25
|
+
def root_element_methods
|
26
|
+
::Capybara::Session::NODE_METHODS + %i[native visible?]
|
27
|
+
end
|
28
|
+
|
29
|
+
def session_methods
|
30
|
+
::Capybara::Session::DSL_METHODS - root_element_methods
|
31
|
+
end
|
26
32
|
end
|
27
33
|
|
28
|
-
def initialize(parent, root_element)
|
34
|
+
def initialize(parent, root_element, &block)
|
29
35
|
@parent = parent
|
30
36
|
@root_element = root_element
|
31
|
-
|
37
|
+
within(&block) if block_given?
|
32
38
|
end
|
33
39
|
|
34
|
-
#
|
35
|
-
#
|
36
|
-
#
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
+
# Send all root_element methods through `#root_element`
|
41
|
+
# NB: This requires a method called `#to_capybara_node` being created and
|
42
|
+
# then set to this value (Capybara agnostic API)
|
43
|
+
root_element_methods.each do |method|
|
44
|
+
def_delegators :root_element, method
|
45
|
+
end
|
46
|
+
|
47
|
+
# Send all methods that previously acted on the `#page` method that existed previously
|
48
|
+
# through to the same location - But directly as `Capybara.current_session`
|
49
|
+
session_methods.each do |method|
|
50
|
+
def_delegators :capybara_session, method
|
51
|
+
end
|
40
52
|
|
41
|
-
|
42
|
-
|
53
|
+
# This scopes our calls inside Section correctly to the `Capybara::Node::Element`
|
54
|
+
def to_capybara_node
|
55
|
+
root_element
|
43
56
|
end
|
44
57
|
|
45
|
-
|
46
|
-
|
58
|
+
# This allows us to return anything thats passed in as a block to the section at
|
59
|
+
# creation time, so that an anonymous section or such-like will have the extra methods
|
60
|
+
def within
|
61
|
+
Capybara.within(root_element) { yield(self) }
|
47
62
|
end
|
48
63
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
64
|
+
# This was the old API-style of delegating through the Capybara.page call and over-loading
|
65
|
+
# the method so we always went through our correct `root_element`
|
66
|
+
def page
|
67
|
+
SitePrism::Deprecator.deprecate('Using page inside section')
|
68
|
+
return root_element if root_element
|
69
|
+
|
70
|
+
SitePrism.logger.warn('Root Element not found; Falling back to Capybara.current_session')
|
71
|
+
capybara_session
|
72
|
+
end
|
53
73
|
|
54
74
|
def capybara_session
|
55
75
|
Capybara.current_session
|
@@ -60,27 +80,5 @@ module SitePrism
|
|
60
80
|
candidate = candidate.parent until candidate.is_a?(SitePrism::Page)
|
61
81
|
candidate
|
62
82
|
end
|
63
|
-
|
64
|
-
def native
|
65
|
-
root_element.native
|
66
|
-
end
|
67
|
-
|
68
|
-
private
|
69
|
-
|
70
|
-
def _find(*find_args)
|
71
|
-
page.find(*find_args)
|
72
|
-
end
|
73
|
-
|
74
|
-
def _all(*find_args)
|
75
|
-
page.all(*find_args)
|
76
|
-
end
|
77
|
-
|
78
|
-
def element_exists?(*find_args)
|
79
|
-
page.has_selector?(*find_args)
|
80
|
-
end
|
81
|
-
|
82
|
-
def element_does_not_exist?(*find_args)
|
83
|
-
page.has_no_selector?(*find_args)
|
84
|
-
end
|
85
83
|
end
|
86
84
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SitePrism
|
4
|
+
class Timer
|
5
|
+
attr_reader :wait_time
|
6
|
+
|
7
|
+
def self.run(wait_time, &block)
|
8
|
+
new(wait_time).run(&block)
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(wait_time)
|
12
|
+
@wait_time = wait_time
|
13
|
+
@done = false
|
14
|
+
end
|
15
|
+
|
16
|
+
def done?
|
17
|
+
@done == true
|
18
|
+
end
|
19
|
+
|
20
|
+
def run
|
21
|
+
start
|
22
|
+
yield self
|
23
|
+
ensure
|
24
|
+
stop
|
25
|
+
end
|
26
|
+
|
27
|
+
def start
|
28
|
+
stop
|
29
|
+
return if wait_time.zero?
|
30
|
+
|
31
|
+
@done = false
|
32
|
+
@thread = Thread.start do
|
33
|
+
sleep wait_time
|
34
|
+
@done = true
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def stop
|
39
|
+
if @thread
|
40
|
+
@thread.kill
|
41
|
+
@thread.join
|
42
|
+
@thread = nil
|
43
|
+
end
|
44
|
+
@done = true
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/site_prism/version.rb
CHANGED
data/lib/site_prism/waiter.rb
CHANGED
@@ -2,33 +2,20 @@
|
|
2
2
|
|
3
3
|
module SitePrism
|
4
4
|
class Waiter
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
def self.sleep_duration
|
6
|
+
0.05
|
7
|
+
end
|
8
8
|
|
9
|
+
def self.wait_until_true(wait_time = Capybara.default_max_wait_time)
|
10
|
+
Timer.run(wait_time) do |timer|
|
9
11
|
loop do
|
10
12
|
return true if yield
|
11
|
-
break if
|
12
|
-
|
13
|
-
sleep(0.05)
|
13
|
+
break if timer.done?
|
14
14
|
|
15
|
-
|
15
|
+
sleep(sleep_duration)
|
16
16
|
end
|
17
|
-
|
18
17
|
raise SitePrism::TimeoutError, "Timed out after #{wait_time}s."
|
19
18
|
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def check_for_time_stopped!(start_time)
|
24
|
-
return unless start_time == Time.now
|
25
|
-
|
26
|
-
raise(
|
27
|
-
SitePrism::FrozenInTimeError,
|
28
|
-
'Time appears to be frozen. For more info, see ' \
|
29
|
-
'https://github.com/site-prism/site_prism/blob/master/lib/site_prism/error.rb'
|
30
|
-
)
|
31
|
-
end
|
32
19
|
end
|
33
20
|
end
|
34
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: 3.
|
4
|
+
version: 3.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Hill
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-02-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -31,126 +31,152 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '3.
|
34
|
+
version: '3.8'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '3.
|
41
|
+
version: '3.8'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: site_prism-all_there
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 0.3.1
|
49
|
+
- - "<"
|
47
50
|
- !ruby/object:Gem::Version
|
48
|
-
version: '0
|
51
|
+
version: '1.0'
|
49
52
|
type: :runtime
|
50
53
|
prerelease: false
|
51
54
|
version_requirements: !ruby/object:Gem::Requirement
|
52
55
|
requirements:
|
53
|
-
- - "
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 0.3.1
|
59
|
+
- - "<"
|
54
60
|
- !ruby/object:Gem::Version
|
55
|
-
version: '0
|
61
|
+
version: '1.0'
|
56
62
|
- !ruby/object:Gem::Dependency
|
57
63
|
name: cucumber
|
58
64
|
requirement: !ruby/object:Gem::Requirement
|
59
65
|
requirements:
|
60
66
|
- - "~>"
|
61
67
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
68
|
+
version: '4.0'
|
63
69
|
type: :development
|
64
70
|
prerelease: false
|
65
71
|
version_requirements: !ruby/object:Gem::Requirement
|
66
72
|
requirements:
|
67
73
|
- - "~>"
|
68
74
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
75
|
+
version: '4.0'
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: pry-byebug
|
78
|
+
requirement: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
type: :development
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
70
90
|
- !ruby/object:Gem::Dependency
|
71
91
|
name: rake
|
72
92
|
requirement: !ruby/object:Gem::Requirement
|
73
93
|
requirements:
|
74
94
|
- - "~>"
|
75
95
|
- !ruby/object:Gem::Version
|
76
|
-
version: '
|
96
|
+
version: '13.0'
|
77
97
|
type: :development
|
78
98
|
prerelease: false
|
79
99
|
version_requirements: !ruby/object:Gem::Requirement
|
80
100
|
requirements:
|
81
101
|
- - "~>"
|
82
102
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
103
|
+
version: '13.0'
|
84
104
|
- !ruby/object:Gem::Dependency
|
85
105
|
name: rspec
|
86
106
|
requirement: !ruby/object:Gem::Requirement
|
87
107
|
requirements:
|
88
108
|
- - "~>"
|
89
109
|
- !ruby/object:Gem::Version
|
90
|
-
version: '3.
|
110
|
+
version: '3.9'
|
91
111
|
type: :development
|
92
112
|
prerelease: false
|
93
113
|
version_requirements: !ruby/object:Gem::Requirement
|
94
114
|
requirements:
|
95
115
|
- - "~>"
|
96
116
|
- !ruby/object:Gem::Version
|
97
|
-
version: '3.
|
117
|
+
version: '3.9'
|
98
118
|
- !ruby/object:Gem::Dependency
|
99
119
|
name: rubocop
|
100
120
|
requirement: !ruby/object:Gem::Requirement
|
101
121
|
requirements:
|
102
122
|
- - "~>"
|
103
123
|
- !ruby/object:Gem::Version
|
104
|
-
version: 0.
|
124
|
+
version: 0.90.0
|
105
125
|
type: :development
|
106
126
|
prerelease: false
|
107
127
|
version_requirements: !ruby/object:Gem::Requirement
|
108
128
|
requirements:
|
109
129
|
- - "~>"
|
110
130
|
- !ruby/object:Gem::Version
|
111
|
-
version: 0.
|
131
|
+
version: 0.90.0
|
112
132
|
- !ruby/object:Gem::Dependency
|
113
133
|
name: rubocop-performance
|
114
134
|
requirement: !ruby/object:Gem::Requirement
|
115
135
|
requirements:
|
116
136
|
- - "~>"
|
117
137
|
- !ruby/object:Gem::Version
|
118
|
-
version: 1.
|
138
|
+
version: 1.8.1
|
119
139
|
type: :development
|
120
140
|
prerelease: false
|
121
141
|
version_requirements: !ruby/object:Gem::Requirement
|
122
142
|
requirements:
|
123
143
|
- - "~>"
|
124
144
|
- !ruby/object:Gem::Version
|
125
|
-
version: 1.
|
145
|
+
version: 1.8.1
|
126
146
|
- !ruby/object:Gem::Dependency
|
127
147
|
name: rubocop-rspec
|
128
148
|
requirement: !ruby/object:Gem::Requirement
|
129
149
|
requirements:
|
130
150
|
- - "~>"
|
131
151
|
- !ruby/object:Gem::Version
|
132
|
-
version: 1.
|
152
|
+
version: 1.38.0
|
133
153
|
type: :development
|
134
154
|
prerelease: false
|
135
155
|
version_requirements: !ruby/object:Gem::Requirement
|
136
156
|
requirements:
|
137
157
|
- - "~>"
|
138
158
|
- !ruby/object:Gem::Version
|
139
|
-
version: 1.
|
159
|
+
version: 1.38.0
|
140
160
|
- !ruby/object:Gem::Dependency
|
141
161
|
name: selenium-webdriver
|
142
162
|
requirement: !ruby/object:Gem::Requirement
|
143
163
|
requirements:
|
144
|
-
- - "
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '3.11'
|
167
|
+
- - "<"
|
145
168
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
169
|
+
version: '4.1'
|
147
170
|
type: :development
|
148
171
|
prerelease: false
|
149
172
|
version_requirements: !ruby/object:Gem::Requirement
|
150
173
|
requirements:
|
151
|
-
- - "
|
174
|
+
- - ">="
|
152
175
|
- !ruby/object:Gem::Version
|
153
|
-
version: '3.
|
176
|
+
version: '3.11'
|
177
|
+
- - "<"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '4.1'
|
154
180
|
- !ruby/object:Gem::Dependency
|
155
181
|
name: simplecov
|
156
182
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,18 +197,16 @@ dependencies:
|
|
171
197
|
requirements:
|
172
198
|
- - "~>"
|
173
199
|
- !ruby/object:Gem::Version
|
174
|
-
version: '4.
|
200
|
+
version: '4.3'
|
175
201
|
type: :development
|
176
202
|
prerelease: false
|
177
203
|
version_requirements: !ruby/object:Gem::Requirement
|
178
204
|
requirements:
|
179
205
|
- - "~>"
|
180
206
|
- !ruby/object:Gem::Version
|
181
|
-
version: '4.
|
182
|
-
description:
|
183
|
-
SitePrism
|
184
|
-
clean and semantic DSL for describing your site.
|
185
|
-
SitePrism implements the Page Object Model pattern on top of Capybara.
|
207
|
+
version: '4.3'
|
208
|
+
description: SitePrism gives you a simple, clean and semantic DSL for describing your
|
209
|
+
site. SitePrism implements the Page Object Model pattern on top of Capybara.
|
186
210
|
email:
|
187
211
|
- lukehill_uk@hotmail.com
|
188
212
|
- nat@natontesting.com
|
@@ -202,7 +226,9 @@ files:
|
|
202
226
|
- lib/site_prism/logger.rb
|
203
227
|
- lib/site_prism/page.rb
|
204
228
|
- lib/site_prism/recursion_checker.rb
|
229
|
+
- lib/site_prism/rspec_matchers.rb
|
205
230
|
- lib/site_prism/section.rb
|
231
|
+
- lib/site_prism/timer.rb
|
206
232
|
- lib/site_prism/version.rb
|
207
233
|
- lib/site_prism/waiter.rb
|
208
234
|
homepage: https://github.com/site-prism/site_prism
|
@@ -210,15 +236,9 @@ licenses:
|
|
210
236
|
- BSD-3-Clause
|
211
237
|
metadata:
|
212
238
|
bug_tracker_uri: https://github.com/site-prism/site_prism/issues
|
213
|
-
changelog_uri: https://github.com/site-prism/site_prism/blob/
|
239
|
+
changelog_uri: https://github.com/site-prism/site_prism/blob/main/CHANGELOG.md
|
214
240
|
source_code_uri: https://github.com/site-prism/site_prism
|
215
|
-
post_install_message:
|
216
|
-
site_prism has now moved to a new organisation to facilitate better
|
217
|
-
management of the codebase. The new organisation link is available at www.github.com/site-prism
|
218
|
-
and will house the site_prism gem plus new associated co-dependent gems.
|
219
|
-
|
220
|
-
NB: The old repo will soon be discontinued and all existing issues will be moved over to the new
|
221
|
-
repo.
|
241
|
+
post_install_message:
|
222
242
|
rdoc_options: []
|
223
243
|
require_paths:
|
224
244
|
- lib
|
@@ -226,15 +246,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
226
246
|
requirements:
|
227
247
|
- - ">="
|
228
248
|
- !ruby/object:Gem::Version
|
229
|
-
version: '2.
|
249
|
+
version: '2.4'
|
230
250
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
231
251
|
requirements:
|
232
252
|
- - ">="
|
233
253
|
- !ruby/object:Gem::Version
|
234
254
|
version: '0'
|
235
255
|
requirements: []
|
236
|
-
|
237
|
-
rubygems_version: 2.7.8
|
256
|
+
rubygems_version: 3.0.8
|
238
257
|
signing_key:
|
239
258
|
specification_version: 4
|
240
259
|
summary: A Page Object Model DSL for Capybara
|