sapphire 0.5.0 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
data/bin/sapphire CHANGED
File without changes
@@ -2,6 +2,8 @@ module Sapphire
2
2
  module Configuration
3
3
  class SapphireConfig
4
4
 
5
+ attr_reader :wait_time
6
+
5
7
  def initialize
6
8
  @@config = {}
7
9
 
@@ -25,6 +27,7 @@ module Sapphire
25
27
 
26
28
  return DefaultStrategy
27
29
  end
30
+
28
31
  end
29
32
  end
30
33
  end
@@ -0,0 +1,10 @@
1
+ module Sapphire
2
+ module DSL
3
+ module Browser
4
+ def By(value, compare1, compare2)
5
+ return value, compare1, compare2
6
+ end
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,19 @@
1
+ module Sapphire
2
+ module DSL
3
+ module Browser
4
+ def Compare(control1, control2, &block)
5
+ if(control1.is_a? Symbol)
6
+ control1text = GetPageField(control1).Text
7
+ else
8
+ control1text = control1
9
+ end
10
+ if(control2.is_a? Symbol)
11
+ control2text = GetPageField(control2).Text
12
+ else
13
+ control2text = control2
14
+ end
15
+ block.call(control1text, control2text)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ module Sapphire
2
+ module DSL
3
+ module Browser
4
+ def Day(value, compare1, compare2)
5
+ Day.new(value, compare1, compare2)
6
+ end
7
+
8
+ class Day
9
+
10
+ def initialize(value, compare1, compare2)
11
+ @value = value
12
+ @compare1 = compare1
13
+ @compare2 = compare2
14
+ end
15
+
16
+ def Differ()
17
+ return (@compare1 + @value) == @compare2
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ end
24
+
@@ -0,0 +1,19 @@
1
+ module Sapphire
2
+ module DSL
3
+ module Browser
4
+ def Differ(arg)
5
+ return Differ.new(arg)
6
+ end
7
+
8
+ class Differ
9
+ def initialize(arg)
10
+ @arg = arg
11
+ end
12
+
13
+ def execute
14
+ return Evaluation.new(true, @arg.Differ) #args[0] is the value that should be the difference
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -9,7 +9,7 @@ module Sapphire
9
9
  x = field[field_key].Find
10
10
  if(x)
11
11
  begin
12
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
12
+ wait = Selenium::WebDriver::Wait.new(:timeout => 30)
13
13
  result = wait.until { y = x.displayed?
14
14
  y unless y == false
15
15
  }
@@ -0,0 +1,24 @@
1
+ module Sapphire
2
+ module DSL
3
+ module Browser
4
+ def Month(value, compare1, compare2)
5
+ Month.new(value, compare1, compare2)
6
+ end
7
+
8
+ class Month
9
+
10
+ def initialize(value, compare1, compare2)
11
+ @value = value
12
+ @compare1 = compare1
13
+ @compare2 = compare2
14
+ end
15
+
16
+ def Differ()
17
+ return (@compare1 >> @value) == @compare2
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ end
24
+
@@ -0,0 +1,9 @@
1
+ module Sapphire
2
+ module DSL
3
+ module Browser
4
+ def Wait(seconds)
5
+ sleep(seconds)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -19,7 +19,7 @@ class Then
19
19
 
20
20
  def add_and(pre, text, &block)
21
21
  if(!self.value.instance_of? Pending)
22
- x = And.new(self, pre + text, &block)
22
+ x = And.new(self, text, &block)
23
23
  self.and << x
24
24
  else
25
25
  self.and << And.new(self, Pending.new(pre + text), &block)
@@ -4,9 +4,12 @@ module Sapphire
4
4
  class HashStrategy < Strategy
5
5
  def Show(item, modifier)
6
6
  ExecuteHashAgainstControl(item, @page) do |control, arg|
7
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
7
+ wait = Selenium::WebDriver::Wait.new(:timeout => 30)
8
8
  text = wait.until { x = control
9
- x unless (!x.Equals(arg) && x.Equals(""))
9
+ val = x.Equals(arg)
10
+ if (val.left == val.right)
11
+ x
12
+ end
10
13
  }
11
14
 
12
15
  return text.Equals(arg)
@@ -10,7 +10,7 @@ module Sapphire
10
10
  x = field[field_key].Find
11
11
  if(x)
12
12
  begin
13
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
13
+ wait = Selenium::WebDriver::Wait.new(:timeout => 30)
14
14
  result = wait.until { y = modifier.Modify(x.displayed?)
15
15
  y unless y == false
16
16
  }
@@ -34,7 +34,7 @@ module Sapphire
34
34
  field.keys.each do |field_key|
