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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/lib/insite.rb +13 -7
  3. data/lib/insite/component/component.rb +454 -0
  4. data/lib/insite/component/component_collection.rb +112 -0
  5. data/lib/insite/component/component_instance_methods.rb +4 -0
  6. data/lib/insite/component/component_methods.rb +4 -0
  7. data/lib/insite/constants.rb +323 -31
  8. data/lib/insite/element/element.rb +147 -0
  9. data/lib/insite/element/element_collection.rb +102 -0
  10. data/lib/insite/element/generated/class_map.rb +244 -0
  11. data/lib/insite/element/generated/element_classes.rb +721 -0
  12. data/lib/insite/element/generated/element_instance_methods.rb +1594 -0
  13. data/lib/insite/errors.rb +2 -0
  14. data/lib/insite/examples/material_angular_io/components/angular_material_component.rb +13 -0
  15. data/lib/insite/examples/material_angular_io/components/example_viewer.rb +5 -0
  16. data/lib/insite/examples/material_angular_io/components/mat_chip.rb +29 -0
  17. data/lib/insite/examples/material_angular_io/components/mat_chip_list.rb +21 -0
  18. data/lib/insite/examples/material_angular_io/components/mat_form_field.rb +5 -0
  19. data/lib/insite/examples/material_angular_io/components/mat_icon.rb +5 -0
  20. data/lib/insite/examples/material_angular_io/components/mat_input.rb +5 -0
  21. data/lib/insite/examples/material_angular_io/components/mat_option.rb +3 -0
  22. data/lib/insite/examples/material_angular_io/components/mat_select.rb +15 -0
  23. data/lib/insite/examples/material_angular_io/components/mat_select_content.rb +13 -0
  24. data/lib/insite/examples/material_angular_io/components/no_selector.rb +3 -0
  25. data/lib/insite/examples/material_angular_io/pages.rb +20 -0
  26. data/lib/insite/examples/material_angular_io/site.rb +5 -0
  27. data/lib/insite/examples/material_angular_io/utils.rb +6 -0
  28. data/lib/insite/examples/material_angular_io/watir_mods.rb +54 -0
  29. data/lib/insite/examples/material_angular_io_site.rb +54 -0
  30. data/lib/insite/insite.rb +96 -11
  31. data/lib/insite/methods/common_methods.rb +26 -37
  32. data/lib/insite/methods/dom_methods.rb +73 -46
  33. data/lib/insite/page/defined_page.rb +37 -50
  34. data/lib/insite/page/undefined_page.rb +12 -1
  35. data/lib/insite/version.rb +1 -1
  36. metadata +69 -29
  37. data/lib/insite/element_container/element_container.rb +0 -42
  38. data/lib/insite/feature/feature.rb +0 -30
  39. data/lib/insite/widget/widget.rb +0 -346
  40. 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 Watir::Browser object.
5
- def browser
6
- @browser
7
- end
8
-
9
- # Returns a Selenium::WebDriver::Driver object.
10
- def driver
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 [Watir::Alert, Watir::FileField, Watir::TextField, Watir::TextArea].include? elem.class
75
+ if [Insite::Alert, Insite::FileField, Insite::TextField, Insite::TextArea].include? elem.class
83
76
  elem.set v
84
- elsif [Watir::Select].include? elem.class
77
+ elsif [Insite::Select].include? elem.class
85
78
  elem.select v
86
- elsif [Watir::Anchor, Watir::Button].include? elem.class
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?(Watir::Radio)
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?(Watir::CheckBox)
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 @widget_elements.include?(k)
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
- # Returns a Nokogiri document for the object ONLY. So no need to specify a
210
- # relative path.
211
- def nokogiri
212
- Nokogiri::HTML(html)
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
- alias document nokogiri
203
+ public
215
204
  end
216
205
  end
@@ -1,60 +1,87 @@
1
1
  module Insite
2
2
  module DOMMethods
3
- DOM_METHODS.each do |mth|
4
- define_method(mth) do |name=nil, *args, &block|
5
- if block
6
- element_container(name, mth, *args, &block)
7
- else
8
- el(name) { |b| b.send(mth, parse_args(args.flatten)) }
9
- end
10
- end
11
- end
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
- # TODO: (More context when this happens.)
14
- # ArgumentError: wrong number of arguments (given 1, expected 0)
15
- # 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'
16
- def el(name, &block)
17
- @page_elements ||= []
18
- @page_elements << name.to_sym
19
-
20
- define_method(name) do
21
- begin
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
- if tmp == @most_recent_page
31
- raise e
24
+ define_method(name) do
25
+ if @site && @browser
26
+ klass.new(@site, parse_args(args))
27
+ end
28
+ end
32
29
  else
33
- @most_recent_page = tmp
34
- elem = block.call(@browser)
35
- begin
36
- elem.dup.scroll.to
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
- # Duplicates Watir DOM element argument parsing for element methods.
46
- private
47
- def parse_args(args)
48
- case args.length
49
- when 2
50
- return { args[0] => args[1] }
51
- when 1
52
- obj = args.first
53
- return obj if obj.kind_of? Hash
54
- when 0
55
- return {}
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, :widget_elements
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 :widget_elements
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
- Widgets:\n#{@widget_elements.sort.map { |x| " #{x} #{x.class.to_s.methodize}\n" }.join }
28
+ Components:\n#{@component_elements.sort.map { |x| " #{x} #{x.class.to_s.methodize}\n" }.join }
28
29
 
29
- Features:\n#{@widget_elements.sort.map { |x| " #{x} #{x.class.to_s.methodize}\n" }.join }
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(@page_url)
197
+ @url_template = Addressable::Template.new(
198
+ @page_url.gsub(/(?<!:)\/\/+/, '/')
199
+ )
226
200
  else
227
- @url_template = Addressable::Template.new(Addressable::URI.parse("#{base_url}#{@page_url}"))
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 widget_method(method_name, widget_symbol, widget_method, target_element)
264
- @widget_methods ||= []
265
- @widget_methods << method_name.to_sym unless @widget_methods.include?(method_name.to_sym)
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(widget_symbol.to_s.camelize)
247
+ self.class.const_get(component_symbol.to_s.camelize)
269
248
  .new(@site, @site.send(target_element))
270
- .send(widget_method, *args, &block)
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
- @widget_elements = self.class.widget_elements ||= []
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.pattern}"
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 :widget_elements, :page_elements
73
+ alias_method :component_elements, :page_elements
63
74
 
64
75
  # Returns the current URL.
65
76
  def url
@@ -1,3 +1,3 @@
1
1
  module Insite
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.5'
3
3
  end
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.2
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-04-12 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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.0.0
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.0.0
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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/element_container/element_container.rb
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/feature/feature.rb
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: '0'
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: Wraps page objects up into a site object, which provides some introspection
196
- and navigation capabilities that page objects don't provide. Works with Watir and
197
- Selenium.
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: []