insite 0.0.2 → 0.0.5
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/lib/insite.rb +13 -7
- data/lib/insite/component/component.rb +454 -0
- data/lib/insite/component/component_collection.rb +112 -0
- data/lib/insite/component/component_instance_methods.rb +4 -0
- data/lib/insite/component/component_methods.rb +4 -0
- data/lib/insite/constants.rb +323 -31
- data/lib/insite/element/element.rb +147 -0
- data/lib/insite/element/element_collection.rb +102 -0
- data/lib/insite/element/generated/class_map.rb +244 -0
- data/lib/insite/element/generated/element_classes.rb +721 -0
- data/lib/insite/element/generated/element_instance_methods.rb +1594 -0
- data/lib/insite/errors.rb +2 -0
- data/lib/insite/examples/material_angular_io/components/angular_material_component.rb +13 -0
- data/lib/insite/examples/material_angular_io/components/example_viewer.rb +5 -0
- data/lib/insite/examples/material_angular_io/components/mat_chip.rb +29 -0
- data/lib/insite/examples/material_angular_io/components/mat_chip_list.rb +21 -0
- data/lib/insite/examples/material_angular_io/components/mat_form_field.rb +5 -0
- data/lib/insite/examples/material_angular_io/components/mat_icon.rb +5 -0
- data/lib/insite/examples/material_angular_io/components/mat_input.rb +5 -0
- data/lib/insite/examples/material_angular_io/components/mat_option.rb +3 -0
- data/lib/insite/examples/material_angular_io/components/mat_select.rb +15 -0
- data/lib/insite/examples/material_angular_io/components/mat_select_content.rb +13 -0
- data/lib/insite/examples/material_angular_io/components/no_selector.rb +3 -0
- data/lib/insite/examples/material_angular_io/pages.rb +20 -0
- data/lib/insite/examples/material_angular_io/site.rb +5 -0
- data/lib/insite/examples/material_angular_io/utils.rb +6 -0
- data/lib/insite/examples/material_angular_io/watir_mods.rb +54 -0
- data/lib/insite/examples/material_angular_io_site.rb +54 -0
- data/lib/insite/insite.rb +96 -11
- data/lib/insite/methods/common_methods.rb +26 -37
- data/lib/insite/methods/dom_methods.rb +73 -46
- data/lib/insite/page/defined_page.rb +37 -50
- data/lib/insite/page/undefined_page.rb +12 -1
- data/lib/insite/version.rb +1 -1
- metadata +69 -29
- data/lib/insite/element_container/element_container.rb +0 -42
- data/lib/insite/feature/feature.rb +0 -30
- data/lib/insite/widget/widget.rb +0 -346
- data/lib/insite/widget/widget_methods.rb +0 -4
@@ -1,23 +1,16 @@
|
|
1
1
|
# TODO: A lot of this should be handled via delegation.
|
2
2
|
module Insite
|
3
3
|
module CommonMethods
|
4
|
-
# Returns a
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
@browser.driver
|
12
|
-
end
|
13
|
-
|
14
|
-
# Don't override the default if it's already there.
|
15
|
-
unless defined? :html
|
16
|
-
# Returns current HTML for the object.
|
17
|
-
def html
|
18
|
-
@browser.html
|
4
|
+
# Returns a Nokogiri document for the object ONLY. So no need to specify a
|
5
|
+
# relative path.
|
6
|
+
def document(xpath = nil)
|
7
|
+
if xpath
|
8
|
+
Nokogiri::HTML(html).xpath(xpath)
|
9
|
+
else
|
10
|
+
Nokogiri::HTML(html)
|
19
11
|
end
|
20
12
|
end
|
13
|
+
alias nokogiri document
|
21
14
|
|
22
15
|
# Returns a string representation of the page.
|
23
16
|
def inspect
|
@@ -79,11 +72,11 @@ module Insite
|
|
79
72
|
if @page_elements.include?(k)
|
80
73
|
elem = public_send(k)
|
81
74
|
|
82
|
-
if [
|
75
|
+
if [Insite::Alert, Insite::FileField, Insite::TextField, Insite::TextArea].include? elem.class
|
83
76
|
elem.set v
|
84
|
-
elsif [
|
77
|
+
elsif [Insite::Select].include? elem.class
|
85
78
|
elem.select v
|
86
|
-
elsif [
|
79
|
+
elsif [Insite::Anchor, Insite::Button].include? elem.class
|
87
80
|
case v
|
88
81
|
when Symbol
|
89
82
|
elem.public_send v
|
@@ -94,7 +87,7 @@ module Insite
|
|
94
87
|
else
|
95
88
|
raise ArgumentError, "Unsupported argument for #{elem.class}: '#{v}'"
|
96
89
|
end
|
97
|
-
elsif elem.is_a?(
|
90
|
+
elsif elem.is_a?(Insite::Radio)
|
98
91
|
case v
|
99
92
|
when Symbol
|
100
93
|
elem.public_send v
|
@@ -110,7 +103,7 @@ module Insite
|
|
110
103
|
else
|
111
104
|
raise ArgumentError, "Unsupported argument for #{elem.class}: '#{v}'"
|
112
105
|
end
|
113
|
-
elsif elem.is_a?(
|
106
|
+
elsif elem.is_a?(Insite::CheckBox)
|
114
107
|
case v
|
115
108
|
when Symbol
|
116
109
|
elem.public_send v
|
@@ -130,17 +123,6 @@ module Insite
|
|
130
123
|
else
|
131
124
|
raise ArgumentError, "Unsupported argument for #{elem.class}: '#{v}'"
|
132
125
|
end
|
133
|
-
elsif elem.is_a?(Watir::RadioCollection)
|
134
|
-
# TODO: Remove, not appropriate as a general use case.
|
135
|
-
rb = elem.to_a.find do |r|
|
136
|
-
r.text =~ /#{Regexp.escape(v)}/i || r.parent.text =~ /#{Regexp.escape(v)}/i
|
137
|
-
end
|
138
|
-
|
139
|
-
if rb
|
140
|
-
rb.click
|
141
|
-
else
|
142
|
-
raise "No matching radio button could be detected for '#{val}' for #{elem}."
|
143
|
-
end
|
144
126
|
else
|
145
127
|
case v
|
146
128
|
when Symbol
|
@@ -153,7 +135,7 @@ module Insite
|
|
153
135
|
raise ArgumentError, "Unsupported argument for #{elem.class}: '#{v}'"
|
154
136
|
end
|
155
137
|
end
|
156
|
-
elsif @
|
138
|
+
elsif @component_elements.include?(k)
|
157
139
|
w = public_send(k)
|
158
140
|
|
159
141
|
begin
|
@@ -206,11 +188,18 @@ module Insite
|
|
206
188
|
hash_args
|
207
189
|
end
|
208
190
|
|
209
|
-
#
|
210
|
-
|
211
|
-
def
|
212
|
-
|
191
|
+
# Duplicates Watir DOM element argument parsing for element methods.
|
192
|
+
private
|
193
|
+
def parse_args(args)
|
194
|
+
case args.length
|
195
|
+
when 2
|
196
|
+
return { args[0] => args[1] }
|
197
|
+
when 1
|
198
|
+
obj = args.first
|
199
|
+
when 0
|
200
|
+
return {}
|
201
|
+
end
|
213
202
|
end
|
214
|
-
|
203
|
+
public
|
215
204
|
end
|
216
205
|
end
|
@@ -1,60 +1,87 @@
|
|
1
1
|
module Insite
|
2
2
|
module DOMMethods
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
Insite::METHOD_MAP.each do |k, v|
|
4
|
+
# Create class-level methods for defining
|
5
|
+
# DOM elements (1:1 match for Watir browser DOM methods.)
|
6
|
+
v.each do |mth|
|
7
|
+
# Class-level method to define page elements in a page class.
|
8
|
+
define_method(mth) do |name=nil, *args, &block|
|
9
|
+
@page_elements ||= [name.to_sym]
|
10
|
+
c = Insite::METHOD_MAP.find { |k, v| Insite::METHOD_MAP[k].include?(mth) }
|
11
|
+
c = c.first.to_s.demodulize
|
12
|
+
base_class = "Insite::#{c}".constantize
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
elem = block.call(@browser)
|
23
|
-
begin
|
24
|
-
elem.dup.scroll.to
|
25
|
-
rescue => e
|
26
|
-
end
|
27
|
-
rescue(Watir::Exception::UnknownObjectException) => e
|
28
|
-
tmp = page
|
14
|
+
if block
|
15
|
+
new_class_name = "#{c}For#{name.to_s.camelcase}"
|
16
|
+
unless self.class.const_defined? new_class_name
|
17
|
+
klass = Class.new(base_class) do
|
18
|
+
@predefined_selector = parse_args(args)
|
19
|
+
class_eval(&block) if block
|
20
|
+
end
|
21
|
+
const_set(new_class_name, klass)
|
22
|
+
end
|
29
23
|
|
30
|
-
|
31
|
-
|
24
|
+
define_method(name) do
|
25
|
+
if @site && @browser
|
26
|
+
klass.new(@site, parse_args(args))
|
27
|
+
end
|
28
|
+
end
|
32
29
|
else
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
rescue => e
|
30
|
+
define_method(name) do
|
31
|
+
if @site && @browser
|
32
|
+
base_class.new(@site, parse_args(args))
|
33
|
+
end
|
38
34
|
end
|
39
35
|
end
|
40
36
|
end
|
41
|
-
elem
|
42
37
|
end
|
43
|
-
end
|
44
38
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
39
|
+
# # TODO: (More context when this happens.)
|
40
|
+
# # ArgumentError: wrong number of arguments (given 1, expected 0)
|
41
|
+
# # from /Users/john/.rbenv/versions/2.3.5/lib/ruby/gems/2.3.0/gems/insite-0.5.1/lib/insite/methods/dom_methods.rb:17:in `block in el'
|
42
|
+
# def el(name, &block)
|
43
|
+
# @page_elements ||= []
|
44
|
+
# @page_elements << name.to_sym
|
45
|
+
#
|
46
|
+
# define_method(name) do
|
47
|
+
# begin
|
48
|
+
# elem = block.call(@browser)
|
49
|
+
# begin
|
50
|
+
# elem.dup.scroll.to
|
51
|
+
# rescue => e
|
52
|
+
# end
|
53
|
+
# rescue(Watir::Exception::UnknownObjectException) => e
|
54
|
+
# tmp = page
|
55
|
+
#
|
56
|
+
# if tmp == @most_recent_page
|
57
|
+
# raise e
|
58
|
+
# else
|
59
|
+
# @most_recent_page = tmp
|
60
|
+
# elem = block.call(@browser)
|
61
|
+
# begin
|
62
|
+
# elem.dup.scroll.to
|
63
|
+
# rescue => e
|
64
|
+
# end
|
65
|
+
# end
|
66
|
+
# end
|
67
|
+
# elem
|
68
|
+
# end
|
69
|
+
# end
|
70
|
+
|
71
|
+
# Duplicates Watir DOM element argument parsing for element methods.
|
72
|
+
private
|
73
|
+
def parse_args(args)
|
74
|
+
case args.length
|
75
|
+
when 2
|
76
|
+
return { args[0] => args[1] }
|
77
|
+
when 1
|
78
|
+
obj = args.first
|
79
|
+
return obj if obj.kind_of? Hash
|
80
|
+
when 0
|
81
|
+
return {}
|
82
|
+
end
|
56
83
|
end
|
84
|
+
public
|
57
85
|
end
|
58
|
-
public
|
59
86
|
end
|
60
87
|
end
|
@@ -1,18 +1,19 @@
|
|
1
|
-
# TODO: Title matcher
|
1
|
+
# TODO: Title matcher?
|
2
2
|
# TODO: Add page query methods.
|
3
3
|
module Insite
|
4
4
|
class DefinedPage
|
5
|
-
attr_reader :arguments, :browser, :has_fragment, :page_attributes, :page_elements, :page_features, :page_url, :query_arguments, :required_arguments, :site, :url_template, :url_matcher, :
|
5
|
+
attr_reader :arguments, :browser, :has_fragment, :page_attributes, :page_elements, :page_features, :page_url, :query_arguments, :required_arguments, :site, :url_template, :url_matcher, :component_elements
|
6
6
|
|
7
7
|
include Insite::CommonMethods
|
8
|
+
extend Insite::ComponentMethods
|
9
|
+
include Insite::ComponentInstanceMethods
|
10
|
+
extend Insite::DOMMethods
|
11
|
+
|
8
12
|
alias_method :update_page, :update_object
|
9
13
|
|
10
14
|
class << self
|
11
15
|
attr_reader :has_fragment, :page_attributes, :page_elements, :page_features, :page_url, :url_matcher, :url_template
|
12
|
-
attr_accessor :
|
13
|
-
|
14
|
-
include Insite::DOMMethods
|
15
|
-
include Insite::WidgetMethods
|
16
|
+
attr_accessor :component_elements
|
16
17
|
|
17
18
|
def describe
|
18
19
|
puts <<-EOF
|
@@ -24,45 +25,14 @@ module Insite
|
|
24
25
|
|
25
26
|
Page Elements:\n#{@page_elements.sort.map { |x| " #{x} #{x.class.to_s.methodize}\n" }.join }
|
26
27
|
|
27
|
-
|
28
|
+
Components:\n#{@component_elements.sort.map { |x| " #{x} #{x.class.to_s.methodize}\n" }.join }
|
28
29
|
|
29
|
-
Features:\n#{@
|
30
|
+
Features:\n#{@component_elements.sort.map { |x| " #{x} #{x.class.to_s.methodize}\n" }.join }
|
30
31
|
|
31
32
|
EOF
|
32
33
|
|
33
34
|
end
|
34
35
|
|
35
|
-
private
|
36
|
-
def element_container(name, type, *args, &block)
|
37
|
-
tmpklass = Class.new(ElementContainer) do
|
38
|
-
self.class_eval(&block) if block_given?
|
39
|
-
end
|
40
|
-
cname = name.to_s.camelcase + 'Container'
|
41
|
-
const_set(cname, tmpklass) unless const_defined? cname
|
42
|
-
|
43
|
-
@page_elements ||= []
|
44
|
-
@page_elements << name.to_sym
|
45
|
-
|
46
|
-
define_method(name) do
|
47
|
-
self.class.const_get(cname).send(:new, @site, @browser.send(type, *args))
|
48
|
-
end
|
49
|
-
end
|
50
|
-
public
|
51
|
-
|
52
|
-
# Creates a section within the page. TODO: section is a DOM element, rename this.
|
53
|
-
def feature(fname, klass = Insite::Feature, &block)
|
54
|
-
tmpklass = Class.new(klass) do
|
55
|
-
self.class_eval(&block) if block_given?
|
56
|
-
end
|
57
|
-
|
58
|
-
const_set(fname.to_s.camelcase, tmpklass) unless const_defined? fname.to_s.camelcase
|
59
|
-
@page_features ||= []
|
60
|
-
@page_features << fname.to_s.underscore.to_sym
|
61
|
-
define_method(fname.to_s.underscore) do
|
62
|
-
tmpklass.new(page = self)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
36
|
# Allows you to set special page attributes that affect page behavior. The two page
|
67
37
|
# attributes currently supported are :navigation_disabled and :page_template:
|
68
38
|
#
|
@@ -216,16 +186,25 @@ module Insite
|
|
216
186
|
# The set_url method is not mandatory. when defining a page. If you don't use set_url in the page
|
217
187
|
# definition then the page will defined the base_url as the page's URL.
|
218
188
|
def set_url(url)
|
219
|
-
url ? @page_url = url : nil
|
189
|
+
url ? @page_url = url.gsub(/(?<!:)\/\/+/, '/') : nil
|
220
190
|
end
|
221
191
|
|
222
192
|
def set_url_template(base_url)
|
223
193
|
case @page_url
|
194
|
+
when nil, ''
|
195
|
+
@url_template = Addressable::Template.new(base_url)
|
224
196
|
when /(http:\/\/|https:\/\/)/i
|
225
|
-
@url_template = Addressable::Template.new(
|
197
|
+
@url_template = Addressable::Template.new(
|
198
|
+
@page_url.gsub(/(?<!:)\/\/+/, '/')
|
199
|
+
)
|
226
200
|
else
|
227
|
-
@url_template = Addressable::Template.new(
|
201
|
+
@url_template = Addressable::Template.new(
|
202
|
+
Addressable::URI.parse(
|
203
|
+
"#{base_url}#{@page_url}".gsub(/(?<!:)\/\/+/, '/')
|
204
|
+
)
|
205
|
+
)
|
228
206
|
end
|
207
|
+
|
229
208
|
@has_fragment = @url_template.pattern =~ /#/
|
230
209
|
end
|
231
210
|
|
@@ -260,14 +239,14 @@ module Insite
|
|
260
239
|
end
|
261
240
|
end
|
262
241
|
|
263
|
-
def
|
264
|
-
@
|
265
|
-
@
|
242
|
+
def component_method(method_name, component_symbol, component_method, target_element)
|
243
|
+
@component_methods ||= []
|
244
|
+
@component_methods << method_name.to_sym unless @component_methods.include?(method_name.to_sym)
|
266
245
|
|
267
246
|
define_method(method_name) do |*args, &block|
|
268
|
-
self.class.const_get(
|
247
|
+
self.class.const_get(component_symbol.to_s.camelize)
|
269
248
|
.new(@site, @site.send(target_element))
|
270
|
-
.send(
|
249
|
+
.send(component_method, *args, &block)
|
271
250
|
end
|
272
251
|
end
|
273
252
|
end # Self.
|
@@ -280,6 +259,14 @@ module Insite
|
|
280
259
|
true
|
281
260
|
end
|
282
261
|
|
262
|
+
def driver
|
263
|
+
@browser.driver
|
264
|
+
end
|
265
|
+
|
266
|
+
def html
|
267
|
+
@browser.html
|
268
|
+
end
|
269
|
+
|
283
270
|
# Initializes a new page object. There's no need to ever call this method directly.
|
284
271
|
# Your site class (the one that includes the Insite module) will handle this for
|
285
272
|
# you
|
@@ -287,7 +274,7 @@ module Insite
|
|
287
274
|
@site = site
|
288
275
|
@browser = process_browser
|
289
276
|
|
290
|
-
@
|
277
|
+
@component_elements = self.class.component_elements ||= []
|
291
278
|
@browser = @site.browser
|
292
279
|
@page_attributes = self.class.page_attributes
|
293
280
|
@page_url = self.class.page_url
|
@@ -328,7 +315,7 @@ module Insite
|
|
328
315
|
|
329
316
|
if args[arg] #The hash has the required argument.
|
330
317
|
@arguments[arg]= args[arg]
|
331
|
-
elsif match.keys.include?(arg.to_s)
|
318
|
+
elsif match && match.keys.include?(arg.to_s)
|
332
319
|
@arguments[arg] = match[arg.to_s]
|
333
320
|
elsif @site.respond_to?(arg)
|
334
321
|
@arguments[arg] = site.public_send(arg)
|
@@ -506,7 +493,7 @@ module Insite
|
|
506
493
|
raise(
|
507
494
|
Insite::Errors::WrongPageError,
|
508
495
|
"Navigation check failed after attempting to access the #{self.class.name} page. " \
|
509
|
-
"Current URL #{@browser.url} did not match #{@url_template.
|
496
|
+
"Current URL #{@browser.url} did not match #{@url_template.expand(@arguments)}"
|
510
497
|
)
|
511
498
|
end
|
512
499
|
end
|
@@ -3,6 +3,9 @@ module Insite
|
|
3
3
|
attr_reader :arguments, :browser, :has_fragment, :page_attributes, :page_elements, :page_features, :page_url, :query_arguments, :required_arguments, :site, :url_template, :url_matcher
|
4
4
|
|
5
5
|
include Insite::CommonMethods
|
6
|
+
extend Insite::ComponentMethods
|
7
|
+
include Insite::ComponentInstanceMethods
|
8
|
+
# TODO: DOM methods.
|
6
9
|
|
7
10
|
# Always returns false.
|
8
11
|
def defined?
|
@@ -30,6 +33,14 @@ module Insite
|
|
30
33
|
EOF
|
31
34
|
end
|
32
35
|
|
36
|
+
def driver
|
37
|
+
@browser.driver
|
38
|
+
end
|
39
|
+
|
40
|
+
def html
|
41
|
+
@browser.html
|
42
|
+
end
|
43
|
+
|
33
44
|
def initialize(site)
|
34
45
|
@site = site
|
35
46
|
@browser = process_browser
|
@@ -59,7 +70,7 @@ module Insite
|
|
59
70
|
def page_elements
|
60
71
|
[]
|
61
72
|
end
|
62
|
-
alias_method :
|
73
|
+
alias_method :component_elements, :page_elements
|
63
74
|
|
64
75
|
# Returns the current URL.
|
65
76
|
def url
|
data/lib/insite/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: insite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Fitisoff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,56 +16,70 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 4.2.5
|
20
20
|
type: :runtime
|
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:
|
26
|
+
version: 4.2.5
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: addressable
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 2.5.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 2.5.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: highline
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.0.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: nokogiri
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
61
|
+
version: 1.7.0
|
48
62
|
type: :runtime
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
68
|
+
version: 1.7.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: watir
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: 6.
|
75
|
+
version: 6.11.0
|
62
76
|
type: :runtime
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: 6.
|
82
|
+
version: 6.11.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: watir-scroll
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,89 +100,110 @@ dependencies:
|
|
86
100
|
requirements:
|
87
101
|
- - ">="
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
103
|
+
version: 0.8.21
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
110
|
+
version: 0.8.21
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: simplecov
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - ">="
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
117
|
+
version: 0.16.1
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - ">="
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
124
|
+
version: 0.16.1
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: pry
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
129
|
- - ">="
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
131
|
+
version: 0.11.3
|
118
132
|
type: :development
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - ">="
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
138
|
+
version: 0.11.3
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: rake
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
143
|
- - ">="
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
145
|
+
version: 12.3.1
|
132
146
|
type: :development
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
150
|
- - ">="
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
152
|
+
version: 12.3.1
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: rspec
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
157
|
- - ">="
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
159
|
+
version: 3.7.0
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
164
|
- - ">="
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
153
|
-
description: Page object library
|
166
|
+
version: 3.7.0
|
167
|
+
description: Page object library with support for component-based web frameworks
|
154
168
|
email: jfitisoff@yahoo.com
|
155
169
|
executables: []
|
156
170
|
extensions: []
|
157
171
|
extra_rdoc_files: []
|
158
172
|
files:
|
159
173
|
- lib/insite.rb
|
174
|
+
- lib/insite/component/component.rb
|
175
|
+
- lib/insite/component/component_collection.rb
|
176
|
+
- lib/insite/component/component_instance_methods.rb
|
177
|
+
- lib/insite/component/component_methods.rb
|
160
178
|
- lib/insite/constants.rb
|
161
|
-
- lib/insite/
|
179
|
+
- lib/insite/element/element.rb
|
180
|
+
- lib/insite/element/element_collection.rb
|
181
|
+
- lib/insite/element/generated/class_map.rb
|
182
|
+
- lib/insite/element/generated/element_classes.rb
|
183
|
+
- lib/insite/element/generated/element_instance_methods.rb
|
162
184
|
- lib/insite/errors.rb
|
163
|
-
- lib/insite/
|
185
|
+
- lib/insite/examples/material_angular_io/components/angular_material_component.rb
|
186
|
+
- lib/insite/examples/material_angular_io/components/example_viewer.rb
|
187
|
+
- lib/insite/examples/material_angular_io/components/mat_chip.rb
|
188
|
+
- lib/insite/examples/material_angular_io/components/mat_chip_list.rb
|
189
|
+
- lib/insite/examples/material_angular_io/components/mat_form_field.rb
|
190
|
+
- lib/insite/examples/material_angular_io/components/mat_icon.rb
|
191
|
+
- lib/insite/examples/material_angular_io/components/mat_input.rb
|
192
|
+
- lib/insite/examples/material_angular_io/components/mat_option.rb
|
193
|
+
- lib/insite/examples/material_angular_io/components/mat_select.rb
|
194
|
+
- lib/insite/examples/material_angular_io/components/mat_select_content.rb
|
195
|
+
- lib/insite/examples/material_angular_io/components/no_selector.rb
|
196
|
+
- lib/insite/examples/material_angular_io/pages.rb
|
197
|
+
- lib/insite/examples/material_angular_io/site.rb
|
198
|
+
- lib/insite/examples/material_angular_io/utils.rb
|
199
|
+
- lib/insite/examples/material_angular_io/watir_mods.rb
|
200
|
+
- lib/insite/examples/material_angular_io_site.rb
|
164
201
|
- lib/insite/insite.rb
|
165
202
|
- lib/insite/methods/common_methods.rb
|
166
203
|
- lib/insite/methods/dom_methods.rb
|
167
204
|
- lib/insite/page/defined_page.rb
|
168
205
|
- lib/insite/page/undefined_page.rb
|
169
206
|
- lib/insite/version.rb
|
170
|
-
- lib/insite/widget/widget.rb
|
171
|
-
- lib/insite/widget/widget_methods.rb
|
172
207
|
homepage: https://github.com/jfitisoff/insite
|
173
208
|
licenses:
|
174
209
|
- MIT
|
@@ -181,7 +216,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
181
216
|
requirements:
|
182
217
|
- - ">="
|
183
218
|
- !ruby/object:Gem::Version
|
184
|
-
version:
|
219
|
+
version: 2.3.0
|
185
220
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
186
221
|
requirements:
|
187
222
|
- - ">="
|
@@ -192,7 +227,12 @@ rubyforge_project:
|
|
192
227
|
rubygems_version: 2.5.2.1
|
193
228
|
signing_key:
|
194
229
|
specification_version: 4
|
195
|
-
summary:
|
196
|
-
|
197
|
-
|
230
|
+
summary: Insite is a page object library that's geared towards writing reusable code
|
231
|
+
for component-based web applications. It allows you to write reusable test components
|
232
|
+
that model your application components. These components are interchangable with
|
233
|
+
regular DOM objects. Insite uses a "Site Object Model." You create a site object
|
234
|
+
class and define pages and components for the site. You then use the site object
|
235
|
+
as the interface to your application instead of declaring individual pages each
|
236
|
+
time that the site context changes. Think of the site object as a browser for page
|
237
|
+
objects.
|
198
238
|
test_files: []
|