sapphire 0.8.0 → 0.8.2

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.
@@ -7,7 +7,7 @@ require 'selenium-webdriver'
7
7
  require 'delegate'
8
8
  require 'Forwardable'
9
9
 
10
- require 'sapphire/Observable'
10
+ require 'sapphire/Pluggable'
11
11
  require 'sapphire/Adapters'
12
12
  require 'sapphire/Testing'
13
13
  require 'sapphire/Web'
@@ -18,7 +18,7 @@ require 'sapphire/Configuration'
18
18
  require 'sapphire/Data'
19
19
  require 'sapphire/Virtualization'
20
20
  require 'sapphire/TeamCity'
21
- require 'sapphire/Observers'
21
+ require 'sapphire/Plugins'
22
22
 
23
23
  module Sapphire
24
24
  module Sapphire
@@ -35,7 +35,7 @@ module Sapphire
35
35
  include WebAbstractions
36
36
  include Testing
37
37
  include Testing::TeamCity
38
- include Observers
38
+ include Plugins
39
39
  include UI
40
40
  end
41
41
  end
@@ -45,7 +45,7 @@ $driver = Sapphire::WebAbstractions::MetaBrowser.new(nil)
45
45
  Sapphire.sub_modules.each do |m|
46
46
  m.sub_classes.each do |s|
47
47
  m.const_get(s).observe() if m.const_get(s).respond_to? :observe
48
- Sapphire::Observers::ObserverRepository.instance.Add(m.const_get(s).new) if m.const_get(s).respond_to? :IsObserver
48
+ Sapphire::Plugins::PluginRepository.instance.Add(m.const_get(s).new) if m.const_get(s).respond_to? :IsObserver
49
49
  end
50
50
  end
51
51
 
@@ -92,7 +92,7 @@ module Sapphire
92
92
  def CurrentUrl
93
93
  wait = Selenium::WebDriver::Wait.new(:timeout => 60)
94
94
  url = wait.until { x = self.Browser().current_url
95
- x unless x == nil
95
+ x unless x == nil
96
96
  }
97
97
 
98
98
  url
@@ -175,65 +175,110 @@ module Sapphire
175
175
  return temp
176
176
  end
177
177
 
178
- def FindItem(by, value, comparator = nil)
178
+ def FindItem(array, comparator = nil)
179
179
 
180
180
  x = nil
181
+ by = nil
182
+ value = nil
183
+
184
+ array.each do |item|
185
+
186
+ if item.is_a? Hash
187
+ begin
188
+ x = self.FindElement item.keys.first, item.fetch(item.keys.first)
189
+ by = item.keys.first
190
+ value = item.fetch(item.keys.first)
191
+ rescue
192
+ #do nothing, let it keep looping
193
+ end
194
+ end
181
195
 
182
- begin
183
- x = self.FindElement by, value
184
- rescue
185
- #do nothing, let it keep looping
186
- end
196
+ if item.is_a? Array
197
+ x = self.FindElement item[0], item[1]
198
+ by = item[0]
199
+ value = item[1]
200
+ end
187
201
 
188
- return x if x != nil
189
- return x if comparator.Compare(x != nil, true) if comparator != nil
202
+ return x, by, value if x != nil
203
+ return x, by, value if comparator.Compare(x != nil, true) if comparator != nil
204
+
205
+ end if array.is_a? Array
206
+
207
+ if array.is_a? Hash
208
+ x = self.FindElement array.keys.first, array.fetch(array.keys.first)
209
+ by = item.keys.first
210
+ value = item.fetch(item.keys.first)
211
+ end
212
+ return x, by, value if x != nil
213
+ return x, by, value if comparator.Compare(x != nil, true) if comparator != nil
190
214
 
191
215
  end
192
216
 
193
- def FindItemWithWait(by, value, comparator=nil)
217
+ def FindItemWithWait(array, comparator=nil)
194
218
  masterWait = Selenium::WebDriver::Wait.new(:timeout => 20)
195
219
 
