insite 0.0.2 → 0.0.5

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