raldred-webrat 0.4.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +346 -0
- data/MIT-LICENSE.txt +19 -0
- data/README.rdoc +85 -0
- data/Rakefile +168 -0
- data/install.rb +1 -0
- data/lib/webrat.rb +31 -0
- data/lib/webrat/core.rb +14 -0
- data/lib/webrat/core/configuration.rb +102 -0
- data/lib/webrat/core/elements/area.rb +31 -0
- data/lib/webrat/core/elements/element.rb +33 -0
- data/lib/webrat/core/elements/field.rb +405 -0
- data/lib/webrat/core/elements/form.rb +103 -0
- data/lib/webrat/core/elements/label.rb +31 -0
- data/lib/webrat/core/elements/link.rb +92 -0
- data/lib/webrat/core/elements/select_option.rb +35 -0
- data/lib/webrat/core/locators.rb +20 -0
- data/lib/webrat/core/locators/area_locator.rb +38 -0
- data/lib/webrat/core/locators/button_locator.rb +54 -0
- data/lib/webrat/core/locators/field_by_id_locator.rb +37 -0
- data/lib/webrat/core/locators/field_labeled_locator.rb +56 -0
- data/lib/webrat/core/locators/field_locator.rb +25 -0
- data/lib/webrat/core/locators/field_named_locator.rb +41 -0
- data/lib/webrat/core/locators/form_locator.rb +19 -0
- data/lib/webrat/core/locators/label_locator.rb +34 -0
- data/lib/webrat/core/locators/link_locator.rb +75 -0
- data/lib/webrat/core/locators/locator.rb +20 -0
- data/lib/webrat/core/locators/select_option_locator.rb +59 -0
- data/lib/webrat/core/logging.rb +24 -0
- data/lib/webrat/core/matchers.rb +4 -0
- data/lib/webrat/core/matchers/have_content.rb +73 -0
- data/lib/webrat/core/matchers/have_selector.rb +74 -0
- data/lib/webrat/core/matchers/have_tag.rb +21 -0
- data/lib/webrat/core/matchers/have_xpath.rb +147 -0
- data/lib/webrat/core/methods.rb +63 -0
- data/lib/webrat/core/mime.rb +29 -0
- data/lib/webrat/core/save_and_open_page.rb +50 -0
- data/lib/webrat/core/scope.rb +350 -0
- data/lib/webrat/core/session.rb +289 -0
- data/lib/webrat/core/xml.rb +115 -0
- data/lib/webrat/core/xml/hpricot.rb +19 -0
- data/lib/webrat/core/xml/nokogiri.rb +76 -0
- data/lib/webrat/core/xml/rexml.rb +24 -0
- data/lib/webrat/core_extensions/blank.rb +58 -0
- data/lib/webrat/core_extensions/deprecate.rb +8 -0
- data/lib/webrat/core_extensions/detect_mapped.rb +12 -0
- data/lib/webrat/core_extensions/meta_class.rb +6 -0
- data/lib/webrat/core_extensions/nil_to_param.rb +5 -0
- data/lib/webrat/core_extensions/tcp_socket.rb +27 -0
- data/lib/webrat/mechanize.rb +74 -0
- data/lib/webrat/merb.rb +9 -0
- data/lib/webrat/merb_session.rb +65 -0
- data/lib/webrat/rack.rb +24 -0
- data/lib/webrat/rack_test.rb +32 -0
- data/lib/webrat/rails.rb +105 -0
- data/lib/webrat/rspec-rails.rb +13 -0
- data/lib/webrat/selenium.rb +81 -0
- data/lib/webrat/selenium/application_server.rb +73 -0
- data/lib/webrat/selenium/location_strategy_javascript/button.js +19 -0
- data/lib/webrat/selenium/location_strategy_javascript/label.js +15 -0
- data/lib/webrat/selenium/location_strategy_javascript/webrat.js +5 -0
- data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +12 -0
- data/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -0
- data/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -0
- data/lib/webrat/selenium/matchers.rb +4 -0
- data/lib/webrat/selenium/matchers/have_content.rb +66 -0
- data/lib/webrat/selenium/matchers/have_selector.rb +49 -0
- data/lib/webrat/selenium/matchers/have_tag.rb +72 -0
- data/lib/webrat/selenium/matchers/have_xpath.rb +45 -0
- data/lib/webrat/selenium/merb_application_server.rb +48 -0
- data/lib/webrat/selenium/rails_application_server.rb +42 -0
- data/lib/webrat/selenium/selenium_extensions.js +6 -0
- data/lib/webrat/selenium/selenium_rc_server.rb +84 -0
- data/lib/webrat/selenium/selenium_session.rb +242 -0
- data/lib/webrat/selenium/silence_stream.rb +18 -0
- data/lib/webrat/selenium/sinatra_application_server.rb +35 -0
- data/lib/webrat/sinatra.rb +44 -0
- data/spec/fakes/test_session.rb +34 -0
- data/spec/integration/merb/app/controllers/application.rb +2 -0
- data/spec/integration/merb/app/controllers/exceptions.rb +13 -0
- data/spec/integration/merb/app/controllers/testing.rb +18 -0
- data/spec/integration/merb/config/environments/development.rb +15 -0
- data/spec/integration/merb/config/environments/rake.rb +11 -0
- data/spec/integration/merb/config/environments/test.rb +14 -0
- data/spec/integration/merb/config/init.rb +25 -0
- data/spec/integration/merb/config/rack.rb +11 -0
- data/spec/integration/merb/config/router.rb +33 -0
- data/spec/integration/merb/spec/spec_helper.rb +24 -0
- data/spec/integration/merb/spec/webrat_spec.rb +32 -0
- data/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
- data/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
- data/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
- data/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
- data/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
- data/spec/integration/rack/rack_app.rb +16 -0
- data/spec/integration/rack/test/test_helper.rb +20 -0
- data/spec/integration/rack/test/webrat_rack_test.rb +67 -0
- data/spec/integration/rails/app/controllers/application.rb +15 -0
- data/spec/integration/rails/app/controllers/buttons_controller.rb +7 -0
- data/spec/integration/rails/app/controllers/fields_controller.rb +4 -0
- data/spec/integration/rails/app/controllers/links_controller.rb +7 -0
- data/spec/integration/rails/app/controllers/webrat_controller.rb +39 -0
- data/spec/integration/rails/app/helpers/buttons_helper.rb +2 -0
- data/spec/integration/rails/app/helpers/fields_helper.rb +2 -0
- data/spec/integration/rails/app/helpers/links_helper.rb +2 -0
- data/spec/integration/rails/config/boot.rb +109 -0
- data/spec/integration/rails/config/environment.rb +12 -0
- data/spec/integration/rails/config/environments/development.rb +17 -0
- data/spec/integration/rails/config/environments/selenium.rb +22 -0
- data/spec/integration/rails/config/environments/test.rb +22 -0
- data/spec/integration/rails/config/initializers/inflections.rb +10 -0
- data/spec/integration/rails/config/initializers/mime_types.rb +5 -0
- data/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
- data/spec/integration/rails/config/routes.rb +17 -0
- data/spec/integration/rails/test/integration/button_click_test.rb +80 -0
- data/spec/integration/rails/test/integration/fill_in_test.rb +24 -0
- data/spec/integration/rails/test/integration/link_click_test.rb +21 -0
- data/spec/integration/rails/test/integration/webrat_test.rb +75 -0
- data/spec/integration/rails/test/test_helper.rb +25 -0
- data/spec/integration/sinatra/classic_app.rb +64 -0
- data/spec/integration/sinatra/modular_app.rb +16 -0
- data/spec/integration/sinatra/test/classic_app_test.rb +37 -0
- data/spec/integration/sinatra/test/modular_app_test.rb +18 -0
- data/spec/integration/sinatra/test/test_helper.rb +16 -0
- data/spec/private/core/configuration_spec.rb +106 -0
- data/spec/private/core/field_spec.rb +85 -0
- data/spec/private/core/link_spec.rb +24 -0
- data/spec/private/core/logging_spec.rb +10 -0
- data/spec/private/core/session_spec.rb +198 -0
- data/spec/private/mechanize/mechanize_session_spec.rb +81 -0
- data/spec/private/merb/merb_session_spec.rb +42 -0
- data/spec/private/nokogiri_spec.rb +77 -0
- data/spec/private/rails/attaches_file_spec.rb +81 -0
- data/spec/private/rails/rails_session_spec.rb +110 -0
- data/spec/public/basic_auth_spec.rb +24 -0
- data/spec/public/check_spec.rb +191 -0
- data/spec/public/choose_spec.rb +118 -0
- data/spec/public/click_area_spec.rb +106 -0
- data/spec/public/click_button_spec.rb +496 -0
- data/spec/public/click_link_spec.rb +541 -0
- data/spec/public/fill_in_spec.rb +209 -0
- data/spec/public/locators/field_by_xpath_spec.rb +19 -0
- data/spec/public/locators/field_labeled_spec.rb +172 -0
- data/spec/public/locators/field_with_id_spec.rb +16 -0
- data/spec/public/matchers/contain_spec.rb +114 -0
- data/spec/public/matchers/have_selector_spec.rb +142 -0
- data/spec/public/matchers/have_tag_spec.rb +39 -0
- data/spec/public/matchers/have_xpath_spec.rb +136 -0
- data/spec/public/reload_spec.rb +10 -0
- data/spec/public/save_and_open_spec.rb +51 -0
- data/spec/public/select_date_spec.rb +112 -0
- data/spec/public/select_datetime_spec.rb +137 -0
- data/spec/public/select_spec.rb +249 -0
- data/spec/public/select_time_spec.rb +100 -0
- data/spec/public/set_hidden_field_spec.rb +5 -0
- data/spec/public/submit_form_spec.rb +5 -0
- data/spec/public/visit_spec.rb +58 -0
- data/spec/public/within_spec.rb +177 -0
- data/spec/spec_helper.rb +50 -0
- data/vendor/selenium-server.jar +0 -0
- metadata +220 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Don't change this file!
|
|
2
|
+
# Configure your app in config/environment.rb and config/environments/*.rb
|
|
3
|
+
|
|
4
|
+
RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
|
|
5
|
+
|
|
6
|
+
module Rails
|
|
7
|
+
class << self
|
|
8
|
+
def boot!
|
|
9
|
+
unless booted?
|
|
10
|
+
preinitialize
|
|
11
|
+
pick_boot.run
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def booted?
|
|
16
|
+
defined? Rails::Initializer
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def pick_boot
|
|
20
|
+
(vendor_rails? ? VendorBoot : GemBoot).new
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def vendor_rails?
|
|
24
|
+
File.exist?("#{RAILS_ROOT}/vendor/rails")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def preinitialize
|
|
28
|
+
load(preinitializer_path) if File.exist?(preinitializer_path)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def preinitializer_path
|
|
32
|
+
"#{RAILS_ROOT}/config/preinitializer.rb"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
class Boot
|
|
37
|
+
def run
|
|
38
|
+
load_initializer
|
|
39
|
+
Rails::Initializer.run(:set_load_path)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
class VendorBoot < Boot
|
|
44
|
+
def load_initializer
|
|
45
|
+
require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
|
|
46
|
+
Rails::Initializer.run(:install_gem_spec_stubs)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
class GemBoot < Boot
|
|
51
|
+
def load_initializer
|
|
52
|
+
self.class.load_rubygems
|
|
53
|
+
load_rails_gem
|
|
54
|
+
require 'initializer'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def load_rails_gem
|
|
58
|
+
if version = self.class.gem_version
|
|
59
|
+
gem 'rails', version
|
|
60
|
+
else
|
|
61
|
+
gem 'rails'
|
|
62
|
+
end
|
|
63
|
+
rescue Gem::LoadError => load_error
|
|
64
|
+
$stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
|
|
65
|
+
exit 1
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
class << self
|
|
69
|
+
def rubygems_version
|
|
70
|
+
Gem::RubyGemsVersion rescue nil
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def gem_version
|
|
74
|
+
if defined? RAILS_GEM_VERSION
|
|
75
|
+
RAILS_GEM_VERSION
|
|
76
|
+
elsif ENV.include?('RAILS_GEM_VERSION')
|
|
77
|
+
ENV['RAILS_GEM_VERSION']
|
|
78
|
+
else
|
|
79
|
+
parse_gem_version(read_environment_rb)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def load_rubygems
|
|
84
|
+
require 'rubygems'
|
|
85
|
+
min_version = '1.3.1'
|
|
86
|
+
unless rubygems_version >= min_version
|
|
87
|
+
$stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
|
|
88
|
+
exit 1
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
rescue LoadError
|
|
92
|
+
$stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
|
|
93
|
+
exit 1
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def parse_gem_version(text)
|
|
97
|
+
$1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
private
|
|
101
|
+
def read_environment_rb
|
|
102
|
+
File.read("#{RAILS_ROOT}/config/environment.rb")
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# All that for this:
|
|
109
|
+
Rails.boot!
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
RAILS_GEM_VERSION = '2.2.2' unless defined? RAILS_GEM_VERSION
|
|
2
|
+
|
|
3
|
+
require File.join(File.dirname(__FILE__), 'boot')
|
|
4
|
+
|
|
5
|
+
Rails::Initializer.run do |config|
|
|
6
|
+
config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
|
|
7
|
+
config.time_zone = 'UTC'
|
|
8
|
+
config.action_controller.session = {
|
|
9
|
+
:session_key => '_rails_app_session',
|
|
10
|
+
:secret => '81f33872c27349e86f1dc2cd6708995b9c26578e6e2d8992e567cd64d96e844343149f6e2f44bf178304141db9ce39e741e0e60699867c29c51c6d7ef7dc9556'
|
|
11
|
+
}
|
|
12
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Settings specified here will take precedence over those in config/environment.rb
|
|
2
|
+
|
|
3
|
+
# In the development environment your application's code is reloaded on
|
|
4
|
+
# every request. This slows down response time but is perfect for development
|
|
5
|
+
# since you don't have to restart the webserver when you make code changes.
|
|
6
|
+
config.cache_classes = false
|
|
7
|
+
|
|
8
|
+
# Log error messages when you accidentally call methods on nil.
|
|
9
|
+
config.whiny_nils = true
|
|
10
|
+
|
|
11
|
+
# Show full error reports and disable caching
|
|
12
|
+
config.action_controller.consider_all_requests_local = true
|
|
13
|
+
config.action_view.debug_rjs = true
|
|
14
|
+
config.action_controller.perform_caching = false
|
|
15
|
+
|
|
16
|
+
# Don't care if the mailer can't send
|
|
17
|
+
config.action_mailer.raise_delivery_errors = false
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Settings specified here will take precedence over those in config/environment.rb
|
|
2
|
+
|
|
3
|
+
# The test environment is used exclusively to run your application's
|
|
4
|
+
# test suite. You never need to work with it otherwise. Remember that
|
|
5
|
+
# your test database is "scratch space" for the test suite and is wiped
|
|
6
|
+
# and recreated between test runs. Don't rely on the data there!
|
|
7
|
+
config.cache_classes = true
|
|
8
|
+
|
|
9
|
+
# Log error messages when you accidentally call methods on nil.
|
|
10
|
+
config.whiny_nils = true
|
|
11
|
+
|
|
12
|
+
# Show full error reports and disable caching
|
|
13
|
+
config.action_controller.consider_all_requests_local = true
|
|
14
|
+
config.action_controller.perform_caching = false
|
|
15
|
+
|
|
16
|
+
# Disable request forgery protection in test environment
|
|
17
|
+
config.action_controller.allow_forgery_protection = false
|
|
18
|
+
|
|
19
|
+
# Tell Action Mailer not to deliver emails to the real world.
|
|
20
|
+
# The :test delivery method accumulates sent emails in the
|
|
21
|
+
# ActionMailer::Base.deliveries array.
|
|
22
|
+
config.action_mailer.delivery_method = :test
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Settings specified here will take precedence over those in config/environment.rb
|
|
2
|
+
|
|
3
|
+
# The test environment is used exclusively to run your application's
|
|
4
|
+
# test suite. You never need to work with it otherwise. Remember that
|
|
5
|
+
# your test database is "scratch space" for the test suite and is wiped
|
|
6
|
+
# and recreated between test runs. Don't rely on the data there!
|
|
7
|
+
config.cache_classes = true
|
|
8
|
+
|
|
9
|
+
# Log error messages when you accidentally call methods on nil.
|
|
10
|
+
config.whiny_nils = true
|
|
11
|
+
|
|
12
|
+
# Show full error reports and disable caching
|
|
13
|
+
config.action_controller.consider_all_requests_local = true
|
|
14
|
+
config.action_controller.perform_caching = false
|
|
15
|
+
|
|
16
|
+
# Disable request forgery protection in test environment
|
|
17
|
+
config.action_controller.allow_forgery_protection = false
|
|
18
|
+
|
|
19
|
+
# Tell Action Mailer not to deliver emails to the real world.
|
|
20
|
+
# The :test delivery method accumulates sent emails in the
|
|
21
|
+
# ActionMailer::Base.deliveries array.
|
|
22
|
+
config.action_mailer.delivery_method = :test
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
|
2
|
+
|
|
3
|
+
# Add new inflection rules using the following format
|
|
4
|
+
# (all these examples are active by default):
|
|
5
|
+
# ActiveSupport::Inflector.inflections do |inflect|
|
|
6
|
+
# inflect.plural /^(ox)$/i, '\1en'
|
|
7
|
+
# inflect.singular /^(ox)en/i, '\1'
|
|
8
|
+
# inflect.irregular 'person', 'people'
|
|
9
|
+
# inflect.uncountable %w( fish sheep )
|
|
10
|
+
# end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# These settings change the behavior of Rails 2 apps and will be defaults
|
|
2
|
+
# for Rails 3. You can remove this initializer when Rails 3 is released.
|
|
3
|
+
|
|
4
|
+
if defined?(ActiveRecord)
|
|
5
|
+
# Include Active Record class name as root for JSON serialized output.
|
|
6
|
+
ActiveRecord::Base.include_root_in_json = true
|
|
7
|
+
|
|
8
|
+
# Store the full class name (including module namespace) in STI type column.
|
|
9
|
+
ActiveRecord::Base.store_full_sti_class = true
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Use ISO 8601 format for JSON serialized times and dates.
|
|
13
|
+
ActiveSupport.use_standard_json_time_format = true
|
|
14
|
+
|
|
15
|
+
# Don't escape HTML entities in JSON, leave that for the #json_escape helper.
|
|
16
|
+
# if you're including raw json in an HTML page.
|
|
17
|
+
ActiveSupport.escape_html_entities_in_json = false
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
ActionController::Routing::Routes.draw do |map|
|
|
2
|
+
map.resource 'links', :only => [:show]
|
|
3
|
+
map.resource 'buttons', :only => [:show, :create]
|
|
4
|
+
map.resource 'fields', :only => [:show]
|
|
5
|
+
map.with_options :controller => "webrat" do |webrat|
|
|
6
|
+
webrat.submit "/submit", :action => "submit"
|
|
7
|
+
webrat.internal_redirect "/internal_redirect", :action => "internal_redirect"
|
|
8
|
+
webrat.external_redirect "/external_redirect", :action => "external_redirect"
|
|
9
|
+
webrat.infinite_redirect "/infinite_redirect", :action => "infinite_redirect"
|
|
10
|
+
|
|
11
|
+
webrat.before_redirect_form "/before_redirect_form", :action => "before_redirect_form"
|
|
12
|
+
webrat.redirect_to_show_params "/redirect_to_show_params", :action => "redirect_to_show_params"
|
|
13
|
+
webrat.show_params "/show_params", :action => "show_params"
|
|
14
|
+
|
|
15
|
+
webrat.root :action => "form"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ButtonClickTest < ActionController::IntegrationTest
|
|
4
|
+
# <button type="button" ...>
|
|
5
|
+
test "should click button with type button by id" do
|
|
6
|
+
visit buttons_path
|
|
7
|
+
click_button "button_button_id"
|
|
8
|
+
end
|
|
9
|
+
test "should click button with type button by value" do
|
|
10
|
+
visit buttons_path
|
|
11
|
+
click_button "button_button_value"
|
|
12
|
+
end
|
|
13
|
+
test "should click button with type button by html" do
|
|
14
|
+
visit buttons_path
|
|
15
|
+
click_button "button_button_text"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# <button type="submit" ...>
|
|
19
|
+
test "should click button with type submit by id" do
|
|
20
|
+
visit buttons_path
|
|
21
|
+
click_button "button_submit_id"
|
|
22
|
+
end
|
|
23
|
+
test "should click button with type submit by value" do
|
|
24
|
+
visit buttons_path
|
|
25
|
+
click_button "button_submit_value"
|
|
26
|
+
end
|
|
27
|
+
test "should click button with type submit by html" do
|
|
28
|
+
visit buttons_path
|
|
29
|
+
click_button "button_submit_text"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# <button type="image" ...>
|
|
33
|
+
test "should click button with type image by id" do
|
|
34
|
+
visit buttons_path
|
|
35
|
+
click_button "button_image_id"
|
|
36
|
+
end
|
|
37
|
+
test "should click button with type image by value" do
|
|
38
|
+
visit buttons_path
|
|
39
|
+
click_button "button_image_value"
|
|
40
|
+
end
|
|
41
|
+
test "should click button with type image by html" do
|
|
42
|
+
visit buttons_path
|
|
43
|
+
click_button "button_image_text"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# <input type="button" ...>
|
|
47
|
+
test "should click image with type button by id" do
|
|
48
|
+
visit buttons_path
|
|
49
|
+
click_button "input_button_id"
|
|
50
|
+
end
|
|
51
|
+
test "should click input with type button by value" do
|
|
52
|
+
visit buttons_path
|
|
53
|
+
click_button "input_button_value"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# <input type="submit" ...>
|
|
57
|
+
test "should click input with type submit by id" do
|
|
58
|
+
visit buttons_path
|
|
59
|
+
click_button "input_submit_id"
|
|
60
|
+
end
|
|
61
|
+
test "should click input with type submit by value" do
|
|
62
|
+
visit buttons_path
|
|
63
|
+
click_button "input_submit_value"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# <input type="image" ...>
|
|
67
|
+
test "should click input with type image by id" do
|
|
68
|
+
visit buttons_path
|
|
69
|
+
click_button "input_image_id"
|
|
70
|
+
end
|
|
71
|
+
test "should click input with type image by value" do
|
|
72
|
+
visit buttons_path
|
|
73
|
+
click_button "input_image_value"
|
|
74
|
+
end
|
|
75
|
+
test "should click input with type image by alt" do
|
|
76
|
+
visit buttons_path
|
|
77
|
+
click_button "input_image_alt"
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class FillInTest < ActionController::IntegrationTest
|
|
4
|
+
test "should fill in text field by name" do
|
|
5
|
+
visit fields_path
|
|
6
|
+
fill_in "field_by_name", :with => "value"
|
|
7
|
+
end
|
|
8
|
+
test "should fill in text field by name, rails naming lh257" do
|
|
9
|
+
visit fields_path
|
|
10
|
+
fill_in "rails[naming]", :with => "value"
|
|
11
|
+
end
|
|
12
|
+
test "should fill in text field by id" do
|
|
13
|
+
visit fields_path
|
|
14
|
+
fill_in "field_by_id", :with => "value"
|
|
15
|
+
end
|
|
16
|
+
test "should fill in text field by label via id" do
|
|
17
|
+
visit fields_path
|
|
18
|
+
fill_in "FieldByLabelId", :with => "value"
|
|
19
|
+
end
|
|
20
|
+
test "should fill in text field by label with special characters" do
|
|
21
|
+
visit fields_path
|
|
22
|
+
fill_in "[Field]:", :with => "value"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class LinkClickTest < ActionController::IntegrationTest
|
|
4
|
+
test "should click link by text" do
|
|
5
|
+
visit links_path
|
|
6
|
+
click_link "LinkByText"
|
|
7
|
+
assert_contain("Link:LinkByText")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test "should click link by id" do
|
|
11
|
+
visit links_path
|
|
12
|
+
click_link "link_by_id"
|
|
13
|
+
assert_contain("Link:link_by_id")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
test "should click link by title" do
|
|
17
|
+
visit links_path
|
|
18
|
+
click_link "LinkByTitle"
|
|
19
|
+
assert_contain("Link:LinkByTitle")
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class WebratTest < ActionController::IntegrationTest
|
|
4
|
+
|
|
5
|
+
#Firefox raises a security concern under Selenium
|
|
6
|
+
unless ENV['WEBRAT_INTEGRATION_MODE'] == 'selenium'
|
|
7
|
+
test "should visit fully qualified urls" do
|
|
8
|
+
visit root_url(:host => "chunkybacon.example.com")
|
|
9
|
+
assert_equal "chunkybacon", request.subdomains.first
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test "should visit pages" do
|
|
14
|
+
visit root_path
|
|
15
|
+
assert_contain("Webrat Form")
|
|
16
|
+
assert URI.parse(current_url).path, root_path
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
test "should submit forms" do
|
|
20
|
+
visit root_path
|
|
21
|
+
fill_in "Text field", :with => "Hello"
|
|
22
|
+
check "TOS"
|
|
23
|
+
select "January"
|
|
24
|
+
click_button "Test"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
test "should check the value of a field" do
|
|
28
|
+
visit "/"
|
|
29
|
+
assert field_labeled("Prefilled").value, "text"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test "should not carry params through redirects" do
|
|
33
|
+
visit before_redirect_form_path
|
|
34
|
+
fill_in "Text field", :with => "value"
|
|
35
|
+
click_button
|
|
36
|
+
|
|
37
|
+
assert response.body !~ /value/
|
|
38
|
+
assert response.body =~ /custom_param/
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
test "should follow internal redirects" do
|
|
42
|
+
visit internal_redirect_path
|
|
43
|
+
assert !response.redirect?
|
|
44
|
+
assert response.body.include?("OK")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
test "should not follow external redirects" do
|
|
48
|
+
visit external_redirect_path
|
|
49
|
+
assert response.redirect?
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
test "should be able to assert xpath" do
|
|
53
|
+
visit root_path
|
|
54
|
+
assert_have_xpath "//h1"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
test "should be able to assert selector" do
|
|
58
|
+
visit root_path
|
|
59
|
+
assert_have_selector "h1"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Firefox detects and prevents infinite redirects under Selenium
|
|
63
|
+
unless ENV['WEBRAT_INTEGRATION_MODE'] == 'selenium'
|
|
64
|
+
test "should detect infinite redirects" do
|
|
65
|
+
assert_raises Webrat::InfiniteRedirectError do
|
|
66
|
+
visit infinite_redirect_path
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# test "should be able to assert have tag" do
|
|
72
|
+
# visit root_path
|
|
73
|
+
# assert_have_tag "h1"
|
|
74
|
+
# end
|
|
75
|
+
end
|