mirror of
https://github.com/TracksApp/tracks.git
synced 2026-02-25 08:34:08 +01:00
Added a set of Selenium helper classes and methods, to provide automatic login capabilities, to speed up selenium tests.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@482 a4c988fc-2ded-0310-b66e-134b36920a42
This commit is contained in:
parent
5a878b3e84
commit
cd25d7e278
26 changed files with 62 additions and 39 deletions
|
|
@ -22,3 +22,7 @@ config.action_mailer.delivery_method = :test
|
||||||
# config.instantiated_fixtures = false
|
# config.instantiated_fixtures = false
|
||||||
# config.pre_loaded_fixtures = false
|
# config.pre_loaded_fixtures = false
|
||||||
SALT = "change-me" unless defined?( SALT ).nil?
|
SALT = "change-me" unless defined?( SALT ).nil?
|
||||||
|
|
||||||
|
config.after_initialize do
|
||||||
|
require 'test/selenium_helper'
|
||||||
|
end
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/contexts"
|
open "/contexts"
|
||||||
click "css=#context_3 .buttons img.delete_item"
|
click "css=#context_3 .buttons img.delete_item"
|
||||||
assert_confirmation "Are you sure that you want to delete the context 'email'?"
|
assert_confirmation "Are you sure that you want to delete the context 'email'?"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/contexts"
|
open "/contexts"
|
||||||
click "css=#context_3 .buttons img.edit_item"
|
click "css=#context_3 .buttons img.edit_item"
|
||||||
wait_for_visible "edit_context_3"
|
wait_for_visible "edit_context_3"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/contexts"
|
open "/contexts"
|
||||||
click "css=#context_3 .buttons img.edit_item"
|
click "css=#context_3 .buttons img.edit_item"
|
||||||
wait_for_visible "edit_context_3"
|
wait_for_visible "edit_context_3"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
|
open '/'
|
||||||
click "xpath=//div[@id='c1'] //div[@id='todo_9'] //input[@class='item-checkbox']"
|
click "xpath=//div[@id='c1'] //div[@id='todo_9'] //input[@class='item-checkbox']"
|
||||||
wait_for_element_present "xpath=//div[@id='completed'] //div[@id='todo_9']"
|
wait_for_element_present "xpath=//div[@id='completed'] //div[@id='todo_9']"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
|
open '/'
|
||||||
click "xpath=//div[@id='c5'] //div[@id='todo_5'] //input[@class='item-checkbox']"
|
click "xpath=//div[@id='c5'] //div[@id='todo_5'] //input[@class='item-checkbox']"
|
||||||
wait_for_element_present "xpath=//div[@id='completed'] //div[@id='todo_5']"
|
wait_for_element_present "xpath=//div[@id='completed'] //div[@id='todo_5']"
|
||||||
wait_for_not_visible 'c5'
|
wait_for_not_visible 'c5'
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'jane', :password => 'sesame'
|
login :as => 'jane'
|
||||||
|
open '/'
|
||||||
click_and_wait "xpath=//div[@id='c10'] //div[@id='todo_16'] //input[@class='item-checkbox']"
|
click_and_wait "xpath=//div[@id='c10'] //div[@id='todo_16'] //input[@class='item-checkbox']"
|
||||||
assert_title "TRACKS::Project: Attend RailsConf"
|
assert_title "TRACKS::Project: Attend RailsConf"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
|
open '/'
|
||||||
click "xpath=//div[@id='completed'] //div[@id='todo_3'] //input[@class='item-checkbox']"
|
click "xpath=//div[@id='completed'] //div[@id='todo_3'] //input[@class='item-checkbox']"
|
||||||
wait_for_element_present "xpath=//div[@id='c4'] //div[@id='todo_3']"
|
wait_for_element_present "xpath=//div[@id='c4'] //div[@id='todo_3']"
|
||||||
assert_not_visible "c4empty-nd"
|
assert_not_visible "c4empty-nd"
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
open :controller => 'login', :action => 'logout'
|
open :controller => 'login', :action => 'logout'
|
||||||
open :controller => 'login'
|
open :controller => 'login'
|
||||||
assert_title 'exact:TRACKS::Login'
|
assert_title 'exact:TRACKS::Login'
|
||||||
type "user_login", "admin"
|
type "user_login", "admin"
|
||||||
type "user_password", "incorrect_password"
|
type "user_password", "incorrect_password"
|
||||||
click_and_wait "login"
|
click_and_wait "login"
|
||||||
assert_title 'exact:TRACKS::Login'
|
assert_title 'exact:TRACKS::Login'
|
||||||
verify_text_present 'Login unsuccessful'
|
verify_text_present 'Login unsuccessful'
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
|
open :controller => 'login', :action => 'logout'
|
||||||
open :controller => 'login', :action => 'logout'
|
open :controller => 'login'
|
||||||
open :controller => 'login'
|
assert_title 'exact:TRACKS::Login'
|
||||||
assert_title 'exact:TRACKS::Login'
|
type "user_login", "admin"
|
||||||
type "user_login", "admin"
|
type "user_password", "abracadabra"
|
||||||
type "user_password", "abracadabra"
|
click_and_wait "login"
|
||||||
click_and_wait "login"
|
assert_title 'exact:TRACKS::List tasks'
|
||||||
assert_title 'exact:TRACKS::List tasks'
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/projects/Build_a_working_time_machine"
|
open "/projects/Build_a_working_time_machine"
|
||||||
click_and_wait "css=#note_1 .link_to_notes"
|
click_and_wait "css=#note_1 .link_to_notes"
|
||||||
assert_element_present "note_1"
|
assert_element_present "note_1"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/notes/"
|
open "/notes/"
|
||||||
assert_element_present "note_1"
|
assert_element_present "note_1"
|
||||||
assert_element_present "note_2"
|
assert_element_present "note_2"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
next_available_todo_id = 18
|
next_available_todo_id = 18
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/projects/Build_a_working_time_machine"
|
open "/projects/Build_a_working_time_machine"
|
||||||
include_partial 'project_detail/add_deferred_todo'
|
include_partial 'project_detail/add_deferred_todo'
|
||||||
open "/projects/Build_a_working_time_machine"
|
open "/projects/Build_a_working_time_machine"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/projects/Build_a_working_time_machine"
|
open "/projects/Build_a_working_time_machine"
|
||||||
click "edit_icon_todo_15"
|
click "edit_icon_todo_15"
|
||||||
wait_for_element_present "show_from_todo_15"
|
wait_for_element_present "show_from_todo_15"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open '/projects/Build_a_working_time_machine'
|
open '/projects/Build_a_working_time_machine'
|
||||||
assert_checked 'project_state_active', 'ignored'
|
assert_checked 'project_state_active', 'ignored'
|
||||||
assert_attribute 'css=#project_status .active span', 'class', 'active_state'
|
assert_attribute 'css=#project_status .active span', 'class', 'active_state'
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/projects/Make_more_money_than_Billy_Gates"
|
open "/projects/Make_more_money_than_Billy_Gates"
|
||||||
include_partial 'project_detail/add_deferred_todo'
|
include_partial 'project_detail/add_deferred_todo'
|
||||||
assert_not_visible "tickler-empty-nd"
|
assert_not_visible "tickler-empty-nd"
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/projects/Build_a_working_time_machine"
|
open "/projects/Build_a_working_time_machine"
|
||||||
click "edit_icon_todo_5"
|
click "edit_icon_todo_5"
|
||||||
wait_for_element_present "show_from_todo_5"
|
wait_for_element_present "show_from_todo_5"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/projects/Build_a_working_time_machine"
|
open "/projects/Build_a_working_time_machine"
|
||||||
include_partial 'project_detail/add_deferred_todo'
|
include_partial 'project_detail/add_deferred_todo'
|
||||||
click "xpath=//div[@id='tickler'] //div[@id='todo_15'] //input[@class='item-checkbox']"
|
click "xpath=//div[@id='tickler'] //div[@id='todo_15'] //input[@class='item-checkbox']"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/projects/Build_a_working_time_machine"
|
open "/projects/Build_a_working_time_machine"
|
||||||
click "xpath=//div[@id='tickler'] //div[@id='todo_15'] //input[@class='item-checkbox']"
|
click "xpath=//div[@id='tickler'] //div[@id='todo_15'] //input[@class='item-checkbox']"
|
||||||
wait_for_visible "tickler-empty-nd"
|
wait_for_visible "tickler-empty-nd"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/projects"
|
open "/projects"
|
||||||
click "css=#project_2 .buttons img.delete_item"
|
click "css=#project_2 .buttons img.delete_item"
|
||||||
assert_confirmation "Are you sure that you want to delete the project 'Make more money than Billy Gates'?"
|
assert_confirmation "Are you sure that you want to delete the project 'Make more money than Billy Gates'?"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/projects"
|
open "/projects"
|
||||||
click "css=#project_2 .buttons img.edit_item"
|
click "css=#project_2 .buttons img.edit_item"
|
||||||
wait_for_visible "edit_project_2"
|
wait_for_visible "edit_project_2"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/projects"
|
open "/projects"
|
||||||
click "css=#project_2 .buttons img.edit_item"
|
click "css=#project_2 .buttons img.edit_item"
|
||||||
wait_for_visible "edit_project_2"
|
wait_for_visible "edit_project_2"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/todos/tag/foo"
|
open "/todos/tag/foo"
|
||||||
wait_for_element_present "xpath=//div[@id='c1'] //h2"
|
wait_for_element_present "xpath=//div[@id='c1'] //h2"
|
||||||
wait_for_text 'badge_count', '2'
|
wait_for_text 'badge_count', '2'
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
setup :fixtures => :all
|
setup :fixtures => :all
|
||||||
include_partial 'login/login', :username => 'admin', :password => 'abracadabra'
|
login :as => 'admin'
|
||||||
open "/tickler/"
|
open "/tickler/"
|
||||||
assert_element_present "todo_15"
|
assert_element_present "todo_15"
|
||||||
|
|
|
||||||
18
tracks/test/selenium_helper.rb
Normal file
18
tracks/test/selenium_helper.rb
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
class SeleniumHelperController < ActionController::Base
|
||||||
|
def login
|
||||||
|
if params[:as]
|
||||||
|
session['user_id'] = User.find_by_login(params[:as].to_s)
|
||||||
|
end
|
||||||
|
render :text => "Logged in as #{params[:as]}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
ActionController::Routing::Routes.add_route '/selenium_helper/login', :controller => 'selenium_helper', :action => 'login'
|
||||||
|
|
||||||
|
module SeleniumOnRails::TestBuilderActions
|
||||||
|
def login options = {}
|
||||||
|
options = {options => nil} unless options.is_a? Hash
|
||||||
|
opts = {:controller => 'selenium_helper', :action => 'login'}.merge(options)
|
||||||
|
open opts
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -111,6 +111,4 @@ class ActionController::IntegrationTest
|
||||||
assert_response_and_body 401, "401 Unauthorized: Only admin users are allowed access to this function."
|
assert_response_and_body 401, "401 Unauthorized: Only admin users are allowed access to this function."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
Loading…
Add table
Add a link
Reference in a new issue