lebowski 0.3.3.pre.0 → 0.4.0
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.
- data/History.md +8 -0
- data/bin/lebowski-spec +1 -1
- data/bin/lebowski-start-server +188 -10
- data/lib/lebowski/foundation/application.rb +16 -1
- data/lib/lebowski/foundation/mixins/list_item_view_support.rb +1 -1
- data/lib/lebowski/foundation/mixins/stall_support.rb +2 -6
- data/lib/lebowski/foundation/mixins/user_actions.rb +8 -5
- data/lib/lebowski/foundation/panes/alert.rb +3 -7
- data/lib/lebowski/foundation/panes/menu.rb +11 -42
- data/lib/lebowski/foundation/views/checkbox.rb +1 -13
- data/lib/lebowski/foundation/views/label.rb +4 -0
- data/lib/lebowski/foundation/views/menu_item.rb +4 -0
- data/lib/lebowski/foundation/views/radio.rb +28 -3
- data/lib/lebowski/foundation/views/segmented.rb +6 -1
- data/lib/lebowski/foundation/views/select_button.rb +4 -4
- data/lib/lebowski/foundation/views/select_field.rb +2 -1
- data/lib/lebowski/foundation/views/support/simple_item_array.rb +7 -18
- data/lib/lebowski/runtime/sprout_core_extensions.rb +11 -10
- data/lib/lebowski/version.rb +2 -2
- data/resources/user-extensions.js +43 -14
- metadata +34 -167
- data/Gemfile +0 -12
- data/License.txt +0 -20
- data/Rakefile +0 -58
- data/resources/README +0 -1
- data/resources/selenium-server.jar +0 -0
- data/spec/spec_helper.rb +0 -1
data/History.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# lebowski 0.4.0 August 16, 2011
|
2
|
+
|
3
|
+
* Updated all foundation SC proxies to work with SC 1.5 and 1.6
|
4
|
+
* Changed the gem build process. Now using the lebowski.gemspec file. No longer use Jeweler
|
5
|
+
* Removed Selenium 1 dependency. Now uses Selenium 2
|
6
|
+
* Fixed the user-extensions.js file to allow Lebowski to work with SC 1.5 and SC 1.6
|
7
|
+
* Updated various spec files in the examples folder
|
8
|
+
|
1
9
|
# lebowski 0.3.3.pre.0 March 13, 2011
|
2
10
|
|
3
11
|
* Initial Fixes to allow Lebowski to work with IE 7/8. Updates made to user-extensions.js file
|
data/bin/lebowski-spec
CHANGED
data/bin/lebowski-start-server
CHANGED
@@ -4,21 +4,199 @@
|
|
4
4
|
# Executable to start the selenium server that will automically include
|
5
5
|
# the required extension file
|
6
6
|
#
|
7
|
+
# To get help use the -h or --help option:
|
8
|
+
#
|
9
|
+
# lebowski-start-server -h
|
10
|
+
#
|
11
|
+
|
12
|
+
# TODO: Put this together quickly. Needs to be refactored at some point.
|
13
|
+
|
14
|
+
require 'open-uri'
|
15
|
+
require 'optparse'
|
7
16
|
|
17
|
+
SELENIUM_NAME = 'Selenium'
|
18
|
+
SELENIUM_VERSION = '2.3.0'
|
19
|
+
SELENIUM_JAR = "selenium-server-standalone-#{SELENIUM_VERSION}.jar"
|
20
|
+
SELENIUM_DOMAIN = 'http://selenium.googlecode.com'
|
21
|
+
SELENIUM_JAR_URL = "#{SELENIUM_DOMAIN}/files/#{SELENIUM_JAR}"
|
22
|
+
LEBOWSKI_PATH = File.join(Dir.home, ".lebowski")
|
23
|
+
SELENIUM_JAR_PATH = File.join(LEBOWSKI_PATH, SELENIUM_JAR)
|
24
|
+
ERROR_MSG_PREFIX = "Unable to run lebowski-server. "
|
8
25
|
DEFAULT_SELENIUM_SERVER_PORT = 4444
|
26
|
+
USER_EXTENTIONS_FILE = 'user-extensions.js'
|
27
|
+
RESOURCES_DIR_PATH = File.expand_path(File.join(File.dirname(__FILE__), %w[.. resources]))
|
28
|
+
USER_EXTENTIONS_PATH = File.join(RESOURCES_DIR_PATH, USER_EXTENTIONS_FILE)
|
29
|
+
|
30
|
+
$selenium_args = []
|
31
|
+
$verbose = false
|
32
|
+
$help = false
|
33
|
+
$selenium_server_help = false
|
34
|
+
$selenium_jar = nil
|
35
|
+
$port = DEFAULT_SELENIUM_SERVER_PORT
|
36
|
+
|
37
|
+
$optparser = OptionParser.new do |o|
|
38
|
+
o.banner = <<BANNER
|
39
|
+
Usage: lebowski-start-server [options]
|
40
|
+
|
41
|
+
To pass options on to the selenium server, prefix each option with --S. If an
|
42
|
+
option requires an argument then use = to specify the argument.
|
43
|
+
Example: lebowski-start-server --Sinteractive --Stimeout=1000
|
9
44
|
|
10
|
-
|
45
|
+
BANNER
|
11
46
|
|
12
|
-
|
13
|
-
|
47
|
+
o.on('-p ARG', '--port=ARG', "Specify the server port. Default is #{DEFAULT_SELENIUM_SERVER_PORT}", Integer) do |val|
|
48
|
+
$port = val
|
49
|
+
end
|
50
|
+
|
51
|
+
o.on('-s ARG', '--selenium-jar=ARG', "Specify a path to the Selenium JAR") do |val|
|
52
|
+
$selenium_jar = File.expand_path val
|
53
|
+
end
|
54
|
+
|
55
|
+
o.on('-v', '--verbose', "Turn on verbose mode") do |val|
|
56
|
+
$verbose = true
|
57
|
+
end
|
58
|
+
|
59
|
+
o.on(nil, '--selenium-help', "Show Selenium server help") do |val|
|
60
|
+
$selenium_server_help = true
|
61
|
+
end
|
62
|
+
|
63
|
+
o.on('-h', '--help', "Show help") do |val|
|
64
|
+
$help = true
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
def verbose(msg, newline=true)
|
70
|
+
return if not $verbose
|
71
|
+
|
72
|
+
if newline
|
73
|
+
puts msg
|
74
|
+
else
|
75
|
+
print msg
|
76
|
+
end
|
14
77
|
end
|
15
78
|
|
16
|
-
|
17
|
-
puts "
|
18
|
-
|
79
|
+
def error(msg)
|
80
|
+
puts "#{ERROR_MSG_PREFIX} #{msg}"
|
81
|
+
end
|
82
|
+
|
83
|
+
def setup_selenium
|
84
|
+
|
85
|
+
if not $selenium_jar.nil?
|
86
|
+
if File.directory? $selenium_jar
|
87
|
+
error "-s requires path to file"
|
88
|
+
return false
|
89
|
+
elsif File.file? $selenium_jar
|
90
|
+
verbose "Detected Selenium server at #{$selenium_jar}"
|
91
|
+
return true
|
92
|
+
else
|
93
|
+
error "Could not detect Selenium server at #{$selenium_jar}"
|
94
|
+
return false
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
if File.file? SELENIUM_JAR_PATH
|
99
|
+
verbose "Detected Selenium."
|
100
|
+
$selenium_jar = SELENIUM_JAR_PATH
|
101
|
+
return true
|
102
|
+
end
|
103
|
+
|
104
|
+
puts "Could not detect Selenium server. Required by Lebowski to function."
|
105
|
+
puts "Continue by downloading Selenium server? Enter 'yes' to download."
|
106
|
+
print "> "
|
107
|
+
result = STDIN.gets
|
108
|
+
|
109
|
+
if result.chomp != 'yes'
|
110
|
+
puts "Selenium server can be download from #{SELENIUM_DOMAIN}"
|
111
|
+
return false
|
112
|
+
end
|
113
|
+
|
114
|
+
verbose "Checking if #{LEBOWSKI_PATH} exists... ", false
|
115
|
+
if not Dir.exists? LEBOWSKI_PATH
|
116
|
+
verbose "Does not exist. Creating."
|
117
|
+
Dir.mkdir LEBOWSKI_PATH
|
118
|
+
else
|
119
|
+
verbose "Exists."
|
120
|
+
end
|
121
|
+
|
122
|
+
puts "Downloading Selenium server v#{SELENIUM_VERSION} from #{SELENIUM_DOMAIN}..."
|
19
123
|
|
20
|
-
|
21
|
-
|
22
|
-
|
124
|
+
stream = nil
|
125
|
+
begin
|
126
|
+
stream = open(SELENIUM_JAR_URL)
|
127
|
+
puts "Selenium server download successfully."
|
128
|
+
rescue Exception
|
129
|
+
error "Error trying to download Selenium server"
|
130
|
+
return false
|
131
|
+
end
|
132
|
+
|
133
|
+
begin
|
134
|
+
selenium = File.new(SELENIUM_JAR_PATH, 'wb')
|
135
|
+
selenium.write stream.read
|
136
|
+
selenium.flush
|
137
|
+
selenium.close
|
138
|
+
rescue Exception
|
139
|
+
error "Error trying to create Selenium server"
|
140
|
+
return false
|
141
|
+
end
|
142
|
+
|
143
|
+
$selenium_jar = SELENIUM_JAR_PATH
|
144
|
+
|
145
|
+
return true
|
146
|
+
|
147
|
+
end
|
148
|
+
|
149
|
+
def process_options
|
150
|
+
|
151
|
+
args = []
|
152
|
+
|
153
|
+
# Pre-process command arguments
|
154
|
+
ARGV.each do |arg|
|
155
|
+
matches = arg.match(/--S(.+)($|=(.+))/)
|
156
|
+
if not matches.nil?
|
157
|
+
$selenium_args << "-" + matches[1]
|
158
|
+
if not matches[3].nil?
|
159
|
+
$selenium_args << matches[3]
|
160
|
+
end
|
161
|
+
else
|
162
|
+
args << arg
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
begin
|
167
|
+
$optparser.parse args
|
168
|
+
rescue Exception => e
|
169
|
+
error e.to_s
|
170
|
+
return false
|
171
|
+
end
|
172
|
+
|
173
|
+
return true
|
174
|
+
|
175
|
+
end
|
176
|
+
|
177
|
+
def run_selenium_server
|
178
|
+
$selenium_args << '-port'
|
179
|
+
$selenium_args << $port.to_s
|
180
|
+
$selenium_args << '-help' if $selenium_server_help
|
181
|
+
|
182
|
+
puts "Running Selenium Server v#{SELENIUM_VERSION} for Lebowski"
|
183
|
+
puts "Starting server on http://localhost:#{$port}"
|
184
|
+
puts "To quit server, press Control-C"
|
185
|
+
|
186
|
+
exec 'java', '-jar', $selenium_jar, '-userExtensions', USER_EXTENTIONS_PATH, *$selenium_args
|
187
|
+
end
|
188
|
+
|
189
|
+
def main
|
190
|
+
|
191
|
+
return if not process_options
|
192
|
+
|
193
|
+
if $help
|
194
|
+
puts $optparser.to_s
|
195
|
+
return
|
196
|
+
end
|
197
|
+
|
198
|
+
run_selenium_server if setup_selenium
|
199
|
+
|
200
|
+
end
|
23
201
|
|
24
|
-
|
202
|
+
main
|
@@ -57,6 +57,10 @@ module Lebowski
|
|
57
57
|
return self['$SC.RootResponder.responder.keyPane', expected_type]
|
58
58
|
end
|
59
59
|
|
60
|
+
def menu_pane(expected_type=nil)
|
61
|
+
return self['$SC.RootResponder.responder.menuPane', expected_type]
|
62
|
+
end
|
63
|
+
|
60
64
|
def responding_panes()
|
61
65
|
if @responding_panes.nil?
|
62
66
|
@responding_panes = ObjectArray.new self, '$SC.RootResponder.responder.panes'
|
@@ -236,6 +240,9 @@ module Lebowski
|
|
236
240
|
SAFARI = '*safari'
|
237
241
|
FIREFOX = '*firefox'
|
238
242
|
CHROME = '*chrome'
|
243
|
+
IEXPLORER = '*iexplore'
|
244
|
+
IEHTA = '*iehta'
|
245
|
+
GOOGLECHROME = '*googlechrome'
|
239
246
|
|
240
247
|
DEFAULT_BROWSER = FIREFOX
|
241
248
|
DEFAULT_SELENIUM_SERVER_HOST = 'localhost'
|
@@ -424,7 +431,9 @@ module Lebowski
|
|
424
431
|
def get_application_base_url(params)
|
425
432
|
client = get_selenium_client(params)
|
426
433
|
return client.browser_url if (not client.nil?)
|
427
|
-
|
434
|
+
host = get_app_server_host(params)
|
435
|
+
host = "http://#{host}" if not host =~ /^http(|s):\/\//
|
436
|
+
return "#{host}:#{get_app_server_port(params)}"
|
428
437
|
end
|
429
438
|
|
430
439
|
def get_session_id(params)
|
@@ -448,6 +457,12 @@ module Lebowski
|
|
448
457
|
return SAFARI
|
449
458
|
when :chrome
|
450
459
|
return CHROME
|
460
|
+
when :iexplorer
|
461
|
+
return IEXPLORER
|
462
|
+
when :iehta
|
463
|
+
return IEHTA
|
464
|
+
when :googlechrome
|
465
|
+
return GOOGLECHROME
|
451
466
|
else
|
452
467
|
return DEFAULT_BROWSER
|
453
468
|
end
|
@@ -16,13 +16,9 @@ module Lebowski
|
|
16
16
|
#
|
17
17
|
module StallSupport
|
18
18
|
|
19
|
-
DEFAULT_STALL = 0
|
19
|
+
DEFAULT_STALL = 0
|
20
20
|
|
21
|
-
DEFAULT_KEY_STALLS = {
|
22
|
-
:click => 0.2,
|
23
|
-
:double_click => 0.5,
|
24
|
-
:select => 0.5
|
25
|
-
}
|
21
|
+
DEFAULT_KEY_STALLS = {}
|
26
22
|
|
27
23
|
@@adjusted_default_stall = DEFAULT_STALL
|
28
24
|
|
@@ -232,23 +232,26 @@ module Lebowski
|
|
232
232
|
@driver.sc_disable_all_autoscrolling
|
233
233
|
|
234
234
|
mouse_down_at mouse_offset_x, mouse_offset_y
|
235
|
+
|
236
|
+
# Need to incoporate an intentional sleep so sproutcore
|
237
|
+
# has enough time to do its thing
|
238
|
+
sleep 0.2
|
239
|
+
|
235
240
|
mouse_move_at mouse_offset_x, mouse_offset_y
|
236
|
-
|
241
|
+
|
237
242
|
# Make sure the element we are dragging relative to is visible
|
238
243
|
relative_to.scroll_to_visible if relative_to.kind_of? PositionedElement
|
239
244
|
|
240
245
|
rel_pos = relative_position(x, y, relative_to)
|
241
246
|
mouse_move_at rel_pos.x, rel_pos.y
|
242
|
-
|
247
|
+
|
243
248
|
rel_pos = relative_position(x, y, relative_to)
|
244
249
|
mouse_up_at rel_pos.x, rel_pos.y
|
245
|
-
|
250
|
+
|
246
251
|
# Enable autoscrolling and mouse move events since we have completed the
|
247
252
|
# drag and drop operation
|
248
253
|
@driver.sc_enable_all_autoscrolling
|
249
254
|
@driver.sc_enable_mouse_move_event
|
250
|
-
|
251
|
-
stall :drag
|
252
255
|
end
|
253
256
|
|
254
257
|
def drag_to(source, offset_x=nil, offset_y=nil, *params)
|
@@ -6,10 +6,6 @@
|
|
6
6
|
module Lebowski
|
7
7
|
module Foundation
|
8
8
|
|
9
|
-
SC_BUTTON1_STATUS = 'button1'
|
10
|
-
SC_BUTTON2_STATUS = 'button2'
|
11
|
-
SC_BUTTON3_STATUS = 'button3'
|
12
|
-
|
13
9
|
module Panes
|
14
10
|
|
15
11
|
#
|
@@ -35,9 +31,9 @@ module Lebowski
|
|
35
31
|
|
36
32
|
ALERT_PROPERTY_TYPE = 'icon'
|
37
33
|
|
38
|
-
BUTTON_ONE = '
|
39
|
-
BUTTON_TWO = '
|
40
|
-
BUTTON_THREE = '
|
34
|
+
BUTTON_ONE = 'button1'
|
35
|
+
BUTTON_TWO = 'button2'
|
36
|
+
BUTTON_THREE = 'button3'
|
41
37
|
|
42
38
|
BUTTONS = [BUTTON_ONE, BUTTON_TWO, BUTTON_THREE]
|
43
39
|
|
@@ -19,6 +19,10 @@ module Lebowski
|
|
19
19
|
return @menu_items
|
20
20
|
end
|
21
21
|
|
22
|
+
def click_item(title)
|
23
|
+
menu_items.click title
|
24
|
+
end
|
25
|
+
|
22
26
|
protected
|
23
27
|
|
24
28
|
def create_menu_item_array()
|
@@ -33,15 +37,16 @@ module Lebowski
|
|
33
37
|
include Lebowski
|
34
38
|
|
35
39
|
def initialize(parent, *params)
|
36
|
-
super(parent, '
|
40
|
+
super(parent, 'items', 'length', *params)
|
41
|
+
@itemTitleKey = @parent['itemTitleKey']
|
37
42
|
end
|
38
43
|
|
39
44
|
def click(title)
|
40
45
|
menu_item = nil
|
41
46
|
if title.kind_of? String
|
42
|
-
menu_item = find_first({
|
47
|
+
menu_item = find_first({ @itemTitleKey => /^#{title}$/i })
|
43
48
|
elsif title.kind_of? Regexp
|
44
|
-
menu_item = find_first({
|
49
|
+
menu_item = find_first({ @itemTitleKey => title })
|
45
50
|
else
|
46
51
|
raise ArgumentInvalidTypeError.new "title", title, String, Regexp
|
47
52
|
end
|
@@ -50,45 +55,9 @@ module Lebowski
|
|
50
55
|
|
51
56
|
protected
|
52
57
|
|
53
|
-
def
|
54
|
-
|
55
|
-
|
56
|
-
@title_flag = :no_flag
|
57
|
-
|
58
|
-
filter.each do |key, value|
|
59
|
-
case key
|
60
|
-
when :title
|
61
|
-
@title_flag = value
|
62
|
-
else
|
63
|
-
processed_filter[key] = value
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
return processed_filter
|
68
|
-
end
|
69
|
-
|
70
|
-
def find_indexes_process_indexes(indexes)
|
71
|
-
processed_indexes = []
|
72
|
-
|
73
|
-
indexes.each do |index|
|
74
|
-
if @title_flag != :no_flag
|
75
|
-
next if (not menu_item_has_title?(index, @title_flag))
|
76
|
-
end
|
77
|
-
|
78
|
-
processed_indexes << index
|
79
|
-
end
|
80
|
-
|
81
|
-
return processed_indexes
|
82
|
-
end
|
83
|
-
|
84
|
-
private
|
85
|
-
|
86
|
-
def menu_item_has_title?(index, title)
|
87
|
-
menu_item = self[index]
|
88
|
-
@valueKey = @parent['itemTitleKey'] if @valueKey.nil?
|
89
|
-
value = menu_item["content.#{@valueKey}"]
|
90
|
-
return (value =~ title).kind_of?(Integer) if title.kind_of?(Regexp)
|
91
|
-
return (value == title)
|
58
|
+
def create_object(index, expected_type=nil)
|
59
|
+
rel_path = "_menuView.childViews.#{index}"
|
60
|
+
return @parent[rel_path, expected_type]
|
92
61
|
end
|
93
62
|
|
94
63
|
end
|
@@ -16,19 +16,7 @@ module Lebowski
|
|
16
16
|
|
17
17
|
# A value the view's isSelected property can return other than a boolean value
|
18
18
|
MIXED_STATE = '__MIXED__'
|
19
|
-
|
20
|
-
#
|
21
|
-
# @override
|
22
|
-
#
|
23
|
-
# Need to perform a basic click so that the view will respond correctly
|
24
|
-
#
|
25
|
-
def click()
|
26
|
-
mouse_down
|
27
|
-
mouse_up
|
28
|
-
basic_click
|
29
|
-
stall :click
|
30
|
-
end
|
31
|
-
|
19
|
+
|
32
20
|
def deselect()
|
33
21
|
if in_mixed_state?
|
34
22
|
click
|
@@ -20,13 +20,38 @@ module Lebowski
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def buttons()
|
23
|
-
if @items.nil?
|
24
|
-
@items = Support::SimpleItemArray.new self, '.sc-radio-button'
|
25
|
-
end
|
23
|
+
@items = create_simple_item_array if @items.nil?
|
26
24
|
return @items
|
27
25
|
end
|
28
26
|
|
27
|
+
protected
|
28
|
+
|
29
|
+
def create_simple_item_array()
|
30
|
+
return Support::RadioViewItemArray.new self
|
31
|
+
end
|
32
|
+
|
29
33
|
end
|
34
|
+
|
35
|
+
module Support
|
36
|
+
|
37
|
+
class RadioViewItemArray < SimpleItemArray
|
38
|
+
|
39
|
+
SELECTOR = '.sc-radio-button'
|
40
|
+
|
41
|
+
def click_with_index(value)
|
42
|
+
cq = @parent.core_query(SELECTOR)
|
43
|
+
cq[value].mouse_down
|
44
|
+
cq.done
|
45
|
+
|
46
|
+
cq = @parent.core_query(SELECTOR)
|
47
|
+
cq[value].mouse_up
|
48
|
+
cq.done
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
30
55
|
end
|
31
56
|
end
|
32
57
|
end
|
@@ -30,7 +30,7 @@ module Lebowski
|
|
30
30
|
protected
|
31
31
|
|
32
32
|
def create_simple_item_array()
|
33
|
-
return Support::SegmentItemArray.new self
|
33
|
+
return Support::SegmentItemArray.new self
|
34
34
|
end
|
35
35
|
|
36
36
|
end
|
@@ -81,6 +81,11 @@ module Lebowski
|
|
81
81
|
item = self[index]
|
82
82
|
item.deselect
|
83
83
|
end
|
84
|
+
|
85
|
+
def click_with_index(value)
|
86
|
+
segment = @parent["childViews.#{value}", View]
|
87
|
+
segment.click if (not segment.nil?)
|
88
|
+
end
|
84
89
|
|
85
90
|
protected
|
86
91
|
|
@@ -16,19 +16,19 @@ module Lebowski
|
|
16
16
|
representing_sc_class 'SC.SelectButtonView'
|
17
17
|
|
18
18
|
def display_menu
|
19
|
-
|
19
|
+
click if !has_menu_displayed?
|
20
20
|
end
|
21
21
|
|
22
22
|
def hide_menu
|
23
|
-
menu.click_off if
|
23
|
+
menu.click_off if has_menu_displayed?
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
26
|
+
def has_menu_displayed?
|
27
27
|
return (not menu.nil?)
|
28
28
|
end
|
29
29
|
|
30
30
|
def menu
|
31
|
-
@menu =
|
31
|
+
@menu = self['pane.rootResponder.menuPane']
|
32
32
|
if not @menu.nil?
|
33
33
|
@menu = @menu.represent_as(SelectButtonMenu)
|
34
34
|
@menu.select_button = self
|
@@ -99,7 +99,8 @@ module Lebowski
|
|
99
99
|
# @see #select
|
100
100
|
#
|
101
101
|
def select_with_value(val)
|
102
|
-
|
102
|
+
guid = @driver.get_sc_guid(val)
|
103
|
+
option_locator = "value=regexi:^#{guid}$"
|
103
104
|
@driver.sc_select(:view, option_locator, self.abs_path)
|
104
105
|
stall :select
|
105
106
|
end
|
@@ -40,22 +40,17 @@ module Lebowski
|
|
40
40
|
include Lebowski::Foundation
|
41
41
|
include Lebowski::Foundation::Views
|
42
42
|
|
43
|
-
def initialize(parent
|
43
|
+
def initialize(parent)
|
44
44
|
if not parent.kind_of? View
|
45
45
|
raise ArgumentInvalidTypeError.new "parent", parent, View
|
46
46
|
end
|
47
|
-
|
48
|
-
if not item_selector.kind_of? String
|
49
|
-
raise ArgumentInvalidTypeError.new "item_selector", item_selector, String
|
50
|
-
end
|
51
47
|
|
52
48
|
@parent = parent
|
53
49
|
@driver = parent.driver
|
54
|
-
@
|
55
|
-
@
|
56
|
-
@
|
57
|
-
@
|
58
|
-
@item_value_key = item_value_key.nil? ? parent['itemValueKey'] : parent[item_value_key]
|
50
|
+
@value_rel_path = 'value'
|
51
|
+
@items_rel_path = 'items'
|
52
|
+
@item_title_key = parent['itemTitleKey']
|
53
|
+
@item_value_key = parent['itemValueKey']
|
59
54
|
end
|
60
55
|
|
61
56
|
def selected?(value)
|
@@ -170,15 +165,9 @@ module Lebowski
|
|
170
165
|
end
|
171
166
|
end
|
172
167
|
|
168
|
+
# Must be implemented by a subclass
|
173
169
|
def click_with_index(value)
|
174
|
-
|
175
|
-
cq[value].mouse_down
|
176
|
-
cq[value].basic_click # Required for slightly older versions of SC (pre 1.0)
|
177
|
-
cq.done
|
178
|
-
|
179
|
-
cq = @parent.core_query(@item_selector)
|
180
|
-
cq[value].mouse_up
|
181
|
-
cq.done
|
170
|
+
# NO-OP
|
182
171
|
end
|
183
172
|
|
184
173
|
def click_with_title(value)
|
@@ -33,8 +33,9 @@ module Lebowski
|
|
33
33
|
|
34
34
|
# SC Object Foundation Selenium Calls
|
35
35
|
|
36
|
-
def get_sc_guid(
|
37
|
-
|
36
|
+
def get_sc_guid(val)
|
37
|
+
encoded_params = ObjectEncoder.encode_hash({ :val => val })
|
38
|
+
return __string_command("getScGuid", [encoded_params])
|
38
39
|
end
|
39
40
|
|
40
41
|
def get_sc_object_class_name(scpath)
|
@@ -246,13 +247,13 @@ module Lebowski
|
|
246
247
|
end
|
247
248
|
|
248
249
|
def sc_key_down(type, key, *params)
|
249
|
-
if key == :meta_key
|
250
|
+
if key == :meta_key or key == :meta
|
250
251
|
meta_key_down
|
251
|
-
elsif key == :alt_key
|
252
|
+
elsif key == :alt_key or key == :alt
|
252
253
|
alt_key_down
|
253
|
-
elsif key == :ctrl_key
|
254
|
+
elsif key == :ctrl_key or key == :ctrl
|
254
255
|
control_key_down
|
255
|
-
elsif key == :shift_key
|
256
|
+
elsif key == :shift_key or key == :shift
|
256
257
|
shift_key_down
|
257
258
|
elsif key.kind_of? Symbol
|
258
259
|
__remote_control_command("scFunctionKeyDown", [__locator(type, *params), key.to_s])
|
@@ -263,13 +264,13 @@ module Lebowski
|
|
263
264
|
end
|
264
265
|
|
265
266
|
def sc_key_up(type, key, *params)
|
266
|
-
if key == :meta_key
|
267
|
+
if key == :meta_key or key == :meta
|
267
268
|
meta_key_up
|
268
|
-
elsif key == :alt_key
|
269
|
+
elsif key == :alt_key or key == :alt
|
269
270
|
alt_key_up
|
270
|
-
elsif key == :ctrl_key
|
271
|
+
elsif key == :ctrl_key or key == :ctrl
|
271
272
|
control_key_up
|
272
|
-
elsif key == :shift_key
|
273
|
+
elsif key == :shift_key or key == :shift
|
273
274
|
shift_key_up
|
274
275
|
elsif key.kind_of? Symbol
|
275
276
|
__remote_control_command("scFunctionKeyUp", [__locator(type, *params), key.to_s])
|
data/lib/lebowski/version.rb
CHANGED
@@ -38,18 +38,41 @@ var $App = null;
|
|
38
38
|
*/
|
39
39
|
var ScExt = {};
|
40
40
|
|
41
|
+
/**
|
42
|
+
Use this method instead of SC's typeOf method to check a value's type.
|
43
|
+
|
44
|
+
This method handles both SC 1.6 and 1.5. Unfortunately SC.typeOf for
|
45
|
+
SC 1.5 can return an incorrect result that will end up prevent the
|
46
|
+
rest of Lebowski from working. This method will correct the result.
|
47
|
+
*/
|
48
|
+
ScExt.typeOf = function(value) {
|
49
|
+
var type = $SC.typeOf(value);
|
50
|
+
|
51
|
+
if (type === $SC.T_ERROR && $SC.VERSION.match(/^1.5/)) {
|
52
|
+
if ($SC.Error && value instanceof $SC.Error) {
|
53
|
+
type = $SC.T_ERROR;
|
54
|
+
} else if (value instanceof $SC.Object) {
|
55
|
+
type = $SC.T_OBJECT;
|
56
|
+
} else {
|
57
|
+
type = $SC.T_HASH;
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
return type;
|
62
|
+
};
|
63
|
+
|
41
64
|
/**
|
42
65
|
Checks if the given value is indeed an SC.Object
|
43
66
|
*/
|
44
67
|
ScExt.isScObject = function(obj) {
|
45
|
-
return
|
68
|
+
return ScExt.typeOf(obj) === $SC.T_OBJECT;
|
46
69
|
};
|
47
70
|
|
48
71
|
/**
|
49
72
|
Checks if the given value is either an instance of SC.Object or a JS hash object
|
50
73
|
*/
|
51
74
|
ScExt.isObject = function(obj) {
|
52
|
-
var type =
|
75
|
+
var type = ScExt.typeOf(obj);
|
53
76
|
return type === $SC.T_OBJECT || type === $SC.T_HASH;
|
54
77
|
};
|
55
78
|
|
@@ -279,7 +302,7 @@ ScExt.PathParser = {
|
|
279
302
|
|
280
303
|
for (var i = 1; i < parts.length; i++) {
|
281
304
|
if (this._isArrayIndex(parts[i])) {
|
282
|
-
if (
|
305
|
+
if (ScExt.typeOf(objPathChain[i - 1]) === $SC.T_FUNCTION) {
|
283
306
|
// Last part is a function, therefore invoke the function with the index
|
284
307
|
var target = objPathChain[i - 2];
|
285
308
|
var func = objPathChain[i - 1];
|
@@ -290,10 +313,12 @@ ScExt.PathParser = {
|
|
290
313
|
current_obj = this._getObjectFromArray(array, parts[i]);
|
291
314
|
}
|
292
315
|
} else {
|
293
|
-
if (
|
294
|
-
// Object is a SC object. Use the get method
|
316
|
+
if (ScExt.typeOf(current_obj.getPath) === $SC.T_FUNCTION && current_obj !== $SC) {
|
317
|
+
// Object is a SC object. Use the get method. Need to be mindful of the SC
|
318
|
+
// root object since it also has getPath but doesn't behave the same way as
|
319
|
+
// getPath on regular SC objects.
|
295
320
|
current_obj = current_obj.getPath(parts[i]);
|
296
|
-
} else if (
|
321
|
+
} else if (ScExt.typeOf(current_obj.get) === $SC.T_FUNCTION) {
|
297
322
|
current_obj = current_obj.get(parts[i]);
|
298
323
|
} else {
|
299
324
|
// Object is just a plain old JS object
|
@@ -353,7 +378,7 @@ ScExt.MouseEventSimulation = {
|
|
353
378
|
|
354
379
|
simulateEvent: function(mouseEvent, locator, x, y, button) {
|
355
380
|
var element = selenium.browserbot.findElement(locator),
|
356
|
-
coord = element ? $SC.
|
381
|
+
coord = element ? $SC.offset(element) : { x: 0, y: 0 },
|
357
382
|
width = element ? element.clientWidth : 0,
|
358
383
|
height = element ? element.clientHeight : 0,
|
359
384
|
which = 1;
|
@@ -377,7 +402,7 @@ ScExt.MouseEventSimulation = {
|
|
377
402
|
}
|
378
403
|
}
|
379
404
|
|
380
|
-
var coords = element ? $SC.
|
405
|
+
var coords = element ? $SC.offset(element) : { x: 0, y: 0 },
|
381
406
|
clientX = coords.x + x,
|
382
407
|
clientY = coords.y + y;
|
383
408
|
|
@@ -1587,7 +1612,7 @@ Selenium.prototype.doScEnableMouseMoveEvent = function() {
|
|
1587
1612
|
*/
|
1588
1613
|
Selenium.prototype.getScTypeOf = function(path) {
|
1589
1614
|
var value = $ScPath.getPath(path);
|
1590
|
-
return
|
1615
|
+
return ScExt.typeOf(value);
|
1591
1616
|
};
|
1592
1617
|
|
1593
1618
|
/**
|
@@ -1605,9 +1630,13 @@ Selenium.prototype.getScTypeOfArrayContent = function(path) {
|
|
1605
1630
|
/**
|
1606
1631
|
Returns a SproutCore object's GUID
|
1607
1632
|
*/
|
1608
|
-
Selenium.prototype.getScGuid = function(
|
1609
|
-
|
1610
|
-
var
|
1633
|
+
Selenium.prototype.getScGuid = function(params) {
|
1634
|
+
params = ScExt.ObjectDecoder.decodeHash(params);
|
1635
|
+
var value = params.val;
|
1636
|
+
if ($SC.typeOf(value) === $SC.T_STRING) {
|
1637
|
+
value = $ScPath.getPath(value, 'SC.Object');
|
1638
|
+
}
|
1639
|
+
var guid = $SC.guidFor(!!value ? value : params.val);
|
1611
1640
|
return guid;
|
1612
1641
|
};
|
1613
1642
|
|
@@ -1689,7 +1718,7 @@ Selenium.prototype.getScViewFrame = function(path) {
|
|
1689
1718
|
Selenium.prototype.getScElementWindowPosition = function(path) {
|
1690
1719
|
var element = this.browserbot.findElement(path);
|
1691
1720
|
if (!element) return null;
|
1692
|
-
var coords = $SC.
|
1721
|
+
var coords = $SC.offset(element);
|
1693
1722
|
if (!coords) return null;
|
1694
1723
|
return [coords.x, coords.y];
|
1695
1724
|
};
|
@@ -2019,4 +2048,4 @@ PageBot.prototype.locateElementByScCoreQuery = function(text) {
|
|
2019
2048
|
PageBot.prototype.evaluateCssSelectorCount = function(css, document) {
|
2020
2049
|
var elements = eval_css(css, document);
|
2021
2050
|
return elements.length;
|
2022
|
-
};
|
2051
|
+
};
|
metadata
CHANGED
@@ -1,185 +1,63 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lebowski
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 3
|
8
|
-
- 3
|
9
|
-
- pre
|
10
|
-
- 0
|
11
|
-
version: 0.3.3.pre.0
|
4
|
+
prerelease:
|
5
|
+
version: 0.4.0
|
12
6
|
platform: ruby
|
13
7
|
authors:
|
14
8
|
- Michael Cohen
|
9
|
+
- Apple Inc. and contributors
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
13
|
|
19
|
-
date: 2011-
|
14
|
+
date: 2011-08-22 00:00:00 -07:00
|
20
15
|
default_executable:
|
21
16
|
dependencies:
|
22
17
|
- !ruby/object:Gem::Dependency
|
23
|
-
name:
|
18
|
+
name: rspec
|
19
|
+
prerelease: false
|
24
20
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
21
|
none: false
|
26
22
|
requirements:
|
27
23
|
- - ~>
|
28
24
|
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
- 1
|
31
|
-
- 2
|
32
|
-
- 18
|
33
|
-
version: 1.2.18
|
25
|
+
version: 2.5.0
|
34
26
|
type: :runtime
|
35
|
-
prerelease: false
|
36
27
|
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rspec
|
39
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
|
-
requirements:
|
42
|
-
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
segments:
|
45
|
-
- 2
|
46
|
-
- 1
|
47
|
-
- 0
|
48
|
-
version: 2.1.0
|
49
|
-
type: :runtime
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: *id002
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: bundler
|
54
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
|
-
requirements:
|
57
|
-
- - ~>
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
segments:
|
60
|
-
- 1
|
61
|
-
- 0
|
62
|
-
- 0
|
63
|
-
version: 1.0.0
|
64
|
-
type: :development
|
65
|
-
prerelease: false
|
66
|
-
version_requirements: *id003
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
name: jeweler
|
69
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
-
none: false
|
71
|
-
requirements:
|
72
|
-
- - ~>
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
segments:
|
75
|
-
- 1
|
76
|
-
- 5
|
77
|
-
- 1
|
78
|
-
version: 1.5.1
|
79
|
-
type: :development
|
80
|
-
prerelease: false
|
81
|
-
version_requirements: *id004
|
82
|
-
- !ruby/object:Gem::Dependency
|
83
|
-
name: rcov
|
84
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
85
|
-
none: false
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
segments:
|
90
|
-
- 0
|
91
|
-
version: "0"
|
92
|
-
type: :development
|
93
|
-
prerelease: false
|
94
|
-
version_requirements: *id005
|
95
28
|
- !ruby/object:Gem::Dependency
|
96
29
|
name: selenium-client
|
97
|
-
|
30
|
+
prerelease: false
|
31
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
98
32
|
none: false
|
99
33
|
requirements:
|
100
34
|
- - ~>
|
101
35
|
- !ruby/object:Gem::Version
|
102
|
-
segments:
|
103
|
-
- 1
|
104
|
-
- 2
|
105
|
-
- 18
|
106
36
|
version: 1.2.18
|
107
37
|
type: :runtime
|
108
|
-
|
109
|
-
version_requirements: *id006
|
38
|
+
version_requirements: *id002
|
110
39
|
- !ruby/object:Gem::Dependency
|
111
40
|
name: rspec
|
112
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ~>
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
segments:
|
118
|
-
- 2
|
119
|
-
- 1
|
120
|
-
- 0
|
121
|
-
version: 2.1.0
|
122
|
-
type: :runtime
|
123
41
|
prerelease: false
|
124
|
-
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rspec
|
127
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
42
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
128
43
|
none: false
|
129
44
|
requirements:
|
130
45
|
- - ~>
|
131
46
|
- !ruby/object:Gem::Version
|
132
|
-
|
133
|
-
- 2
|
134
|
-
- 1
|
135
|
-
- 0
|
136
|
-
version: 2.1.0
|
47
|
+
version: 2.5.0
|
137
48
|
type: :development
|
138
|
-
|
139
|
-
version_requirements: *id008
|
49
|
+
version_requirements: *id003
|
140
50
|
- !ruby/object:Gem::Dependency
|
141
51
|
name: bundler
|
142
|
-
requirement: &id009 !ruby/object:Gem::Requirement
|
143
|
-
none: false
|
144
|
-
requirements:
|
145
|
-
- - ~>
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
segments:
|
148
|
-
- 1
|
149
|
-
- 0
|
150
|
-
- 0
|
151
|
-
version: 1.0.0
|
152
|
-
type: :development
|
153
52
|
prerelease: false
|
154
|
-
|
155
|
-
- !ruby/object:Gem::Dependency
|
156
|
-
name: jeweler
|
157
|
-
requirement: &id010 !ruby/object:Gem::Requirement
|
53
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
158
54
|
none: false
|
159
55
|
requirements:
|
160
56
|
- - ~>
|
161
57
|
- !ruby/object:Gem::Version
|
162
|
-
|
163
|
-
- 1
|
164
|
-
- 5
|
165
|
-
- 1
|
166
|
-
version: 1.5.1
|
167
|
-
type: :development
|
168
|
-
prerelease: false
|
169
|
-
version_requirements: *id010
|
170
|
-
- !ruby/object:Gem::Dependency
|
171
|
-
name: rcov
|
172
|
-
requirement: &id011 !ruby/object:Gem::Requirement
|
173
|
-
none: false
|
174
|
-
requirements:
|
175
|
-
- - ">="
|
176
|
-
- !ruby/object:Gem::Version
|
177
|
-
segments:
|
178
|
-
- 0
|
179
|
-
version: "0"
|
58
|
+
version: 1.0.0
|
180
59
|
type: :development
|
181
|
-
|
182
|
-
version_requirements: *id011
|
60
|
+
version_requirements: *id004
|
183
61
|
description: " \n Lebowski is a test automation framework designed for full feature, integration, and \n regression testing of SproutCore applications.\n \n"
|
184
62
|
email: michael.lee.cohen@gmail.com
|
185
63
|
executables:
|
@@ -189,19 +67,10 @@ executables:
|
|
189
67
|
extensions: []
|
190
68
|
|
191
69
|
extra_rdoc_files:
|
192
|
-
- README.md
|
193
|
-
files:
|
194
|
-
- Gemfile
|
195
70
|
- History.md
|
196
|
-
- License.txt
|
197
71
|
- README.md
|
198
|
-
|
199
|
-
- bin/lebowski
|
200
|
-
- bin/lebowski-spec
|
201
|
-
- bin/lebowski-start-server
|
202
|
-
- lib/lebowski.rb
|
72
|
+
files:
|
203
73
|
- lib/lebowski/core.rb
|
204
|
-
- lib/lebowski/foundation.rb
|
205
74
|
- lib/lebowski/foundation/application.rb
|
206
75
|
- lib/lebowski/foundation/core.rb
|
207
76
|
- lib/lebowski/foundation/core_query.rb
|
@@ -251,7 +120,7 @@ files:
|
|
251
120
|
- lib/lebowski/foundation/views/text_field.rb
|
252
121
|
- lib/lebowski/foundation/views/view.rb
|
253
122
|
- lib/lebowski/foundation/views/web.rb
|
254
|
-
- lib/lebowski/
|
123
|
+
- lib/lebowski/foundation.rb
|
255
124
|
- lib/lebowski/rspec/core.rb
|
256
125
|
- lib/lebowski/rspec/matchers/be.rb
|
257
126
|
- lib/lebowski/rspec/matchers/has.rb
|
@@ -263,7 +132,7 @@ files:
|
|
263
132
|
- lib/lebowski/rspec/operators/operator.rb
|
264
133
|
- lib/lebowski/rspec/operators/that.rb
|
265
134
|
- lib/lebowski/rspec/util.rb
|
266
|
-
- lib/lebowski/
|
135
|
+
- lib/lebowski/rspec.rb
|
267
136
|
- lib/lebowski/runtime/errors/remote_control_command_execution_error.rb
|
268
137
|
- lib/lebowski/runtime/errors/remote_control_command_timeout_error.rb
|
269
138
|
- lib/lebowski/runtime/errors/remote_control_error.rb
|
@@ -271,7 +140,7 @@ files:
|
|
271
140
|
- lib/lebowski/runtime/object_encoder.rb
|
272
141
|
- lib/lebowski/runtime/sprout_core_driver.rb
|
273
142
|
- lib/lebowski/runtime/sprout_core_extensions.rb
|
274
|
-
- lib/lebowski/
|
143
|
+
- lib/lebowski/runtime.rb
|
275
144
|
- lib/lebowski/scui/mixins/link_support.rb
|
276
145
|
- lib/lebowski/scui/mixins/node_item_view_support.rb
|
277
146
|
- lib/lebowski/scui/mixins/terminal_view_support.rb
|
@@ -281,11 +150,15 @@ files:
|
|
281
150
|
- lib/lebowski/scui/views/date_picker.rb
|
282
151
|
- lib/lebowski/scui/views/linkit.rb
|
283
152
|
- lib/lebowski/scui/views/select_field_tab.rb
|
153
|
+
- lib/lebowski/scui.rb
|
284
154
|
- lib/lebowski/version.rb
|
285
|
-
-
|
286
|
-
-
|
155
|
+
- lib/lebowski.rb
|
156
|
+
- History.md
|
157
|
+
- README.md
|
287
158
|
- resources/user-extensions.js
|
288
|
-
-
|
159
|
+
- bin/lebowski
|
160
|
+
- bin/lebowski-spec
|
161
|
+
- bin/lebowski-start-server
|
289
162
|
has_rdoc: true
|
290
163
|
homepage: http://github.com/FrozenCanuck/Lebowski
|
291
164
|
licenses:
|
@@ -293,7 +166,7 @@ licenses:
|
|
293
166
|
post_install_message: |
|
294
167
|
**************************************************
|
295
168
|
|
296
|
-
Thank you for installing lebowski-0.
|
169
|
+
Thank you for installing lebowski-0.4.0
|
297
170
|
|
298
171
|
Please be sure to read the README.md and History.md
|
299
172
|
for useful information on how to use this framework
|
@@ -311,31 +184,25 @@ rdoc_options: []
|
|
311
184
|
|
312
185
|
require_paths:
|
313
186
|
- lib
|
187
|
+
- lib
|
314
188
|
required_ruby_version: !ruby/object:Gem::Requirement
|
315
189
|
none: false
|
316
190
|
requirements:
|
317
191
|
- - ">="
|
318
192
|
- !ruby/object:Gem::Version
|
319
|
-
|
320
|
-
segments:
|
321
|
-
- 0
|
322
|
-
version: "0"
|
193
|
+
version: 1.9.0
|
323
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
324
195
|
none: false
|
325
196
|
requirements:
|
326
|
-
- - "
|
197
|
+
- - ">="
|
327
198
|
- !ruby/object:Gem::Version
|
328
|
-
|
329
|
-
- 1
|
330
|
-
- 3
|
331
|
-
- 1
|
332
|
-
version: 1.3.1
|
199
|
+
version: "0"
|
333
200
|
requirements: []
|
334
201
|
|
335
202
|
rubyforge_project:
|
336
|
-
rubygems_version: 1.
|
203
|
+
rubygems_version: 1.6.2
|
337
204
|
signing_key:
|
338
205
|
specification_version: 3
|
339
|
-
summary:
|
206
|
+
summary: Lebowski is a test integration automation framework for SproutCore
|
340
207
|
test_files: []
|
341
208
|
|
data/Gemfile
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
source "http://rubygems.org"
|
2
|
-
|
3
|
-
gem "selenium-client", "~> 1.2.18"
|
4
|
-
gem "rspec", "~> 2.1.0"
|
5
|
-
|
6
|
-
# Add dependencies to develop your gem here.
|
7
|
-
# Include everything needed to run rake, tests, features, etc.
|
8
|
-
group :development do
|
9
|
-
gem "bundler", "~> 1.0.0"
|
10
|
-
gem "jeweler", "~> 1.5.1"
|
11
|
-
gem "rcov", ">= 0"
|
12
|
-
end
|
data/License.txt
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2010, 2011 Michael Cohen <http://frozencanuck.wordpress.com>
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
17
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
18
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
19
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
|
4
|
-
begin
|
5
|
-
Bundler.setup(:default, :development)
|
6
|
-
rescue Bundler::BundlerError => e
|
7
|
-
$stderr.puts e.message
|
8
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
9
|
-
exit e.status_code
|
10
|
-
end
|
11
|
-
|
12
|
-
require 'rake'
|
13
|
-
|
14
|
-
require 'jeweler'
|
15
|
-
require './lib/lebowski/version.rb'
|
16
|
-
|
17
|
-
Jeweler::Tasks.new do |gem|
|
18
|
-
gem.name = 'lebowski'
|
19
|
-
gem.version = Lebowski::Version::STRING
|
20
|
-
gem.homepage = 'http://github.com/FrozenCanuck/Lebowski'
|
21
|
-
gem.license = 'MIT'
|
22
|
-
gem.summary = 'A test automation framework for SproutCore'
|
23
|
-
gem.description = <<-DESCRIPTION
|
24
|
-
|
25
|
-
Lebowski is a test automation framework designed for full feature, integration, and
|
26
|
-
regression testing of SproutCore applications.
|
27
|
-
|
28
|
-
DESCRIPTION
|
29
|
-
gem.email = 'michael.lee.cohen@gmail.com'
|
30
|
-
gem.authors = ['Michael Cohen']
|
31
|
-
gem.add_dependency 'selenium-client', '~> 1.2.18'
|
32
|
-
gem.add_dependency 'rspec', '~> 2.1.0'
|
33
|
-
gem.add_development_dependency 'rspec', '~> 2.1.0'
|
34
|
-
gem.add_development_dependency 'bundler', '~> 1.0.0'
|
35
|
-
gem.add_development_dependency 'jeweler', '~> 1.5.1'
|
36
|
-
gem.add_development_dependency 'rcov', '>= 0'
|
37
|
-
gem.executables = ['lebowski', 'lebowski-spec', 'lebowski-start-server']
|
38
|
-
gem.files.exclude 'examples'
|
39
|
-
gem.test_files = []
|
40
|
-
gem.post_install_message = <<-POST_INSTALL_MESSAGE
|
41
|
-
#{'*'*50}
|
42
|
-
|
43
|
-
Thank you for installing lebowski-#{Lebowski::Version::STRING}
|
44
|
-
|
45
|
-
Please be sure to read the README.md and History.md
|
46
|
-
for useful information on how to use this framework
|
47
|
-
and about this release.
|
48
|
-
|
49
|
-
For more information go to the following web sites:
|
50
|
-
|
51
|
-
http://github.com/FrozenCanuck/Lebowski
|
52
|
-
http://frozencanuck.wordpress.com
|
53
|
-
http://www.sproutcore.com
|
54
|
-
|
55
|
-
#{'*'*50}
|
56
|
-
POST_INSTALL_MESSAGE
|
57
|
-
end
|
58
|
-
Jeweler::RubygemsDotOrgTasks.new
|
data/resources/README
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
The selenium-server.jar is part of the Selenium Framework (http://seleniumhq.org)
|
Binary file
|
data/spec/spec_helper.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../lib/lebowski')
|