meeane-page-object 0.1.10 → 0.1.11
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.
- checksums.yaml +7 -0
- data/.gitignore +7 -7
- data/.rspec +2 -2
- data/.ruby-gemset +1 -1
- data/.ruby-version +1 -1
- data/.travis.yml +10 -10
- data/ChangeLog +790 -790
- data/Gemfile +13 -13
- data/Guardfile +20 -20
- data/LICENSE +20 -20
- data/README.md +1 -1
- data/Rakefile +35 -35
- data/cucumber.yml +10 -10
- data/features/area.feature +35 -35
- data/features/async.feature +30 -30
- data/features/audio.feature +68 -68
- data/features/button.feature +88 -87
- data/features/canvas.feature +37 -37
- data/features/check_box.feature +55 -55
- data/features/div.feature +45 -45
- data/features/element.feature +322 -322
- data/features/file_field.feature +40 -40
- data/features/form.feature +43 -43
- data/features/frames.feature +75 -75
- data/features/generic_elements.feature +29 -29
- data/features/gxt_table_extension.feature +24 -24
- data/features/headings.feature +97 -97
- data/features/hidden_field.feature +45 -45
- data/features/html/async.html +36 -36
- data/features/html/double_click.html +12 -12
- data/features/html/failure.html +7 -7
- data/features/html/frame_1.html +17 -17
- data/features/html/frame_2.html +15 -15
- data/features/html/frame_3.html +14 -14
- data/features/html/frames.html +12 -12
- data/features/html/hover.html +11 -11
- data/features/html/iframes.html +12 -12
- data/features/html/indexed_property.html +51 -51
- data/features/html/modal.html +17 -17
- data/features/html/modal_1.html +37 -37
- data/features/html/modal_2.html +26 -26
- data/features/html/multi_elements.html +144 -144
- data/features/html/nested_elements.html +77 -77
- data/features/html/nested_frame_2.html +11 -11
- data/features/html/nested_frame_3.html +14 -14
- data/features/html/nested_frames.html +10 -10
- data/features/html/static_elements.html +233 -226
- data/features/html/success.html +7 -7
- data/features/html/sun.html +7 -7
- data/features/image.feature +50 -50
- data/features/indexed_property.feature +97 -97
- data/features/javascript.feature +27 -27
- data/features/label.feature +46 -46
- data/features/link.feature +52 -52
- data/features/list_item.feature +36 -36
- data/features/modal_dialog.feature +15 -15
- data/features/multi_elements.feature +486 -486
- data/features/nested_elements.feature +117 -117
- data/features/ordered_list.feature +56 -56
- data/features/page_level_actions.feature +90 -90
- data/features/paragraph.feature +35 -35
- data/features/radio_button.feature +58 -58
- data/features/radio_button_collinson.feature +12 -58
- data/features/radio_button_group.feature +29 -29
- data/features/sample-app/public/jquery-1.3.2.js +4376 -4376
- data/features/sample-app/public/jquery.html +30 -30
- data/features/sample-app/public/prototype-1.6.0.3.js +4319 -4319
- data/features/sample-app/public/prototype.html +35 -35
- data/features/sample-app/sample_app.rb +35 -35
- data/features/select_list.feature +86 -86
- data/features/span.feature +37 -37
- data/features/step_definitions/accessor_steps.rb +60 -60
- data/features/step_definitions/area_steps.rb +19 -19
- data/features/step_definitions/async_steps.rb +83 -83
- data/features/step_definitions/audio_steps.rb +27 -27
- data/features/step_definitions/button_steps.rb +43 -43
- data/features/step_definitions/canvas_steps.rb +15 -15
- data/features/step_definitions/check_box_steps.rb +35 -35
- data/features/step_definitions/div_steps.rb +19 -19
- data/features/step_definitions/element_steps.rb +266 -266
- data/features/step_definitions/file_field_steps.rb +19 -19
- data/features/step_definitions/form_steps.rb +18 -18
- data/features/step_definitions/frames_steps.rb +159 -159
- data/features/step_definitions/generic_element_steps.rb +31 -31
- data/features/step_definitions/gxt_table_steps.rb +58 -58
- data/features/step_definitions/headings_steps.rb +12 -12
- data/features/step_definitions/hidden_field_steps.rb +26 -26
- data/features/step_definitions/image_steps.rb +27 -27
- data/features/step_definitions/indexed_property_steps.rb +128 -128
- data/features/step_definitions/javascript_steps.rb +52 -52
- data/features/step_definitions/label_steps.rb +19 -19
- data/features/step_definitions/link_steps.rb +40 -40
- data/features/step_definitions/list_item_steps.rb +19 -19
- data/features/step_definitions/modal_dialog_steps.rb +62 -62
- data/features/step_definitions/multi_elements_steps.rb +528 -528
- data/features/step_definitions/nested_elements_steps.rb +212 -212
- data/features/step_definitions/ordered_list_steps.rb +23 -23
- data/features/step_definitions/page_level_actions_steps.rb +135 -135
- data/features/step_definitions/page_traversal_steps.rb +4 -4
- data/features/step_definitions/paragraph_steps.rb +28 -28
- data/features/step_definitions/radio_button_collinson_steps.rb +2 -46
- data/features/step_definitions/radio_button_group_steps.rb +35 -35
- data/features/step_definitions/radio_button_steps.rb +26 -46
- data/features/step_definitions/select_list_steps.rb +65 -65
- data/features/step_definitions/span_steps.rb +19 -19
- data/features/step_definitions/table_cell_steps.rb +14 -14
- data/features/step_definitions/table_steps.rb +66 -66
- data/features/step_definitions/text_area_steps.rb +34 -34
- data/features/step_definitions/text_field_steps.rb +35 -35
- data/features/step_definitions/unordered_list_steps.rb +23 -23
- data/features/step_definitions/video_steps.rb +45 -45
- data/features/support/ajax_text_environment.rb +26 -26
- data/features/support/env.rb +8 -8
- data/features/support/hooks.rb +8 -8
- data/features/support/page.rb +370 -364
- data/features/support/persistent_browser.rb +70 -70
- data/features/support/targets/firefox14_osx.rb +6 -6
- data/features/support/targets/firefox14_windows7.rb +6 -6
- data/features/support/url_helper.rb +57 -57
- data/features/table.feature +114 -114
- data/features/table_cell.feature +45 -45
- data/features/text_area.feature +51 -51
- data/features/text_field.feature +70 -70
- data/features/unordered_list.feature +56 -56
- data/features/video.feature +73 -73
- data/lib/page-object.rb +408 -408
- data/lib/page-object/accessors.rb +1313 -1313
- data/lib/page-object/core_ext/string.rb +4 -4
- data/lib/page-object/element_locators.rb +21 -21
- data/lib/page-object/elements.rb +59 -59
- data/lib/page-object/elements/area.rb +31 -31
- data/lib/page-object/elements/audio.rb +9 -9
- data/lib/page-object/elements/button.rb +35 -35
- data/lib/page-object/elements/canvas.rb +23 -23
- data/lib/page-object/elements/check_box.rb +37 -37
- data/lib/page-object/elements/div.rb +19 -19
- data/lib/page-object/elements/element.rb +226 -226
- data/lib/page-object/elements/file_field.rb +38 -38
- data/lib/page-object/elements/form.rb +36 -36
- data/lib/page-object/elements/heading.rb +15 -15
- data/lib/page-object/elements/hidden_field.rb +22 -22
- data/lib/page-object/elements/image.rb +36 -36
- data/lib/page-object/elements/label.rb +36 -36
- data/lib/page-object/elements/link.rb +46 -46
- data/lib/page-object/elements/list_item.rb +19 -19
- data/lib/page-object/elements/media.rb +45 -45
- data/lib/page-object/elements/option.rb +10 -10
- data/lib/page-object/elements/ordered_list.rb +50 -50
- data/lib/page-object/elements/paragraph.rb +9 -9
- data/lib/page-object/elements/radio_button.rb +37 -37
- data/lib/page-object/elements/select_list.rb +42 -42
- data/lib/page-object/elements/span.rb +19 -19
- data/lib/page-object/elements/table.rb +68 -68
- data/lib/page-object/elements/table_cell.rb +28 -28
- data/lib/page-object/elements/table_row.rb +50 -50
- data/lib/page-object/elements/text_area.rb +38 -38
- data/lib/page-object/elements/text_field.rb +42 -42
- data/lib/page-object/elements/unordered_list.rb +51 -51
- data/lib/page-object/elements/video.rb +18 -18
- data/lib/page-object/indexed_properties.rb +36 -36
- data/lib/page-object/javascript/jquery.rb +14 -14
- data/lib/page-object/javascript/prototype.rb +14 -14
- data/lib/page-object/javascript/yui.rb +18 -18
- data/lib/page-object/javascript_framework_facade.rb +78 -78
- data/lib/page-object/loads_platform.rb +26 -26
- data/lib/page-object/locator_generator.rb +129 -129
- data/lib/page-object/nested_elements.rb +17 -17
- data/lib/page-object/page_factory.rb +108 -108
- data/lib/page-object/page_populator.rb +92 -92
- data/lib/page-object/platforms.rb +18 -18
- data/lib/page-object/platforms/selenium_webdriver.rb +17 -17
- data/lib/page-object/platforms/selenium_webdriver/button.rb +14 -14
- data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -29
- data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -291
- data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -16
- data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -16
- data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -28
- data/lib/page-object/platforms/selenium_webdriver/label.rb +17 -18
- data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -23
- data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -39
- data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1136 -1136
- data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -22
- data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -93
- data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -42
- data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -42
- data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -43
- data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -17
- data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -17
- data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -39
- data/lib/page-object/platforms/watir_webdriver.rb +18 -18
- data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -29
- data/lib/page-object/platforms/watir_webdriver/element.rb +249 -249
- data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -16
- data/lib/page-object/platforms/watir_webdriver/form.rb +16 -16
- data/lib/page-object/platforms/watir_webdriver/image.rb +22 -22
- data/lib/page-object/platforms/watir_webdriver/label.rb +17 -18
- data/lib/page-object/platforms/watir_webdriver/link.rb +15 -15
- data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -35
- data/lib/page-object/platforms/watir_webdriver/page_object.rb +1029 -1029
- data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -22
- data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -74
- data/lib/page-object/platforms/watir_webdriver/table.rb +38 -38
- data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -37
- data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -23
- data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -16
- data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -36
- data/lib/page-object/version.rb +4 -4
- data/lib/page-object/widgets.rb +133 -133
- data/meeane-page-object.gemspec +32 -32
- data/spec/page-object/element_locators_spec.rb +1065 -1065
- data/spec/page-object/elements/area_spec.rb +45 -45
- data/spec/page-object/elements/button_spec.rb +50 -50
- data/spec/page-object/elements/canvas_spec.rb +40 -40
- data/spec/page-object/elements/check_box_spec.rb +49 -49
- data/spec/page-object/elements/div_spec.rb +28 -28
- data/spec/page-object/elements/element_spec.rb +114 -114
- data/spec/page-object/elements/file_field_spec.rb +39 -39
- data/spec/page-object/elements/form_spec.rb +28 -28
- data/spec/page-object/elements/heading_spec.rb +48 -48
- data/spec/page-object/elements/hidden_field_spec.rb +28 -28
- data/spec/page-object/elements/image_spec.rb +66 -66
- data/spec/page-object/elements/label_spec.rb +29 -29
- data/spec/page-object/elements/link_spec.rb +49 -49
- data/spec/page-object/elements/list_item_spec.rb +28 -28
- data/spec/page-object/elements/nested_element_spec.rb +254 -254
- data/spec/page-object/elements/option_spec.rb +11 -11
- data/spec/page-object/elements/ordered_list_spec.rb +94 -94
- data/spec/page-object/elements/paragraph_spec.rb +28 -28
- data/spec/page-object/elements/select_list_spec.rb +142 -142
- data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -44
- data/spec/page-object/elements/selenium/text_field_spec.rb +49 -49
- data/spec/page-object/elements/selenium_element_spec.rb +172 -172
- data/spec/page-object/elements/span_spec.rb +26 -26
- data/spec/page-object/elements/table_cell_spec.rb +21 -21
- data/spec/page-object/elements/table_row_spec.rb +70 -70
- data/spec/page-object/elements/table_spec.rb +98 -98
- data/spec/page-object/elements/text_area_spec.rb +39 -39
- data/spec/page-object/elements/unordered_list_spec.rb +95 -95
- data/spec/page-object/elements/watir_element_spec.rb +142 -142
- data/spec/page-object/javascript_framework_facade_spec.rb +61 -61
- data/spec/page-object/loads_platform_spec.rb +53 -53
- data/spec/page-object/page-object_spec.rb +405 -405
- data/spec/page-object/page_factory_spec.rb +256 -256
- data/spec/page-object/page_populator_spec.rb +122 -122
- data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -68
- data/spec/page-object/platforms/selenium_webdriver_spec.rb +28 -28
- data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -29
- data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -9
- data/spec/page-object/selenium_accessors_spec.rb +589 -589
- data/spec/page-object/watir_accessors_spec.rb +1107 -1107
- data/spec/page-object/widget_spec.rb +226 -226
- data/spec/spec_helper.rb +44 -44
- metadata +193 -43
data/Gemfile
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
source "http://rubygems.org"
|
|
2
|
-
|
|
3
|
-
# adding rake so travis-ci will build properly
|
|
4
|
-
gem 'rake'
|
|
5
|
-
gem 'fuubar'
|
|
6
|
-
gem 'fuubar-cucumber'
|
|
7
|
-
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
|
|
8
|
-
gem 'growl'
|
|
9
|
-
gem 'guard-rspec'
|
|
10
|
-
gem 'guard-cucumber'
|
|
11
|
-
gem 'net-http-persistent'
|
|
12
|
-
|
|
13
|
-
gemspec
|
|
1
|
+
source "http://rubygems.org"
|
|
2
|
+
|
|
3
|
+
# adding rake so travis-ci will build properly
|
|
4
|
+
gem 'rake'
|
|
5
|
+
gem 'fuubar'
|
|
6
|
+
gem 'fuubar-cucumber'
|
|
7
|
+
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
|
|
8
|
+
gem 'growl'
|
|
9
|
+
gem 'guard-rspec'
|
|
10
|
+
gem 'guard-cucumber'
|
|
11
|
+
gem 'net-http-persistent'
|
|
12
|
+
|
|
13
|
+
gemspec
|
data/Guardfile
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
# A sample Guardfile
|
|
2
|
-
# More info at https://github.com/guard/guard#readme
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
guard :rspec, cmd: 'rspec --color --format Fuubar' do
|
|
6
|
-
watch(%r{^spec/.+_spec\.rb$})
|
|
7
|
-
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
|
8
|
-
watch(%r{^lib/page-object/platforms/(.+)/.+\.rb$}) do |m|
|
|
9
|
-
["spec/page-object/platforms/#{m[1]}/", "spec/page-object/page-object_spec.rb"]
|
|
10
|
-
end
|
|
11
|
-
watch('spec/spec_helper.rb') { "spec" }
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
guard 'cucumber', notification: true, all_after_pass: false, cli: '--profile focus' do
|
|
15
|
-
watch(%r{^features/.+\.feature$})
|
|
16
|
-
watch(%r{^features/support/.+$}) { "features" }
|
|
17
|
-
watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
|
|
18
|
-
watch(%r{^lib/.+\.rb$}) { "features" }
|
|
19
|
-
watch(%r{^cucumber.yml$}) { "features" }
|
|
20
|
-
end
|
|
1
|
+
# A sample Guardfile
|
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
guard :rspec, cmd: 'rspec --color --format Fuubar' do
|
|
6
|
+
watch(%r{^spec/.+_spec\.rb$})
|
|
7
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
|
8
|
+
watch(%r{^lib/page-object/platforms/(.+)/.+\.rb$}) do |m|
|
|
9
|
+
["spec/page-object/platforms/#{m[1]}/", "spec/page-object/page-object_spec.rb"]
|
|
10
|
+
end
|
|
11
|
+
watch('spec/spec_helper.rb') { "spec" }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
guard 'cucumber', notification: true, all_after_pass: false, cli: '--profile focus' do
|
|
15
|
+
watch(%r{^features/.+\.feature$})
|
|
16
|
+
watch(%r{^features/support/.+$}) { "features" }
|
|
17
|
+
watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
|
|
18
|
+
watch(%r{^lib/.+\.rb$}) { "features" }
|
|
19
|
+
watch(%r{^cucumber.yml$}) { "features" }
|
|
20
|
+
end
|
data/LICENSE
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
Copyright (c) 2011-2012 Jeff Morgan
|
|
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
|
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
Copyright (c) 2011-2012 Jeff Morgan
|
|
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
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
|
@@ -69,7 +69,7 @@ When you include this module numerous methods are added to your class that allow
|
|
|
69
69
|
class LoginPage
|
|
70
70
|
include PageObject
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
text_field(:username, :id => 'username')
|
|
73
73
|
text_field(:password, :id => 'password')
|
|
74
74
|
button(:login, :id => 'login')
|
|
75
75
|
end
|
data/Rakefile
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
require 'rubygems'
|
|
2
|
-
require 'bundler'
|
|
3
|
-
require 'rspec/core/rake_task'
|
|
4
|
-
require 'cucumber'
|
|
5
|
-
require 'cucumber/rake/task'
|
|
6
|
-
|
|
7
|
-
Bundler::GemHelper.install_tasks
|
|
8
|
-
|
|
9
|
-
RSpec::Core::RakeTask.new(:spec) do |spec|
|
|
10
|
-
spec.ruby_opts = "-I lib:spec"
|
|
11
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
|
12
|
-
end
|
|
13
|
-
task :spec
|
|
14
|
-
|
|
15
|
-
namespace :features do
|
|
16
|
-
Cucumber::Rake::Task.new(:watir_webdriver, "Run features with Watir") do |t|
|
|
17
|
-
t.profile = "watir_webdriver"
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
Cucumber::Rake::Task.new(:selenium_webdriver, "Run features with Selenium") do |t|
|
|
21
|
-
t.profile = "selenium_webdriver"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
desc 'Run all features'
|
|
25
|
-
task :all => [:watir_webdriver, :selenium_webdriver]
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
desc 'Run all specs and cukes'
|
|
29
|
-
task :test => ['spec', 'features:all']
|
|
30
|
-
|
|
31
|
-
task :lib do
|
|
32
|
-
$LOAD_PATH.unshift(File.expand_path("lib", File.dirname(__FILE__)))
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
task :default => :test
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'bundler'
|
|
3
|
+
require 'rspec/core/rake_task'
|
|
4
|
+
require 'cucumber'
|
|
5
|
+
require 'cucumber/rake/task'
|
|
6
|
+
|
|
7
|
+
Bundler::GemHelper.install_tasks
|
|
8
|
+
|
|
9
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
|
10
|
+
spec.ruby_opts = "-I lib:spec"
|
|
11
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
|
12
|
+
end
|
|
13
|
+
task :spec
|
|
14
|
+
|
|
15
|
+
namespace :features do
|
|
16
|
+
Cucumber::Rake::Task.new(:watir_webdriver, "Run features with Watir") do |t|
|
|
17
|
+
t.profile = "watir_webdriver"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
Cucumber::Rake::Task.new(:selenium_webdriver, "Run features with Selenium") do |t|
|
|
21
|
+
t.profile = "selenium_webdriver"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
desc 'Run all features'
|
|
25
|
+
task :all => [:watir_webdriver, :selenium_webdriver]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
desc 'Run all specs and cukes'
|
|
29
|
+
task :test => ['spec', 'features:all']
|
|
30
|
+
|
|
31
|
+
task :lib do
|
|
32
|
+
$LOAD_PATH.unshift(File.expand_path("lib", File.dirname(__FILE__)))
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
task :default => :test
|
data/cucumber.yml
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<%
|
|
2
|
-
std_opts = "--no-source --color --format pretty" # Cucumber::Formatter::Fuubar"
|
|
3
|
-
%>
|
|
4
|
-
|
|
5
|
-
default: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only
|
|
6
|
-
watir_webdriver: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only
|
|
7
|
-
selenium_webdriver: DRIVER=SELENIUM <%= std_opts %> --tags ~@watir_only
|
|
8
|
-
focus: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only --tags @focus
|
|
9
|
-
#focus: DRIVER=SELENIUM <%= std_opts %> --tags ~@watir_only --tags @focus
|
|
10
|
-
|
|
1
|
+
<%
|
|
2
|
+
std_opts = "--no-source --color --format pretty" # Cucumber::Formatter::Fuubar"
|
|
3
|
+
%>
|
|
4
|
+
|
|
5
|
+
default: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only
|
|
6
|
+
watir_webdriver: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only
|
|
7
|
+
selenium_webdriver: DRIVER=SELENIUM <%= std_opts %> --tags ~@watir_only
|
|
8
|
+
focus: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only --tags @focus
|
|
9
|
+
#focus: DRIVER=SELENIUM <%= std_opts %> --tags ~@watir_only --tags @focus
|
|
10
|
+
|
data/features/area.feature
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
Feature: Area
|
|
2
|
-
|
|
3
|
-
Background:
|
|
4
|
-
Given I am on the static elements page
|
|
5
|
-
|
|
6
|
-
Scenario: Retrieve an area element
|
|
7
|
-
When I retrieve the area element
|
|
8
|
-
Then I should know it exists
|
|
9
|
-
And I should know it is visible
|
|
10
|
-
|
|
11
|
-
Scenario Outline: Locating areas on the page
|
|
12
|
-
When I search for the area by "<search_by>"
|
|
13
|
-
Then I should be able to click the area
|
|
14
|
-
|
|
15
|
-
Examples:
|
|
16
|
-
| search_by |
|
|
17
|
-
| id |
|
|
18
|
-
| class |
|
|
19
|
-
| name |
|
|
20
|
-
| xpath |
|
|
21
|
-
| index |
|
|
22
|
-
| css |
|
|
23
|
-
|
|
24
|
-
Scenario: Getting the coordinates for the area
|
|
25
|
-
When I retrieve the area element
|
|
26
|
-
Then I should see the coordinates are "0,0,82,126"
|
|
27
|
-
|
|
28
|
-
Scenario: Getting the shape for the area
|
|
29
|
-
When I retrieve the area element
|
|
30
|
-
Then I should see the shape is "rect"
|
|
31
|
-
|
|
32
|
-
Scenario: Getting the href from the area
|
|
33
|
-
When I retrieve the area element
|
|
34
|
-
Then I should see the href is "sun.html"
|
|
35
|
-
|
|
1
|
+
Feature: Area
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given I am on the static elements page
|
|
5
|
+
|
|
6
|
+
Scenario: Retrieve an area element
|
|
7
|
+
When I retrieve the area element
|
|
8
|
+
Then I should know it exists
|
|
9
|
+
And I should know it is visible
|
|
10
|
+
|
|
11
|
+
Scenario Outline: Locating areas on the page
|
|
12
|
+
When I search for the area by "<search_by>"
|
|
13
|
+
Then I should be able to click the area
|
|
14
|
+
|
|
15
|
+
Examples:
|
|
16
|
+
| search_by |
|
|
17
|
+
| id |
|
|
18
|
+
| class |
|
|
19
|
+
| name |
|
|
20
|
+
| xpath |
|
|
21
|
+
| index |
|
|
22
|
+
| css |
|
|
23
|
+
|
|
24
|
+
Scenario: Getting the coordinates for the area
|
|
25
|
+
When I retrieve the area element
|
|
26
|
+
Then I should see the coordinates are "0,0,82,126"
|
|
27
|
+
|
|
28
|
+
Scenario: Getting the shape for the area
|
|
29
|
+
When I retrieve the area element
|
|
30
|
+
Then I should see the shape is "rect"
|
|
31
|
+
|
|
32
|
+
Scenario: Getting the href from the area
|
|
33
|
+
When I retrieve the area element
|
|
34
|
+
Then I should see the href is "sun.html"
|
|
35
|
+
|
data/features/async.feature
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
Feature: Handling Asynch calls
|
|
2
|
-
|
|
3
|
-
Scenario: Link element methods
|
|
4
|
-
Given I am on the static elements page
|
|
5
|
-
When I retrieve a link element
|
|
6
|
-
Then I should be able to wait until it is present
|
|
7
|
-
And I should be able to wait until it is visible
|
|
8
|
-
And I should be able to wait until it is not visible
|
|
9
|
-
And I should be able to wait until a block returns true
|
|
10
|
-
|
|
11
|
-
Scenario: Click a button when it is visible
|
|
12
|
-
Given I am on the async elements page
|
|
13
|
-
When I make the button invisible
|
|
14
|
-
Then I should be able to click it when it becomses visible
|
|
15
|
-
|
|
16
|
-
Scenario: Wait until something is not visible
|
|
17
|
-
Given I am on the async elements page
|
|
18
|
-
Then I should be able to wait until the button becomes invisible
|
|
19
|
-
|
|
20
|
-
Scenario: Wait for an element to appear on the page
|
|
21
|
-
Given I am on the async elements page
|
|
22
|
-
When I add a button a few seconds from now
|
|
23
|
-
Then I should be able to click it when it gets added
|
|
24
|
-
|
|
25
|
-
Scenario: Wait for an element to disappear from the page
|
|
26
|
-
Given I am on the async elements page
|
|
27
|
-
When I add a button a few seconds from now
|
|
28
|
-
And I remove a button a few seconds from now
|
|
29
|
-
Then I should not be able to find the button
|
|
30
|
-
|
|
1
|
+
Feature: Handling Asynch calls
|
|
2
|
+
|
|
3
|
+
Scenario: Link element methods
|
|
4
|
+
Given I am on the static elements page
|
|
5
|
+
When I retrieve a link element
|
|
6
|
+
Then I should be able to wait until it is present
|
|
7
|
+
And I should be able to wait until it is visible
|
|
8
|
+
And I should be able to wait until it is not visible
|
|
9
|
+
And I should be able to wait until a block returns true
|
|
10
|
+
|
|
11
|
+
Scenario: Click a button when it is visible
|
|
12
|
+
Given I am on the async elements page
|
|
13
|
+
When I make the button invisible
|
|
14
|
+
Then I should be able to click it when it becomses visible
|
|
15
|
+
|
|
16
|
+
Scenario: Wait until something is not visible
|
|
17
|
+
Given I am on the async elements page
|
|
18
|
+
Then I should be able to wait until the button becomes invisible
|
|
19
|
+
|
|
20
|
+
Scenario: Wait for an element to appear on the page
|
|
21
|
+
Given I am on the async elements page
|
|
22
|
+
When I add a button a few seconds from now
|
|
23
|
+
Then I should be able to click it when it gets added
|
|
24
|
+
|
|
25
|
+
Scenario: Wait for an element to disappear from the page
|
|
26
|
+
Given I am on the async elements page
|
|
27
|
+
When I add a button a few seconds from now
|
|
28
|
+
And I remove a button a few seconds from now
|
|
29
|
+
Then I should not be able to find the button
|
|
30
|
+
|
data/features/audio.feature
CHANGED
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
Feature: Support for the audio element
|
|
2
|
-
|
|
3
|
-
Background:
|
|
4
|
-
Given I am on the static elements page
|
|
5
|
-
|
|
6
|
-
Scenario: finding an audio element
|
|
7
|
-
When I retrieve the audio element
|
|
8
|
-
Then I should know it exists
|
|
9
|
-
And I should know it is visible
|
|
10
|
-
|
|
11
|
-
Scenario Outline: Locating an audio element on the page
|
|
12
|
-
When I search for the audio element by "<search_by>"
|
|
13
|
-
Then I should know it is visible
|
|
14
|
-
|
|
15
|
-
Examples:
|
|
16
|
-
| search_by |
|
|
17
|
-
| id |
|
|
18
|
-
| class |
|
|
19
|
-
| name |
|
|
20
|
-
| xpath |
|
|
21
|
-
| index |
|
|
22
|
-
| css |
|
|
23
|
-
|
|
24
|
-
Scenario Outline: Locating audios using multiple parameters
|
|
25
|
-
When I search for the audio element by "<param1>" and "<param2>"
|
|
26
|
-
Then I should know it is visible
|
|
27
|
-
|
|
28
|
-
Examples:
|
|
29
|
-
| param1 | param2 |
|
|
30
|
-
| class | index |
|
|
31
|
-
| name | index |
|
|
32
|
-
|
|
33
|
-
Scenario: Should know if it is autoplay
|
|
34
|
-
When I retrieve the audio element
|
|
35
|
-
Then I should know the audio is not autoplay
|
|
36
|
-
|
|
37
|
-
Scenario: Should know if the controls are displayed
|
|
38
|
-
When I retrieve the audio element
|
|
39
|
-
Then I should know that the controls are displayed
|
|
40
|
-
|
|
41
|
-
Scenario: Should know if it is paused
|
|
42
|
-
When I retrieve the audio element
|
|
43
|
-
Then I should know that the audio is paused
|
|
44
|
-
|
|
45
|
-
Scenario: Should know its duration
|
|
46
|
-
When I retrieve the audio element
|
|
47
|
-
Then I should know that the duration is greater than 74 seconds
|
|
48
|
-
|
|
49
|
-
Scenario: Should know its volume
|
|
50
|
-
When I retrieve the audio element
|
|
51
|
-
Then I should know that its volume is 1
|
|
52
|
-
|
|
53
|
-
Scenario: Should know if it has ended
|
|
54
|
-
When I retrieve the audio element
|
|
55
|
-
Then I should know that it has not ended
|
|
56
|
-
|
|
57
|
-
Scenario: Should know if it is seeking
|
|
58
|
-
When I retrieve the audio element
|
|
59
|
-
Then I should know that it is not seeking
|
|
60
|
-
|
|
61
|
-
Scenario: Should know if it is in a loop
|
|
62
|
-
When I retrieve the audio element
|
|
63
|
-
Then I should know that it is not in a loop
|
|
64
|
-
|
|
65
|
-
Scenario: Should know if it is muted
|
|
66
|
-
When I retrieve the audio element
|
|
67
|
-
Then I should know that it is muted
|
|
68
|
-
|
|
1
|
+
Feature: Support for the audio element
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given I am on the static elements page
|
|
5
|
+
|
|
6
|
+
Scenario: finding an audio element
|
|
7
|
+
When I retrieve the audio element
|
|
8
|
+
Then I should know it exists
|
|
9
|
+
And I should know it is visible
|
|
10
|
+
|
|
11
|
+
Scenario Outline: Locating an audio element on the page
|
|
12
|
+
When I search for the audio element by "<search_by>"
|
|
13
|
+
Then I should know it is visible
|
|
14
|
+
|
|
15
|
+
Examples:
|
|
16
|
+
| search_by |
|
|
17
|
+
| id |
|
|
18
|
+
| class |
|
|
19
|
+
| name |
|
|
20
|
+
| xpath |
|
|
21
|
+
| index |
|
|
22
|
+
| css |
|
|
23
|
+
|
|
24
|
+
Scenario Outline: Locating audios using multiple parameters
|
|
25
|
+
When I search for the audio element by "<param1>" and "<param2>"
|
|
26
|
+
Then I should know it is visible
|
|
27
|
+
|
|
28
|
+
Examples:
|
|
29
|
+
| param1 | param2 |
|
|
30
|
+
| class | index |
|
|
31
|
+
| name | index |
|
|
32
|
+
|
|
33
|
+
Scenario: Should know if it is autoplay
|
|
34
|
+
When I retrieve the audio element
|
|
35
|
+
Then I should know the audio is not autoplay
|
|
36
|
+
|
|
37
|
+
Scenario: Should know if the controls are displayed
|
|
38
|
+
When I retrieve the audio element
|
|
39
|
+
Then I should know that the controls are displayed
|
|
40
|
+
|
|
41
|
+
Scenario: Should know if it is paused
|
|
42
|
+
When I retrieve the audio element
|
|
43
|
+
Then I should know that the audio is paused
|
|
44
|
+
|
|
45
|
+
Scenario: Should know its duration
|
|
46
|
+
When I retrieve the audio element
|
|
47
|
+
Then I should know that the duration is greater than 74 seconds
|
|
48
|
+
|
|
49
|
+
Scenario: Should know its volume
|
|
50
|
+
When I retrieve the audio element
|
|
51
|
+
Then I should know that its volume is 1
|
|
52
|
+
|
|
53
|
+
Scenario: Should know if it has ended
|
|
54
|
+
When I retrieve the audio element
|
|
55
|
+
Then I should know that it has not ended
|
|
56
|
+
|
|
57
|
+
Scenario: Should know if it is seeking
|
|
58
|
+
When I retrieve the audio element
|
|
59
|
+
Then I should know that it is not seeking
|
|
60
|
+
|
|
61
|
+
Scenario: Should know if it is in a loop
|
|
62
|
+
When I retrieve the audio element
|
|
63
|
+
Then I should know that it is not in a loop
|
|
64
|
+
|
|
65
|
+
Scenario: Should know if it is muted
|
|
66
|
+
When I retrieve the audio element
|
|
67
|
+
Then I should know that it is muted
|
|
68
|
+
|