35
35
  if(field_key == item)
36
36
  begin
37
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
37
+ wait = Selenium::WebDriver::Wait.new(:timeout => 30)
38
38
  element = wait.until { x = field[field_key].Find
39
39
  x and modifier.Modify(!x.displayed?)
40
40
  }
@@ -47,10 +47,10 @@ module Sapphire
47
47
  end
48
48
  $stdout.puts ""
49
49
  result.stack.each do |line|
50
- if (!line.include? "sapphire")
50
+ #if (!line.include? "sapphire")
51
51
  Indent(depth+1)
52
52
  $stdout.puts line
53
- end
53
+ #end
54
54
  end
55
55
 
56
56
  end
@@ -7,61 +7,55 @@ module Sapphire
7
7
  end
8
8
 
9
9
  def Find
10
- if(@hash.has_key?(:id))
11
- FindBy :id
12
- elsif (@hash.has_key?(:name))
13
- FindBy :name
14
- elsif (@hash.has_key?(:xpath))
15
- FindBy :xpath
16
- end
17
- end
10
+ masterWait = Selenium::WebDriver::Wait.new(:timeout => 30)
18
11
 
19
- def FindAll
20
- if(@hash.has_key?(:id))
21
- FindAllBy :id
22
- elsif (@hash.has_key?(:name))
23
- FindAllBy :name
24
- elsif (@hash.has_key?(:xpath))
25
- FindAllBy :xpath
26
- end
27
- end
12
+ element = masterWait.until {
13
+ @hash.each do |item|
14
+ wait = Selenium::WebDriver::Wait.new(:timeout => 1)
15
+ begin
16
+ y = wait.until {
17
+ x = @browser.find_element item.keys.first, item.fetch(item.keys.first) if item.is_a? Hash
18
+ x = @browser.find_element item[0], item[1] if item.is_a? Array
19
+ return x if x != nil
20
+ }
21
+ return y if y != nil
22
+ rescue
23
+ end
24
+ end if @hash.is_a? Array
28
25
 
29
- def FindWithoutWait
30
- if(@hash.has_key?(:id))
31
- FindWithoutWaitBy :id
32
- elsif (@hash.has_key?(:name))
33
- FindWithoutWaitBy :name
34
- elsif (@hash.has_key?(:xpath))
35
- FindWithoutWaitBy :xpath
36
- end
26
+ x = @browser.find_element @hash.keys.first, @hash.fetch(@hash.keys.first) if @hash.is_a? Hash
27
+ return x if x != nil
28
+ }
29
+ return element if element != nil
30
+ raise "Could not find control for symbol: " + @hash.to_s
37
31
  end
38
32
 
39
- def FindWithoutWaitBy(symbol)
40
- @browser.find_element symbol, @hash.fetch(symbol)
41
- end
33
+ def FindAll
34
+ masterWait = Selenium::WebDriver::Wait.new(:timeout => 30)
42
35
 
43
- def FindBy(symbol)
44
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
45
- element = wait.until { x = @browser.find_element symbol, @hash.fetch(symbol)
46
- x
47
- }
48
- end
36
+ element = masterWait.until {
37
+ @hash.each do |item|
38
+ wait = Selenium::WebDriver::Wait.new(:timeout => 1)
39
+ begin
40
+ y = wait.until {
41
+ x = @browser.find_elements item.keys.first, item.fetch(item.keys.first) if item.is_a? Hash
42
+ x = @browser.find_elements item[0], item[1] if item.is_a? Array
43
+ return x if x != nil
44
+ }
45
+ return y if y != nil
46
+ rescue
47
+ end
48
+ end if @hash.is_a? Array
49
49
 
50
- def FindAllBy(symbol)
51
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
52
- element = wait.until { x = @browser.find_elements symbol, @hash.fetch(symbol)
53
- x unless x.count == 0
54
- }
50
+ x = @browser.find_elements @hash.keys.first, @hash.fetch(@hash.keys.first) if @hash.is_a? Hash
51
+ return x if x != nil
52
+ }
53
+ return element if element != nil
54
+ raise "Could not find control for symbol: " + @hash.to_s
55
55
  end
56
56
 
57
- def FindParent(hash)
58
- if(hash.has_key?(:id))
59
- @browser.find_element :id, hash.fetch(:id)
60
- elsif (hash.has_key?(:name))
61
- @browser.find_element :name, hash.fetch(:name)
62
- elsif (hash.has_key?(:xpath))
63
- @browser.find_element :xpath, hash.fetch(:xpath)
64
- end
57
+ def FindWithoutWait
58
+ @browser.find_element @hash[0].keys.first, @hash[0].fetch(@hash[0].keys.first)
65
59
  end
