insite 0.0.2 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|