lebowski 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.md +3 -0
- data/License.txt +20 -0
- data/Manifest.txt +84 -0
- data/README.md +146 -0
- data/Rakefile +42 -0
- data/bin/lebowski +26 -0
- data/bin/lebowski-spec +29 -0
- data/bin/lebowski-start-server +24 -0
- data/lib/lebowski.rb +15 -0
- data/lib/lebowski/core.rb +35 -0
- data/lib/lebowski/foundation.rb +52 -0
- data/lib/lebowski/foundation/application.rb +315 -0
- data/lib/lebowski/foundation/core.rb +61 -0
- data/lib/lebowski/foundation/core_query.rb +231 -0
- data/lib/lebowski/foundation/dom_element.rb +114 -0
- data/lib/lebowski/foundation/errors/argument_invalid_type.rb +31 -0
- data/lib/lebowski/foundation/errors/unexpected_type.rb +30 -0
- data/lib/lebowski/foundation/mixins/collection_item_view_support.rb +87 -0
- data/lib/lebowski/foundation/mixins/delegate_support.rb +22 -0
- data/lib/lebowski/foundation/mixins/inline_text_field_support.rb +29 -0
- data/lib/lebowski/foundation/mixins/key_check.rb +35 -0
- data/lib/lebowski/foundation/mixins/list_item_view_support.rb +36 -0
- data/lib/lebowski/foundation/mixins/positioned_element.rb +20 -0
- data/lib/lebowski/foundation/mixins/stall_support.rb +79 -0
- data/lib/lebowski/foundation/mixins/user_actions.rb +302 -0
- data/lib/lebowski/foundation/mixins/wait_actions.rb +44 -0
- data/lib/lebowski/foundation/object_array.rb +305 -0
- data/lib/lebowski/foundation/panes/alert.rb +117 -0
- data/lib/lebowski/foundation/panes/main.rb +20 -0
- data/lib/lebowski/foundation/panes/menu.rb +100 -0
- data/lib/lebowski/foundation/panes/modal.rb +21 -0
- data/lib/lebowski/foundation/panes/palette.rb +21 -0
- data/lib/lebowski/foundation/panes/pane.rb +24 -0
- data/lib/lebowski/foundation/panes/panel.rb +25 -0
- data/lib/lebowski/foundation/panes/picker.rb +43 -0
- data/lib/lebowski/foundation/panes/sheet.rb +21 -0
- data/lib/lebowski/foundation/proxy_factory.rb +87 -0
- data/lib/lebowski/foundation/proxy_object.rb +670 -0
- data/lib/lebowski/foundation/sc_object.rb +38 -0
- data/lib/lebowski/foundation/views/button.rb +20 -0
- data/lib/lebowski/foundation/views/checkbox.rb +63 -0
- data/lib/lebowski/foundation/views/collection.rb +304 -0
- data/lib/lebowski/foundation/views/container.rb +32 -0
- data/lib/lebowski/foundation/views/disclosure.rb +59 -0
- data/lib/lebowski/foundation/views/grid.rb +21 -0
- data/lib/lebowski/foundation/views/label.rb +30 -0
- data/lib/lebowski/foundation/views/list.rb +67 -0
- data/lib/lebowski/foundation/views/list_item.rb +280 -0
- data/lib/lebowski/foundation/views/menu_item.rb +27 -0
- data/lib/lebowski/foundation/views/radio.rb +32 -0
- data/lib/lebowski/foundation/views/segmented.rb +97 -0
- data/lib/lebowski/foundation/views/select_field.rb +139 -0
- data/lib/lebowski/foundation/views/support/simple_item_array.rb +249 -0
- data/lib/lebowski/foundation/views/text_field.rb +108 -0
- data/lib/lebowski/foundation/views/view.rb +108 -0
- data/lib/lebowski/runtime.rb +7 -0
- data/lib/lebowski/runtime/errors/remote_control_command_execution_error.rb +9 -0
- data/lib/lebowski/runtime/errors/remote_control_command_timeout_error.rb +9 -0
- data/lib/lebowski/runtime/errors/remote_control_error.rb +9 -0
- data/lib/lebowski/runtime/errors/selenium_server_error.rb +9 -0
- data/lib/lebowski/runtime/object_encoder.rb +123 -0
- data/lib/lebowski/runtime/sprout_core_driver.rb +14 -0
- data/lib/lebowski/runtime/sprout_core_extensions.rb +600 -0
- data/lib/lebowski/scui.rb +18 -0
- data/lib/lebowski/scui/mixins/node_item_view_support.rb +136 -0
- data/lib/lebowski/scui/mixins/terminal_view_support.rb +25 -0
- data/lib/lebowski/scui/views/combo_box.rb +119 -0
- data/lib/lebowski/scui/views/date_picker.rb +148 -0
- data/lib/lebowski/scui/views/linkit.rb +36 -0
- data/lib/lebowski/spec.rb +17 -0
- data/lib/lebowski/spec/core.rb +21 -0
- data/lib/lebowski/spec/matchers/be.rb +63 -0
- data/lib/lebowski/spec/matchers/has.rb +40 -0
- data/lib/lebowski/spec/matchers/match_supporters/has_object_function.rb +67 -0
- data/lib/lebowski/spec/matchers/match_supporters/has_predicate_with_no_prefix.rb +50 -0
- data/lib/lebowski/spec/matchers/match_supporters/has_predicate_with_prefix_has.rb +50 -0
- data/lib/lebowski/spec/matchers/match_supporters/match_supporter.rb +29 -0
- data/lib/lebowski/spec/matchers/method_missing.rb +24 -0
- data/lib/lebowski/spec/operators/operator.rb +20 -0
- data/lib/lebowski/spec/operators/that.rb +116 -0
- data/lib/lebowski/spec/util.rb +26 -0
- data/lib/lebowski/version.rb +17 -0
- data/resources/selenium-server.jar +0 -0
- data/resources/user-extensions.js +1421 -0
- metadata +198 -0
data/History.md
ADDED
data/License.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2010 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/Manifest.txt
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
License.txt
|
2
|
+
History.md
|
3
|
+
Manifest.txt
|
4
|
+
README.md
|
5
|
+
Rakefile
|
6
|
+
lib/lebowski.rb
|
7
|
+
lib/lebowski/version.rb
|
8
|
+
lib/lebowski/core.rb
|
9
|
+
lib/lebowski/runtime.rb
|
10
|
+
lib/lebowski/runtime/errors/remote_control_error.rb
|
11
|
+
lib/lebowski/runtime/errors/remote_control_command_execution_error.rb
|
12
|
+
lib/lebowski/runtime/errors/remote_control_command_timeout_error.rb
|
13
|
+
lib/lebowski/runtime/errors/selenium_server_error.rb
|
14
|
+
lib/lebowski/runtime/sprout_core_extensions.rb
|
15
|
+
lib/lebowski/runtime/sprout_core_driver.rb
|
16
|
+
lib/lebowski/runtime/object_encoder.rb
|
17
|
+
lib/lebowski/foundation.rb
|
18
|
+
lib/lebowski/foundation/core.rb
|
19
|
+
lib/lebowski/foundation/errors/unexpected_type.rb
|
20
|
+
lib/lebowski/foundation/errors/argument_invalid_type.rb
|
21
|
+
lib/lebowski/foundation/mixins/key_check.rb
|
22
|
+
lib/lebowski/foundation/mixins/positioned_element.rb
|
23
|
+
lib/lebowski/foundation/mixins/user_actions.rb
|
24
|
+
lib/lebowski/foundation/mixins/wait_actions.rb
|
25
|
+
lib/lebowski/foundation/mixins/delegate_support.rb
|
26
|
+
lib/lebowski/foundation/mixins/collection_item_view_support.rb
|
27
|
+
lib/lebowski/foundation/mixins/list_item_view_support.rb
|
28
|
+
lib/lebowski/foundation/mixins/inline_text_field_support.rb
|
29
|
+
lib/lebowski/foundation/mixins/stall_support.rb
|
30
|
+
lib/lebowski/foundation/proxy_object.rb
|
31
|
+
lib/lebowski/foundation/sc_object.rb
|
32
|
+
lib/lebowski/foundation/object_array.rb
|
33
|
+
lib/lebowski/foundation/core_query.rb
|
34
|
+
lib/lebowski/foundation/dom_element.rb
|
35
|
+
lib/lebowski/foundation/views/view.rb
|
36
|
+
lib/lebowski/foundation/views/label.rb
|
37
|
+
lib/lebowski/foundation/views/button.rb
|
38
|
+
lib/lebowski/foundation/views/container.rb
|
39
|
+
lib/lebowski/foundation/views/segmented.rb
|
40
|
+
lib/lebowski/foundation/views/radio.rb
|
41
|
+
lib/lebowski/foundation/views/checkbox.rb
|
42
|
+
lib/lebowski/foundation/views/disclosure.rb
|
43
|
+
lib/lebowski/foundation/views/text_field.rb
|
44
|
+
lib/lebowski/foundation/views/select_field.rb
|
45
|
+
lib/lebowski/foundation/views/menu_item.rb
|
46
|
+
lib/lebowski/foundation/views/collection.rb
|
47
|
+
lib/lebowski/foundation/views/list.rb
|
48
|
+
lib/lebowski/foundation/views/list_item.rb
|
49
|
+
lib/lebowski/foundation/views/grid.rb
|
50
|
+
lib/lebowski/foundation/views/support/simple_item_array.rb
|
51
|
+
lib/lebowski/foundation/panes/pane.rb
|
52
|
+
lib/lebowski/foundation/panes/main.rb
|
53
|
+
lib/lebowski/foundation/panes/modal.rb
|
54
|
+
lib/lebowski/foundation/panes/panel.rb
|
55
|
+
lib/lebowski/foundation/panes/alert.rb
|
56
|
+
lib/lebowski/foundation/panes/palette.rb
|
57
|
+
lib/lebowski/foundation/panes/picker.rb
|
58
|
+
lib/lebowski/foundation/panes/sheet.rb
|
59
|
+
lib/lebowski/foundation/panes/menu.rb
|
60
|
+
lib/lebowski/foundation/application.rb
|
61
|
+
lib/lebowski/foundation/proxy_factory.rb
|
62
|
+
lib/lebowski/scui.rb
|
63
|
+
lib/lebowski/scui/views/combo_box.rb
|
64
|
+
lib/lebowski/scui/views/date_picker.rb
|
65
|
+
lib/lebowski/scui/views/linkit.rb
|
66
|
+
lib/lebowski/scui/mixins/node_item_view_support.rb
|
67
|
+
lib/lebowski/scui/mixins/terminal_view_support.rb
|
68
|
+
lib/lebowski/spec.rb
|
69
|
+
lib/lebowski/spec/core.rb
|
70
|
+
lib/lebowski/spec/util.rb
|
71
|
+
lib/lebowski/spec/operators/operator.rb
|
72
|
+
lib/lebowski/spec/operators/that.rb
|
73
|
+
lib/lebowski/spec/matchers/match_supporters/match_supporter.rb
|
74
|
+
lib/lebowski/spec/matchers/match_supporters/has_object_function.rb
|
75
|
+
lib/lebowski/spec/matchers/match_supporters/has_predicate_with_no_prefix.rb
|
76
|
+
lib/lebowski/spec/matchers/match_supporters/has_predicate_with_prefix_has.rb
|
77
|
+
lib/lebowski/spec/matchers/be.rb
|
78
|
+
lib/lebowski/spec/matchers/has.rb
|
79
|
+
lib/lebowski/spec/matchers/method_missing.rb
|
80
|
+
bin/lebowski
|
81
|
+
bin/lebowski-spec
|
82
|
+
bin/lebowski-start-server
|
83
|
+
resources/selenium-server.jar
|
84
|
+
resources/user-extensions.js
|
data/README.md
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
Lebowski Framework
|
2
|
+
|
3
|
+
-- the SproutCore feature and integration test automation framework
|
4
|
+
|
5
|
+
#Overview
|
6
|
+
|
7
|
+
The Lebowski framework is a test automation framework for applications built on the
|
8
|
+
[SproutCore](http://www.sproutcore.com/) framework.
|
9
|
+
|
10
|
+
Compared to unit testing frameworks that are perfect for testing individual objects
|
11
|
+
and functions, Lebowski is an automated test framework designed for full
|
12
|
+
feature, integration, and regression testing of an application.
|
13
|
+
|
14
|
+
The framework was created with the following in mind:
|
15
|
+
|
16
|
+
* Provide a way for those who write feature and integration tests to build scripts
|
17
|
+
that reflect how the application was build using the SproutCore framework and
|
18
|
+
abstract away from all the low-level HTML and JavaScript.
|
19
|
+
|
20
|
+
* Allow you to easily access any SproutCore objects that make up your application
|
21
|
+
|
22
|
+
* Allow you to perform all the common user actions and will address all the subtle
|
23
|
+
ways to correctly interact with the views that make up your application
|
24
|
+
|
25
|
+
* Make it easy to add extensions so that you can work with custom views you've
|
26
|
+
built for your application.
|
27
|
+
|
28
|
+
The Lebowski framework was built using the [Ruby](http://www.ruby-lang.org/en/) programming language.
|
29
|
+
Therefore, to use this framework you will have to know some basic Ruby in order to get started.
|
30
|
+
In addition, the framework also make use of [Selenium](http://seleniumhq.org/) remote control server
|
31
|
+
in order to open up a browser, load your SproutCore application, and communicate with the application.
|
32
|
+
Knowledge of selenium server is not required to use the framework. (Note that the selenium server is
|
33
|
+
dependent on your system having the latest Java runtime installed).
|
34
|
+
|
35
|
+
The framework also comes with extensions to [RSpec](http://rspec.info/) that you can optionally use to
|
36
|
+
write your scripts, but RSpec is not required to use the Lebowski framework.
|
37
|
+
|
38
|
+
#Installing Lebowski
|
39
|
+
|
40
|
+
Installing the Lebowski framework is simple. First, make sure that you have the latest Ruby installed
|
41
|
+
on your machine (version 1.9+). Once you have Ruby installed, you can get the Lebowski framework
|
42
|
+
by invoking the following from your terminal:
|
43
|
+
|
44
|
+
$ gem install lebowski
|
45
|
+
|
46
|
+
Depending on the setup of your system you may have to call `gem1.9` and use the `sudo` command.
|
47
|
+
|
48
|
+
If everything worked out you should have the lebowski gem installed on your computer. The framework is
|
49
|
+
dependent on two gems:
|
50
|
+
|
51
|
+
* selenium-client 1.2.18
|
52
|
+
* rspec 1.3.0
|
53
|
+
|
54
|
+
For RSpec, it is only required if you plan on using the Lebowski's RSpec extensions.
|
55
|
+
|
56
|
+
Once installed you will have three executables installed that you can use to run your
|
57
|
+
Lebowski scripts:
|
58
|
+
|
59
|
+
* `lebowski-start-server` - Starts the selenium server
|
60
|
+
* `lebowski` - Can be used to run your Ruby scripts that use Lebowski
|
61
|
+
* `lebowski-spec` - Can be used to run your spec tests that use Lebowski
|
62
|
+
|
63
|
+
Of the three listed above, the one that must always be executed before executing a script
|
64
|
+
using Lebowski is the `lebowski-start-server`.
|
65
|
+
|
66
|
+
It is assumed that you have the SproutCore framework installed on your machine, but if not,
|
67
|
+
you can grab the framework by doing the following:
|
68
|
+
|
69
|
+
$ gem install sproutcore
|
70
|
+
|
71
|
+
At this time, the Lebowski framework works with SproutCore v1.0.1046.
|
72
|
+
|
73
|
+
In addition to SproutCore, it is also advised that you, at minimum, have [Firefox](http://www.mozilla.com/en-US/firefox/personal.html)
|
74
|
+
installed on your system since that is the default browser used to run your SproutCore application using
|
75
|
+
Lebowski.
|
76
|
+
|
77
|
+
#Getting Started With Lebowski
|
78
|
+
|
79
|
+
If you're new to the Lebowski framework then the best place to get started is to try
|
80
|
+
and run the Hello World example that you can find in the `examples/hello_world` directory when
|
81
|
+
you clone the Lebowski framework from github. In the directory you'll see two sub-directories:
|
82
|
+
app and spec. The app directory contains the Hello World SproutCore application. The spec folder
|
83
|
+
contains three files that will test the application using the Lebowski framework.
|
84
|
+
|
85
|
+
To get started, you'll first need to start the selenium server using `lebowski-start-server`.
|
86
|
+
Next, you will need to start up the hello world example app using `sc-server` within the app
|
87
|
+
directory. Check that you can see the application by opening a browser and going to the
|
88
|
+
following URL:
|
89
|
+
|
90
|
+
http://localhost:4020/hello_world
|
91
|
+
|
92
|
+
If the app started correctly you should see a label with the text "Click a button", and
|
93
|
+
two buttons below the label with titles "Hello" and "World". If you click the two buttons
|
94
|
+
you should see the label's caption change between "Hello" and "World".
|
95
|
+
|
96
|
+
You can see how the views were added to the application by looking at the `main_page.js` file
|
97
|
+
in the `app/apps/hello_world/resources` folder.
|
98
|
+
|
99
|
+
With the application started, you can start by running the first hello world spec file
|
100
|
+
like so:
|
101
|
+
|
102
|
+
$ cd examples/hello_world/spec
|
103
|
+
$ lebowski-spec -f n hello_world_spec.rb
|
104
|
+
|
105
|
+
If everything worked you should see the following outputted your terminal:
|
106
|
+
|
107
|
+
Hello World Test
|
108
|
+
will check that label has an initial value 'click a button'
|
109
|
+
will check that hello button has title 'hello'
|
110
|
+
will check that world button has title 'world'
|
111
|
+
will click hello button and then confirm label has value 'hello'
|
112
|
+
will click world button and then confirm label has value 'world'
|
113
|
+
|
114
|
+
Finished in 1.810166 seconds
|
115
|
+
|
116
|
+
5 examples, 0 failures
|
117
|
+
|
118
|
+
If you got output that looks like the output above then congratulations, you've just run
|
119
|
+
your first Lebowski script. For a slightly more complicated script, try running the
|
120
|
+
`hello_world_2_spec.rb` file.
|
121
|
+
|
122
|
+
If you examine the hello world spec files, you'll see that they introduce to
|
123
|
+
some of the main concepts of using the Lebowski framework, namely:
|
124
|
+
|
125
|
+
* Starting up the application
|
126
|
+
* Defining paths
|
127
|
+
* Accessing views by relative property paths and identifiers
|
128
|
+
* Accessing a view's properties
|
129
|
+
* Using the Lebowski RSpec extensions
|
130
|
+
* Creating a custom path proxy
|
131
|
+
|
132
|
+
After you get yourself familiar with the hello world example app, you can move on and learn
|
133
|
+
how to make a custom type proxy by going to the `custom_view` example app.
|
134
|
+
|
135
|
+
If you like to know what proxies the Lebowski framework comes with and know how to use them,
|
136
|
+
be sure to check out the `sc_controls` example app.
|
137
|
+
|
138
|
+
#Why the name "Lebowski"?
|
139
|
+
|
140
|
+
> sometimes there's a man... I won't say a hero, 'cause, what's a hero? But sometimes,
|
141
|
+
> there's a man. And I'm talkin' about the [Dude](http://www.imdb.com/title/tt0118715/) here.
|
142
|
+
> Sometimes, there's a man, well, he's the man for his time and place. He fits right in there.
|
143
|
+
> And that's the Dude, in Los Angeles. And even if he's a lazy man - and the Dude was most certainly
|
144
|
+
> that. Quite possibly the laziest in Los Angeles County, which would place him high in the runnin'
|
145
|
+
> for laziest worldwide. But sometimes there's a man, sometimes, there's a man.
|
146
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
gem 'hoe', '>= 2.1.0'
|
3
|
+
require 'hoe'
|
4
|
+
require 'fileutils'
|
5
|
+
require './lib/lebowski'
|
6
|
+
|
7
|
+
Hoe.plugin :newgem
|
8
|
+
|
9
|
+
$hoe = Hoe.spec 'lebowski' do
|
10
|
+
self.version = Lebowski::VERSION::STRING
|
11
|
+
self.summary = "A feature and integration test automation framework for SproutCore applications"
|
12
|
+
self.description = <<-DESCRIPTION
|
13
|
+
|
14
|
+
Compared to unit testing framework that are perfect for testing individual
|
15
|
+
objects and functions, Lebowski is an automated test framework
|
16
|
+
designed for full feature, integration, and regression testing of a
|
17
|
+
SproutCore application.
|
18
|
+
|
19
|
+
DESCRIPTION
|
20
|
+
|
21
|
+
self.developer 'Michael Cohen', 'michael.lee.cohen@gmail.com'
|
22
|
+
self.rubyforge_name = 'lebowski'
|
23
|
+
self.extra_deps << ['selenium-client', ">= 1.2.18"]
|
24
|
+
self.extra_deps << ['rspec', ">= 1.3.0"]
|
25
|
+
self.post_install_message = <<-POST_INSTALL_MESSAGE
|
26
|
+
#{'*'*50}
|
27
|
+
|
28
|
+
Thank you for installing lebowski-#{Lebowski::VERSION::STRING}
|
29
|
+
|
30
|
+
Please be sure to read the README.md and History.md
|
31
|
+
for useful information on how to use this framework
|
32
|
+
and about this release.
|
33
|
+
|
34
|
+
For more information go to the following web sites:
|
35
|
+
|
36
|
+
http://github.com/FrozenCanuck/Lebowski
|
37
|
+
http://frozencanuck.wordpress.com
|
38
|
+
http://www.sproutcore.com
|
39
|
+
|
40
|
+
#{'*'*50}
|
41
|
+
POST_INSTALL_MESSAGE
|
42
|
+
end
|
data/bin/lebowski
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
#
|
4
|
+
# Executable used to run a script that uses the Lebowski framework. Using
|
5
|
+
# this instead of ruby directly will automtically require and include all
|
6
|
+
# the nessary files, gems and modules to get you running with the framework
|
7
|
+
#
|
8
|
+
# E.g. lebowski my_lebowski_script.rb
|
9
|
+
#
|
10
|
+
|
11
|
+
if ARGV.length == 0
|
12
|
+
puts "Error: Unable to run lebowski. A ruby file is required"
|
13
|
+
exit
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'rubygems'
|
17
|
+
gem 'lebowski'
|
18
|
+
require 'lebowski'
|
19
|
+
|
20
|
+
include Lebowski::Foundation
|
21
|
+
include Lebowski::Foundation::Views
|
22
|
+
include Lebowski::Foundation::Panes
|
23
|
+
include Lebowski::SCUI::Views
|
24
|
+
|
25
|
+
load ARGV[0]
|
26
|
+
|
data/bin/lebowski-spec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
#
|
4
|
+
# Executable used to run an RSpec script that makes use of the Lebowski framework.
|
5
|
+
# Using this instead of spec directly will automtically require and include all
|
6
|
+
# the nessary files, gems and modules to get you running with the framework.
|
7
|
+
# Special spec extension will also be included.
|
8
|
+
#
|
9
|
+
# E.g. lebowski-spec my_lebowski_spec.rb
|
10
|
+
#
|
11
|
+
|
12
|
+
if ARGV.length == 0
|
13
|
+
puts "Error: Unable to run lebowski-spec. A ruby file is required"
|
14
|
+
exit
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'rubygems'
|
18
|
+
gem 'rspec', '>=1.3.0'
|
19
|
+
require 'spec'
|
20
|
+
require 'spec/autorun'
|
21
|
+
gem 'lebowski'
|
22
|
+
require 'lebowski/spec'
|
23
|
+
|
24
|
+
include Lebowski::Foundation
|
25
|
+
include Lebowski::Foundation::Views
|
26
|
+
include Lebowski::Foundation::Panes
|
27
|
+
include Lebowski::SCUI::Views
|
28
|
+
|
29
|
+
exit ::Spec::Runner::CommandLine.run
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
#
|
4
|
+
# Executable to start the selenium server that will automically include
|
5
|
+
# the required extension file
|
6
|
+
#
|
7
|
+
|
8
|
+
DEFAULT_SELENIUM_SERVER_PORT = 4444
|
9
|
+
|
10
|
+
port = DEFAULT_SELENIUM_SERVER_PORT
|
11
|
+
|
12
|
+
ARGV.each_with_index do |arg, index|
|
13
|
+
port = ARGV[index + 1] if arg == '-port' and (index + 1) < ARGV.count
|
14
|
+
end
|
15
|
+
|
16
|
+
puts "Running Selenium Server for Lebowski"
|
17
|
+
puts "Starting server on http://localhost:#{port}"
|
18
|
+
puts "To quit server, press Control-C"
|
19
|
+
|
20
|
+
resources_dir = File.expand_path(File.join(File.dirname(__FILE__), %w[.. resources]))
|
21
|
+
selenium_server = File.join(resources_dir, 'selenium-server.jar')
|
22
|
+
user_extensions = File.join(resources_dir, 'user-extensions.js')
|
23
|
+
|
24
|
+
exec 'java', '-jar', selenium_server, '-userExtensions', user_extensions, *ARGV
|
data/lib/lebowski.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
require "rubygems"
|
7
|
+
gem "selenium-client", ">=1.2.16"
|
8
|
+
require "selenium/client"
|
9
|
+
|
10
|
+
require File.expand_path(File.dirname(__FILE__) + '/lebowski/version')
|
11
|
+
require File.expand_path(File.dirname(__FILE__) + '/lebowski/core')
|
12
|
+
|
13
|
+
require File.expand_path(File.dirname(__FILE__) + '/lebowski/runtime')
|
14
|
+
require File.expand_path(File.dirname(__FILE__) + '/lebowski/foundation')
|
15
|
+
require File.expand_path(File.dirname(__FILE__) + '/lebowski/scui')
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Lebowski
|
2
|
+
|
3
|
+
class Rect
|
4
|
+
|
5
|
+
attr_accessor :width, :height, :x, :y
|
6
|
+
|
7
|
+
def initialize(width, height, x, y)
|
8
|
+
@width = width
|
9
|
+
@height = height
|
10
|
+
@x = x
|
11
|
+
@y = y
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_s()
|
15
|
+
return "Rect<width: #{width}, height: #{height}, x: #{x}, y: #{y}>"
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
class Coords
|
21
|
+
|
22
|
+
attr_accessor :x, :y
|
23
|
+
|
24
|
+
def initialize(x, y)
|
25
|
+
@x = x
|
26
|
+
@y = y
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_s()
|
30
|
+
return "Coords<x: #{x}, y: #{y}>"
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/core')
|
2
|
+
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/errors/unexpected_type')
|
4
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/errors/argument_invalid_type')
|
5
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/errors/timeout')
|
6
|
+
|
7
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/mixins/stall_support')
|
8
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/mixins/key_check')
|
9
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/mixins/positioned_element')
|
10
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/mixins/user_actions')
|
11
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/mixins/wait_actions')
|
12
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/mixins/inline_text_field_support')
|
13
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/mixins/delegate_support')
|
14
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/mixins/collection_item_view_support')
|
15
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/mixins/list_item_view_support')
|
16
|
+
|
17
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/proxy_object')
|
18
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/sc_object')
|
19
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/object_array')
|
20
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/core_query')
|
21
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/dom_element')
|
22
|
+
|
23
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/support/simple_item_array')
|
24
|
+
|
25
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/view')
|
26
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/label')
|
27
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/button')
|
28
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/container')
|
29
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/segmented')
|
30
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/radio')
|
31
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/checkbox')
|
32
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/disclosure')
|
33
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/text_field')
|
34
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/select_field')
|
35
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/menu_item')
|
36
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/collection')
|
37
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/list')
|
38
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/list_item')
|
39
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/views/grid')
|
40
|
+
|
41
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/panes/pane')
|
42
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/panes/main')
|
43
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/panes/modal')
|
44
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/panes/panel')
|
45
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/panes/alert')
|
46
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/panes/palette')
|
47
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/panes/picker')
|
48
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/panes/sheet')
|
49
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/panes/menu')
|
50
|
+
|
51
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/application')
|
52
|
+
require File.expand_path(File.dirname(__FILE__) + '/foundation/proxy_factory')
|