66
60
 
67
61
  def Text
@@ -75,13 +69,24 @@ module Sapphire
75
69
  end
76
70
 
77
71
  def MouseOver
78
- if(@hash.has_key?(:id))
79
- @browser.execute_script("document.getElementById('"+ @hash.fetch(:id) +"').style.visibility = 'visible'; ")
80
- elsif (@hash.has_key?(:name))
81
- @browser.execute_script("document.getElementById('"+ @hash.fetch(:name) +"').style.visibility = 'visible'; ")
82
- elsif (@hash.has_key?(:xpath))
83
- @browser.execute_script("document.evaluate( '" + @hash.fetch(:xpath) + "', document, null, XPathResult.ANY_TYPE, null ).iterateNext().style.visibility = 'visible'; ")
72
+ if @hash.is_a? Hash
73
+ if(@hash.has_key?(:id))
74
+ @browser.execute_script("document.getElementById('"+ @hash.fetch(:id) +"').style.visibility = 'visible'; ")
75
+ elsif (@hash.has_key?(:name))
76
+ @browser.execute_script("document.getElementByName('"+ @hash.fetch(:name) +"').style.visibility = 'visible'; ")
77
+ elsif (@hash.has_key?(:xpath))
78
+ @browser.execute_script("document.evaluate( '" + @hash.fetch(:xpath) + "', document, null, XPathResult.ANY_TYPE, null ).iterateNext().style.visibility = 'visible'; ")
79
+ end
80
+ elsif @hash.is_a? Array
81
+ if(@hash[0].has_key?(:id))
82
+ @browser.execute_script("document.getElementById('"+ @hash[0].fetch(:id) +"').style.visibility = 'visible'; ")
83
+ elsif (@hash[0].has_key?(:name))
84
+ @browser.execute_script("document.getElementByName('"+ @hash[0].fetch(:name) +"').style.visibility = 'visible'; ")
85
+ elsif (@hash[0].has_key?(:xpath))
86
+ @browser.execute_script("document.evaluate( '" + @hash[0].fetch(:xpath) + "', document, null, XPathResult.ANY_TYPE, null ).iterateNext().style.visibility = 'visible'; ")
87
+ end
84
88
  end
89
+
85
90
  sleep(1)
86
91
  end
87
92
 
@@ -92,4 +97,3 @@ module Sapphire
92
97
  end
93
98
  end
94
99
 
95
-
@@ -14,42 +14,49 @@ module Sapphire
14
14
  end
15
15
 
16
16
  def DropDown(*args)
17
- @fields << { args.first => DropDown.new(@browser, args[1]) }
17
+ @fields << { args.first => DropDown.new(@browser, args[1..args.length]) }
18
18
  end
19
19
 
20
20
  def TextBox(*args)
21
- @fields << { args.first => TextBox.new(@browser, args[1]) }
21
+ @fields << { args.first => TextBox.new(@browser, args[1..args.length]) }
22
22
  end
23
23
 
24
24
  def RadioButton(*args)
25
- @fields << { args.first => RadioButton.new(@browser, args[1]) }
25
+ @fields << { args.first => RadioButton.new(@browser, args[1..args.length]) }
26
26
  end
27
27
 
28
28
  def CheckBox(*args)
29
- @fields << { args.first => CheckBox.new(@browser, args[1]) }
29
+ @fields << { args.first => CheckBox.new(@browser, args[1..args.length]) }
30
30
  end
31
31
 
32
32
  def Button(*args)
33
- @fields << { args.first => Button.new(@browser, args[1]) }
33
+ @fields << { args.first => Button.new(@browser, args[1..args.length]) }
34
34
  end
35
35
 
36
36
  def Label(*args)
37
- @fields << { args.first => Label.new(@browser, args[1]) }
37
+ @fields << { args.first => Label.new(@browser, args[1..args.length]) }
38
38
  end
39
39
 
40
40
  def Image(*args)
41
- @fields << { args.first => Image.new(@browser, args[1]) }
41
+ @fields << { args.first => Image.new(@browser, args[1..args.length]) }
42
42
  end
43
43
 
44
44
  def Hyperlink(*args)
45
- @fields << { args.first => Hyperlink.new(@browser, args[1]) }
45
+ @fields << { args.first => Hyperlink.new(@browser, args[1..args.length]) }
46
46
  end
47
47
 
48
48
  def List(*args)