196
- element = masterWait.until {
197
- x = FindItem(by, value, comparator)
198
- return x if x != nil
199
- return x if comparator.Compare(x != nil, true) if comparator != nil
220
+ element, by, value = masterWait.until {
221
+ x, by, value = FindItem(array, comparator)
222
+ return x, by, value if x != nil
223
+ return x, by, value if comparator.Compare(x != nil, true) if comparator != nil
200
224
  }
201
225
 
202
- return element if element != nil
203
- return element if comparator.Compare(element != nil, true) if comparator != nil
204
-
205
- raise "Could not find control using lookup #{by} and value #{value}."
226
+ return element, by, value if element != nil
227
+ return element, by, value if comparator.Compare(element != nil, true) if comparator != nil
228
+ raise "Could not find control for array: " + array.to_s
206
229
 
207
230
  end
208
231
 
209
- def FindItemWithoutWait(by, value, comparator=nil)
232
+ def FindItemWithoutWait(array, comparator=nil)
210
233
 
211
- element = FindItem(by, value, comparator)
234
+ element, by, value = FindItem(array, comparator)
212
235
 
213
- return element if element != nil
214
- return element if comparator.Compare(element != nil, true) if comparator != nil
215
- raise "Could not find control using lookup #{by} and value #{value}."
236
+ return element, by, value if element != nil
237
+ return element, by, value if comparator.Compare(element != nil, true) if comparator != nil
238
+ raise "Could not find control for array: " + array.to_s
216
239
 
217
240
  end
218
241
 
219
- def FindAllItems(by, value)
242
+ def FindAllItems(array)
220
243
  masterWait = Selenium::WebDriver::Wait.new(:timeout => 20)
221
244
 
222
- element = masterWait.until {
223
- x = nil
224
- begin
225
- x = self.FindElements by, value
245
+ x = nil
246
+ by = nil
247
+ value = nil
248
+
249
+ element, by, value = masterWait.until {
250
+
251
+ array.each do |item|
252
+
253
+ if item.is_a? Hash
254
+ begin
255
+ x = self.FindElements item.keys.first, item.fetch(item.keys.first)
256
+ x = nil if x.is_a? Array and x.empty?
257
+
258
+ if !x.nil?
259
+ by = item.keys.first
260
+ value = item[item.keys.first]
261
+ end
262
+ rescue
263
+ #do nothing, let it keep looping
264
+ end
265
+ end
266
+
267
+ x, by, value = self.FindElements item[0], item[1] if item.is_a? Array
226
268
  x = nil if x.is_a? Array and x.empty?
227
- rescue
228
- #do nothing, let it keep looping
229
- end
269
+ return x, by, value if x != nil
230
270
 
231
- x = nil if x.is_a? Array and x.empty?
232
- return x if x != nil
271
+ end if array.is_a? Array
233
272
 
273
+ x = self.FindElement array.keys.first, array.fetch(array.keys.first) if array.is_a? Hash
274
+ if !x.nil?
275
+ by = item.keys.first
276
+ value = item[item.keys.first]
277
+ end
278
+ return x, by, value if x != nil
234
279
  }
235
- return element if element != nil
236
- raise "Could not find control using lookup #{by} and value #{value}."
280
+ return element, by, value if element != nil
281
+ raise "Could not find control for array: " + array.to_s
237
282
  end
238
283
 
239
284
  def FindElement(discriminator, selector)
@@ -248,11 +293,11 @@ module Sapphire
248
293
  self.Browser().execute_script(script)
249
294
  end
250
295
 
251
- def Create(type)
252
- Selenium::WebDriver.for type
296
+ def Create(*args)
297
+ Selenium::WebDriver.for *args
253
298
  end
254
299
 
255
- include Sapphire::Observable
300
+ include Sapphire::Pluggable
256
301
  end
257
302
  end
258
303
  end
@@ -7,7 +7,7 @@ class Object
7
7
  end
8
8
 
9
9
  def self.observe()
10
- include Sapphire::Observable
10
+ include Sapphire::Pluggable
11
11
  end
12
12
 
13
13
  end
@@ -3,15 +3,19 @@ class String
3
3
  alias_method :"plus", :"+"
4
4
 
5
5
  def underscore
6
- self.gsub(/::/, '/').
7
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
8
- gsub(/([a-z\d])([A-Z])/,'\1_\2').
9
- tr("-", "_").
10
- downcase
6
+ self.gsub(/::/, '/').
7
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
8
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
9
+ tr("-", "_").
10
+ downcase
11
11
  end
12
12
 
13
13
  def +(item)
14
+
15
+ return plus("") if item.nil?
16
+ return plus(item) if item.is_a? String
14
17
  return plus(Parameter(item)) if Sapphire::DSL::TestPlans::Parameters.instance.Contains(item)
18
+
15
19
  raise "No Parameter defined for: " << item.to_s if item.is_a? Symbol and !item.nil?
16
20
 
17
21
  plus(item)
@@ -1,5 +1,5 @@
1
1
  module Sapphire
2
- module Observable
2
+ module Pluggable
3
3
  def self.intercept(base, hash, *method_names)
4
4
  do_before = proc { |name, inst, args|
5
5
  begin
@@ -36,16 +36,16 @@ module Sapphire
36
36
  method_names.each do |method_name|
37
37
  method = base.instance_method(method_name)
38
38
  base.send :define_method, method_name.to_sym do |*args, &method_block|
39
- do_before.call(method_name, self, args) if hash.has_key? :before
39
+ do_before.call(method_name, self, args)
40
40
  begin
41
- result = method.bind(self).(*args, &method_block)
42
- do_on_success.call(method_name, self, args) if hash.has_key? :after
41
+ result = method.bind(self).(*args, &method_block)
42
+ do_on_success.call(method_name, self, args)
43
43
  return result
44
44
  rescue => raised_exception
45
- do_on_failure.call(method_name, self, raised_exception, args) if hash.has_key? :failure
45
+ do_on_failure.call(method_name, self, raised_exception, args)
46
46
  raise raised_exception
47
47
  ensure
48
- do_after.call(method_name, self, args) if hash.has_key? :success
48
+ do_after.call(method_name, self, args)
49
49
  end
50
50
  end
51
51
  end
@@ -53,27 +53,28 @@ module Sapphire
53
53
 
54
54
  def self.included(base)
55
55
  before = proc { |name, inst, args|
56
- observers = Observers::ObserverRepository.instance.Find(name.to_sym, inst.class)
56
+ observers = Plugins::PluginRepository.instance.Find(name.to_sym, inst.class)
57
57
  observers.each do |x| x.Before(inst, name, args) if x.respond_to? :Before end
58
58
  }
59
59
 
60
60
  after = proc { |name, inst, args|
61
- observers = Observers::ObserverRepository.instance.Find(name.to_sym, inst.class)
61
+ observers = Plugins::PluginRepository.instance.Find(name.to_sym, inst.class)
62
62
  observers.each do |x| x.After(inst, name, args) if x.respond_to? :After end
63
63
  }
64
64
 
65
65
  success = proc { |name, inst, args|
66
- observers = Observers::ObserverRepository.instance.Find(name.to_sym, inst.class)
66
+ observers = Plugins::PluginRepository.instance.Find(name.to_sym, inst.class)
67
67
  observers.each do |x| x.OnSuccess(inst, name, args) if x.respond_to? :OnSuccess end
68
68
  }
69
69
 
70
70
 
71
71
  failure = proc { |name, inst, exception, args|
72
- observers = Observers::ObserverRepository.instance.Find(name.to_sym, inst.class)
72
+ observers = Plugins::PluginRepository.instance.Find(name.to_sym, inst.class)
73
73
  observers.each do |x| x.OnFailure(inst, name, exception, args) if x.respond_to? :OnFailure end
74
74
  }
75
75
 
76
76
 
77
+
77
78
  hash = {}
78
79
 
79
80
  hash.merge! :before => before,
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.dirname(__FILE__) +'/Plugins/Plugin.rb', __FILE__)
2
+ Dir[File.dirname(__FILE__) + '/Plugins/*.rb'].each {|file| require file }
3
+ Dir[File.dirname(__FILE__) + '/Plugins/FireBug/*.rb'].each {|file| require file }
4
+ Dir[File.dirname(__FILE__) + '/Plugins/Browser/*.rb'].each {|file| require file }
5
+ Dir[File.dirname(__FILE__) + '/Plugins/Debugging/*.rb'].each {|file| require file }
6
+ Dir[File.dirname(__FILE__) + '/Plugins/Highlighters/*.rb'].each {|file| require file }
@@ -1,7 +1,7 @@
1
1
  module Sapphire
2
- module Observers
2
+ module Plugins
3
3
 
4
- class VerboseObserver < Observer
4
+ class VerbosePlugin < Plugin
5
5
 
6
6
  def initialize
7
7
 
@@ -0,0 +1,37 @@
1
+ module Sapphire
2
+ module Plugins
3
+
4
+ class FirebugPlugin < Plugin
5
+
6
+ def initialize
7
+
8
+ observes :class => WebAbstractions::FireFoxBrowser,
9
+ :method => :Create
10
+
11
+ end
12
+
13
+ def Before(instance, method, args)
14
+ return if ENV["firebug"] != "true"
15
+ profile = Selenium::WebDriver::Firefox::Profile.new
16
+ version = '1.9.1'
17
+ profile.add_extension(File.expand_path("../firebug-#{version}.xpi", __FILE__))
18
+
19
+ profile["extensions.firebug.currentVersion"] = "999"
20
+ profile["extensions.firebug.allPagesActivation"] = "on"
21
+ ['console', 'net', 'script'].each do |feature|
22
+ profile["extensions.firebug.#{feature}.enableSites"] = true
23
+ end
24
+
25
+ profile["extensions.firebug.previousPlacement"] = 3
26
+
27
+ args << { :profile => profile }
28
+ end
29
+
30
+ def self.IsObserver()
31
+ true
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ end
@@ -1,7 +1,7 @@
1
1
  module Sapphire
2
- module Observers
2
+ module Plugins
3
3
 
4
- class FailedControlHighlighter < Observer
4
+ class FailedControlHighlighter < Plugin
5
5
 
6
6
  def initialize
7
7
 
@@ -0,0 +1,114 @@
1
+ module Sapphire
2
+ module Plugins
3
+
4
+ class FailedControlToolTip < Plugin
5
+
6
+ def initialize
7
+
8
+ observes :class => DSL::ControlEvaluation,
9
+ :method => :Passed
10
+
11
+ end
12
+
13
+ def Before(instance, method, args)
14
+ return if ENV["highlighter"] != "true"
15
+
16
+ control = args[0]
17
+ discriminator = control.found_by_type
18
+ selector = control.found_by_value
19
+
20
+ begin
21
+ query = Query(discriminator, selector)
22
+
23
+ #js = "var wrapper = document.createElement('div');
24
+ # var toolTip = document.createElement('div');
25
+ # toolTip.innerHTML = 'Test!';
26
+ # wrapper.style.position = 'relative';
27
+ # toolTip.style.position = 'absolute';
28
+ # toolTip.style.bottom = '100%';
29
+ # toolTip.style.left = '50%';
30
+ # toolTip.style.marginLeft = '-150px';
31
+ # toolTip.style.width = '100px';
32
+ # toolTip.style.backgroundColor = '#eee;'
33
+ # toolTip.style.border = '1px solid #555;'
34
+ # toolTip.style.borderRadius = '5px';
35
+ # toolTip.style.padding = '5px';
36
+ # var myDiv = #{query};
37
+ # wrapper.appendChild(toolTip);
38
+ # wrapper.appendChild(myDiv.cloneNode(true));
39
+ # myDiv.parentNode.replaceChild(wrapper, myDiv);"
40
+ #
41
+ #$driver.ExecuteScript(js)
42
+
43
+ $driver.ExecuteScript "var tooltip=function(){
44
+ var id = 'tt';
45
+ var top = 3;
46
+ var left = 3;
47
+ var maxw = 300;
48
+ var speed = 10;
49
+ var timer = 20;
50
+ var endalpha = 95;
51
+ var alpha = 0;
52
+ var tt,t,c,b,h;
53
+ var ie = document.all ? true : false;
54
+ return{
55
+ show:function(obj, v,w){
56
+ if(tt == null){
57
+ var myDiv = obj;
58
+ tt = document.createElement('div');
59
+ tt.setAttribute('id',id);
60
+ tt.style.top = myDiv.style.top - 50;
61
+ tt.style.left = myDiv.style.left;
62
+ t = document.createElement('div');
63
+ t.setAttribute('id',id + 'top');
64
+ c = document.createElement('div');
65
+ c.setAttribute('id',id + 'cont');
66
+ b = document.createElement('div');
67
+ b.setAttribute('id',id + 'bot');
68
+ tt.appendChild(t);
69
+ tt.appendChild(c);
70
+ tt.appendChild(b);
71
+ document.body.appendChild(tt);
72
+ }
73
+ tt.style.display = 'block';
74
+ c.innerHTML = v;
75
+ tt.style.width = w ? w + 'px' : 'auto';
76
+ if(!w && ie){
77
+ t.style.display = 'none';
78
+ b.style.display = 'none';
79
+ tt.style.width = tt.offsetWidth;
80
+ t.style.display = 'block';
81
+ b.style.display = 'block';
82
+ }
83
+ if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
84
+ h = parseInt(tt.offsetHeight) + top;
85
+ }
86
+ };
87
+ }();" if !$toolTipInserted
88
+ $toolTipInserted = true
89
+
90
+ $driver.executeScript("tooltip.show(#{query})")
91
+ rescue
92
+ end
93
+
94
+ end
95
+
96
+ def Query(discriminator, selector)
97
+
98
+ if(discriminator == :id)
99
+ return "document.getElementById('#{selector}')"
100
+ elsif (discriminator == :name )
101
+ return "document.getElementByName('#{selector}')"
102
+ elsif (discriminator == :xpath)
103
+ return "document.evaluate( '#{selector}', document, null, XPathResult.ANY_TYPE, null ).iterateNext()"
104
+ end
105
+ end
106
+
107
+ #def self.IsObserver()
108
+ # true
109
+ #end
110
+
111
+ end
112
+
113
+ end
114
+ end
@@ -1,7 +1,7 @@
1
1
  module Sapphire
2
- module Observers
2
+ module Plugins
3
3
 
4
- class Highlighter < Observer
4
+ class Highlighter < Plugin
5
5
 
6
6
  def initialize
7
7
 
@@ -1,7 +1,7 @@
1
1
  module Sapphire
2
- module Observers
2
+ module Plugins
3
3
 
4
- class PassedControlHighlighter < Observer
4
+ class PassedControlHighlighter < Plugin
5
5
 
6
6
  def initialize
7
7
 
@@ -1,16 +1,14 @@
1
1
  module Sapphire
2
- module Observers
2
+ module Plugins
3
3
 
4
- class Observer
4
+ class Plugin
5
5
 
6
6
  attr_reader :object
7
7
  attr_reader :method
8
- attr_reader :on_match
9
8
 
10
9
  def observes(hash)
11
10
  @object = hash[:class]
12
11
  @method = hash[:method]
13
- @on_match = hash[:on_match]
14
12
  end
15
13
 
16
14
  def self.observe()
@@ -1,10 +1,10 @@
1
1
  module Sapphire
2
- module Observers
2
+ module Plugins
3
3
 
4
- class ObserverRepository
4
+ class PluginRepository
5
5
 
6
6
  def self.create
7
- @@instance ||= ObserverRepository.new
7
+ @@instance ||= PluginRepository.new
8
8
  end
9
9
 
10
10
  def self.instance
@@ -12,7 +12,7 @@ module Sapphire
12
12
  attr_reader :browser
13
13
 
14
14
  def initialize
15
- @browser = self.Create :ie
15
+ @browser = self.Create ie
16
16
  super(@browser)
17
17
  $driver = MetaBrowser.new(self)
18
18
  end
@@ -2,38 +2,30 @@ module Sapphire
2
2
  module WebAbstractions
3
3
  class Control
4
4
 
5
- attr_reader :found_by_type
6
- attr_reader :found_by_value
5
+ attr_accessor :found_by_type
6
+ attr_accessor :found_by_value
7
7
 
8
8
  def initialize(args)
9
9
  return if args.nil?
10
+ @array = args
10
11
 
11
- hash = {}
12
- hash = args if args.is_a? Hash
13
-
14
- args.each do |item|
15
- hash.merge! item if item.is_a? Hash
16
- end if args.is_a? Array
17
-
18
- @hash = hash
19
- @by = hash.keys.first
20
- @value = hash[hash.keys.first]
21
- @control = hash.fetch :instance if hash.has_key? :instance
22
-
23
- @found_by_type = @by
24
- @found_by_value = @value
12
+ if args.is_a? Hash
13
+ @control = args.fetch :instance if args.has_key? :instance
14
+ @found_by_type = @by
15
+ @found_by_value = @value
16
+ end
25
17
  end
26
18
 
27
19
  def Find(comparator = nil)
28
- @control ||= $driver.FindItemWithWait(@by, @value, comparator)
20
+ @control, @found_by_type, @found_by_value = $driver.FindItemWithWait(@array, comparator) if @control.nil?
29
21
  @control
30
22
  end
31
23
 
32
24
  def FindAll
33
- items = $driver.FindAllItems(@by, @value)
25
+ items, @found_by_type, @found_by_value = $driver.FindAllItems(@array)
34
26
  list = []
35
27
  items.each do |item|
36
- hash = {@by => @value, :instance => item}
28
+ hash = {@found_by_type => @found_by_value, :instance => item}
37
29
  list << Control.new(hash)
38
30
  end
39
31
 
@@ -41,7 +33,7 @@ module Sapphire
41
33
  end
42
34
 
43
35
  def FindWithoutWait(comparator = nil)
44
- $driver.FindItemWithoutWait(@by, @value, comparator)
36
+ $driver.FindItemWithoutWait(@array, comparator)
45
37
  end
46
38
 
47
39
  def Text
@@ -55,12 +47,12 @@ module Sapphire
55
47
  end
56
48
 
57
49
  def MouseOver
58
- if(@by == :id)
59
- $driver.ExecuteScript("document.getElementById('"+ @value +"').style.visibility = 'visible'; ")
60
- elsif (@by == :name)
61
- $driver.ExecuteScript("document.getElementByName('"+ @value +"').style.visibility = 'visible'; ")
62
- elsif (@by == :xpath)
63
- $driver.ExecuteScript("document.evaluate( '" + @value + "', document, null, XPathResult.ANY_TYPE, null ).iterateNext().style.visibility = 'visible'; ")
50
+ if(@found_by_type == :id)
51
+ $driver.ExecuteScript("document.getElementById('"+ @found_by_value +"').style.visibility = 'visible'; ")
52
+ elsif (@found_by_type == :name)
53
+ $driver.ExecuteScript("document.getElementByName('"+ @found_by_value +"').style.visibility = 'visible'; ")
54
+ elsif (@found_by_type == :xpath)
55
+ $driver.ExecuteScript("document.evaluate( '" + @found_by_value + "', document, null, XPathResult.ANY_TYPE, null ).iterateNext().style.visibility = 'visible'; ")
64
56
  end
65
57
 
66
58
  sleep(1)
@@ -45,9 +45,11 @@ module Sapphire
45
45
  end
46
46
 
47
47
  def Clear
48
- if @hash.has_key? :default
49
- self.Set(@hash[:default])
50
- return
48
+ @array.each do |item|
49
+ if item.has_key? :default
50
+ self.Set(item[:default])
51
+ return
52
+ end
51
53
  end
52
54
 
53
55
  raise "no :default set for DropDown"
@@ -1,3 +1,3 @@
1
1
  module Sapphire
2
- VERSION = "0.8.0"
2
+ VERSION = "0.8.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sapphire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-20 00:00:00.000000000Z
12
+ date: 2012-06-23 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: selenium-webdriver
16
- requirement: &21358128 !ruby/object:Gem::Requirement
16
+ requirement: &26772360 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *21358128
24
+ version_requirements: *26772360
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: colorize
27
- requirement: &21357876 !ruby/object:Gem::Requirement
27
+ requirement: &26772108 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *21357876
35
+ version_requirements: *26772108
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: Platform
38
- requirement: &21357624 !ruby/object:Gem::Requirement
38
+ requirement: &26771856 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *21357624
46
+ version_requirements: *26771856
47
47
  description: An automated web acceptance test framework for non-technical resources
48
48
  using selenium-wedriver.
49
49
  email:
@@ -179,14 +179,16 @@ files:
179
179
  - lib/sapphire/Extensions/Symbol.rb
180
180
  - lib/sapphire/Extensions.rb
181
181
  - lib/sapphire/JobAbstractions/Job.rb
182
- - lib/sapphire/Observable.rb
183
- - lib/sapphire/Observers/FailedControlHighlighter.rb
184
- - lib/sapphire/Observers/Highlighter.rb
185
- - lib/sapphire/Observers/Observer.rb
186
- - lib/sapphire/Observers/ObserverRepository.rb
187
- - lib/sapphire/Observers/PassedControlHighlighter.rb
188
- - lib/sapphire/Observers/VerboseObserver.rb
189
- - lib/sapphire/Observers.rb
182
+ - lib/sapphire/Pluggable.rb
183
+ - lib/sapphire/Plugins/Debugging/VerboseObserver.rb
184
+ - lib/sapphire/Plugins/FireBug/FirebugPlugin.rb
185
+ - lib/sapphire/Plugins/Highlighters/FailedControlHighlighter.rb
186
+ - lib/sapphire/Plugins/Highlighters/FailedControlToolTip.rb
187
+ - lib/sapphire/Plugins/Highlighters/Highlighter.rb
188
+ - lib/sapphire/Plugins/Highlighters/PassedControlHighlighter.rb
189
+ - lib/sapphire/Plugins/Plugin.rb
190
+ - lib/sapphire/Plugins/PluginRepository.rb
191
+ - lib/sapphire/Plugins.rb
190
192
  - lib/sapphire/TeamCity/RubyMineReporter.rb
191
193
  - lib/sapphire/TeamCity/TeamCityReporter.rb
192
194
  - lib/sapphire/TeamCity.rb
@@ -1,2 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) +'/Observers/Observer.rb', __FILE__)
2
- Dir[File.dirname(__FILE__) + '/Observers/*.rb'].each {|file| require file }