49
- @fields << { args.first => List.new(@browser, args[1]) }
49
+ @fields << { args.first => List.new(@browser, args[1..args.length]) }
50
+ end
51
+
52
+ def Date(*args)
53
+ @fields << { args.first => Date.new(@browser, args[1..args.length]) }
54
+ end
55
+
56
+ def Date(*args)
57
+ @fields << { args.first => Date.new(@browser, args[1]) }
50
58
  end
51
59
 
52
60
  end
53
61
  end
54
62
  end
55
-
@@ -30,7 +30,7 @@ module Sapphire
30
30
  end
31
31
 
32
32
  def CurrentUrl
33
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
33
+ wait = Selenium::WebDriver::Wait.new(:timeout => 30)
34
34
  url = wait.until { x = self.current_url
35
35
  x unless x == nil
36
36
  }
@@ -49,7 +49,7 @@ module Sapphire
49
49
  nav = page
50
50
  end
51
51
 
52
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
52
+ wait = Selenium::WebDriver::Wait.new(:timeout => 30)
53
53
  found = wait.until {
54
54
  x = self.CurrentUrl.upcase.start_with?("HTTP://" + nav.Url.upcase) || self.CurrentUrl.upcase.start_with?("HTTPS://" + nav.Url.upcase)
55
55
  if(x == false)
@@ -0,0 +1,12 @@
1
+ module Sapphire
2
+ module WebAbstractions
3
+ class Date < Control
4
+
5
+ def Text
6
+ control = self.Find
7
+ return DateTime.strptime(control.text, "%m/%d/%Y %H:%M:%S %p").to_date
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -18,8 +18,8 @@ module Sapphire
18
18
  def Set(value)
19
19
  text = self.Find
20
20
  options = text.find_elements(:tag_name, "option")
21
- selection = options.find{|o| o.text == value}
22
- raise "could not find the value " + value if selection.nil?
21
+ selection = options.find{|o| o.text == value.to_s}
22
+ raise "could not find the value " + value.to_s if selection.nil?
23
23
  selection.click
24
24
  end
25
25
  end
@@ -2,7 +2,7 @@ module Sapphire
2
2
  module WebAbstractions
3
3
  class Hyperlink < Control
4
4
 
5
- end
5
+ end
6
6
  end
7
7
  end
8
8
 
@@ -1,3 +1,3 @@
1
1
  module Sapphire
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.2"
3
3
  end
metadata CHANGED
@@ -1,68 +1,58 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sapphire
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 5
8
- - 0
9
- version: 0.5.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.2
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Marcus Bratton
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-10-08 00:00:00 -05:00
18
- default_executable: sapphire
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-10-24 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: selenium-webdriver
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- version: "0"
16
+ requirement: &10052256 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
30
22
  type: :runtime
31
- version_requirements: *id001
32
- - !ruby/object:Gem::Dependency
33
- name: colorize
34
23
  prerelease: false
35
- requirement: &id002 !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- segments:
40
- - 0
41
- version: "0"
24
+ version_requirements: *10052256
25
+ - !ruby/object:Gem::Dependency
26
+ name: colorize
27
+ requirement: &10052004 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
42
33
  type: :runtime
43
- version_requirements: *id002
44
- - !ruby/object:Gem::Dependency
45
- name: Platform
46
34
  prerelease: false
47
- requirement: &id003 !ruby/object:Gem::Requirement
48
- requirements:
49
- - - ">="
50
- - !ruby/object:Gem::Version
51
- segments:
52
- - 0
53
- version: "0"
35
+ version_requirements: *10052004
36
+ - !ruby/object:Gem::Dependency
37
+ name: Platform
38
+ requirement: &10051752 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
54
44
  type: :runtime
55
- version_requirements: *id003
56
- description: An automated web acceptance test framework for non-technical resources using selenium-wedriver.
57
- email:
45
+ prerelease: false
46
+ version_requirements: *10051752
47
+ description: An automated web acceptance test framework for non-technical resources
48
+ using selenium-wedriver.
49
+ email:
58
50
  - marcus.bratton@gmail.com
59
- executables:
51
+ executables:
60
52
  - sapphire
61
53
  extensions: []
62
-
63
54
  extra_rdoc_files: []
64
-
65
- files:
55
+ files:
66
56
  - lib/sapphire/CommandLine.rb
67
57
  - lib/sapphire/Configuration/AppConfig.rb
68
58
  - lib/sapphire/Configuration/AttrMethods.rb
@@ -75,12 +65,16 @@ files:
75
65
  - lib/sapphire/DSL/Browser/Accept.rb
76
66
  - lib/sapphire/DSL/Browser/AlertBox.rb
77
67
  - lib/sapphire/DSL/Browser/Browser.rb
68
+ - lib/sapphire/DSL/Browser/By.rb
78
69
  - lib/sapphire/DSL/Browser/Check.rb
79
70
  - lib/sapphire/DSL/Browser/Clear.rb
80
71
  - lib/sapphire/DSL/Browser/Click.rb
81
72
  - lib/sapphire/DSL/Browser/Close.rb
73
+ - lib/sapphire/DSL/Browser/Compare.rb
82
74
  - lib/sapphire/DSL/Browser/Complete.rb
83
75
  - lib/sapphire/DSL/Browser/CurrentUrl.rb
76
+ - lib/sapphire/DSL/Browser/Day.rb
77
+ - lib/sapphire/DSL/Browser/Differ.rb
84
78
  - lib/sapphire/DSL/Browser/Disable.rb
85
79
  - lib/sapphire/DSL/Browser/Error.rb
86
80
  - lib/sapphire/DSL/Browser/ExecuteAgainstControl.rb
@@ -90,7 +84,7 @@ files:
90
84
  - lib/sapphire/DSL/Browser/IsHidden.rb
91
85
  - lib/sapphire/DSL/Browser/IsVisible.rb
92
86
  - lib/sapphire/DSL/Browser/Keys/Enter.rb
93
- - lib/sapphire/DSL/Browser/List.rb
87
+ - lib/sapphire/DSL/Browser/Month.rb
94
88
  - lib/sapphire/DSL/Browser/MouseOver.rb
95
89
  - lib/sapphire/DSL/Browser/Navigate.rb
96
90
  - lib/sapphire/DSL/Browser/Not.rb
@@ -107,6 +101,7 @@ files:
107
101
  - lib/sapphire/DSL/Browser/Transition.rb
108
102
  - lib/sapphire/DSL/Browser/Uncheck.rb
109
103
  - lib/sapphire/DSL/Browser/Virtually.rb
104
+ - lib/sapphire/DSL/Browser/Wait.rb
110
105
  - lib/sapphire/DSL/Browser/With.rb
111
106
  - lib/sapphire/DSL/Configuration/ConfiguredBrowser.rb
112
107
  - lib/sapphire/DSL/Configuration/ConfiguredUser.rb
@@ -171,44 +166,40 @@ files:
171
166
  - lib/sapphire/WebAbstractions/Controls/Browsers/InternetExplorer.rb
172
167
  - lib/sapphire/WebAbstractions/Controls/Button.rb
173
168
  - lib/sapphire/WebAbstractions/Controls/CheckBox.rb
169
+ - lib/sapphire/WebAbstractions/Controls/Date.rb
174
170
  - lib/sapphire/WebAbstractions/Controls/DropDown.rb
175
171
  - lib/sapphire/WebAbstractions/Controls/Hyperlink.rb
176
172
  - lib/sapphire/WebAbstractions/Controls/Image.rb
177
173
  - lib/sapphire/WebAbstractions/Controls/Label.rb
174
+ - lib/sapphire/WebAbstractions/Controls/List.rb
178
175
  - lib/sapphire/WebAbstractions/Controls/RadioButton.rb
179
176
  - lib/sapphire/WebAbstractions/Controls/TableCell.rb
180
177
  - lib/sapphire/WebAbstractions/Controls/TextBox.rb
181
178
  - lib/sapphire/WebAbstractions/Controls/Title.rb
182
179
  - lib/sapphire.rb
183
- has_rdoc: true
180
+ - bin/sapphire
184
181
  homepage: http://github.com/MarcusTheBold/Sapphire/
185
182
  licenses: []
186
-
187
183
  post_install_message:
188
184
  rdoc_options: []
189
-
190
- require_paths:
185
+ require_paths:
191
186
  - lib
192
- required_ruby_version: !ruby/object:Gem::Requirement
193
- requirements:
194
- - - ">="
195
- - !ruby/object:Gem::Version
196
- segments:
197
- - 0
198
- version: "0"
199
- required_rubygems_version: !ruby/object:Gem::Requirement
200
- requirements:
201
- - - ">="
202
- - !ruby/object:Gem::Version
203
- segments:
204
- - 0
205
- version: "0"
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ! '>='
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ required_rubygems_version: !ruby/object:Gem::Requirement
194
+ none: false
195
+ requirements:
196
+ - - ! '>='
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
206
199
  requirements: []
207
-
208
200
  rubyforge_project:
209
- rubygems_version: 1.3.6
201
+ rubygems_version: 1.8.5
210
202
  signing_key:
211
203
  specification_version: 3
212
204
  summary: An automated web acceptance test framework for non-technical resources
213
205
  test_files: []
214
-