Make the selenium tests more elegant.

git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@586 a4c988fc-2ded-0310-b66e-134b36920a42
This commit is contained in:
lukemelia 2007-09-12 07:21:40 +00:00
parent 5cb42946c1
commit 4f3762a64c
5 changed files with 30 additions and 28 deletions

View file

@ -1,3 +1,15 @@
1. SQLITE3 FOR TESTING
By default, tests are configured to run using sqlite3 in memory mode to increase speed. You will need the sqlite3-ruby gem for this.
To avoid showing the migrations as tests are run, add the following to your database.yml below 'database: ":memory:"':
verbosity: quiet
If you want to run tests using another database, that's fine, too. Just change your database.yml accordingly.
2. SELENIUM TESTS
To run selenium tests, start Tracks in test mode using
script/server -e test

View file

@ -1,9 +1,8 @@
setup :fixtures => :users, :clear_tables => [:projects, :contexts, :todos]
login :as => 'admin'
open "/"
store_context_count 'initial_context_count'
type "todo_description", "a new action"
type "todo_context_name", "Brand new context"
click "css=#todo-form-new-action .submit_box button"
store_eval "${initial_context_count} + 1", 'expected_context_count'
wait_for_context_count "${expected_context_count}"
assert_context_count_incremented do
type "todo_description", "a new action"
type "todo_context_name", "Brand new context"
click "css=#todo-form-new-action .submit_box button"
end

View file

@ -1,9 +1,8 @@
setup :fixtures => :all
login :as => 'admin'
open "/"
store_context_count 'initial_context_count'
type "todo_description", "a new action"
type "todo_context_name", "Brand new context"
click "css=#todo-form-new-action .submit_box button"
store_eval "${initial_context_count} + 1", 'expected_context_count'
wait_for_context_count "${expected_context_count}"
assert_context_count_incremented do
type "todo_description", "a new action"
type "todo_context_name", "Brand new context"
click "css=#todo-form-new-action .submit_box button"
end

View file

@ -22,7 +22,8 @@ end
# For each +store_foo+ there's +assert_foo+, +assert_not_foo+, +verify_foo+,
# +verify_not_foo+, +wait_for_foo+, +wait_for_not_foo+.
module SeleniumOnRails::TestBuilderAccessors
# Has an alert occurred?
# How many elements with the class "context" are present on the page?
#
# Related Assertions, automatically generated:
# * +assert_context_count+
@ -41,4 +42,10 @@ module SeleniumOnRails::TestBuilderAccessors
end
end
def assert_context_count_incremented(&block)
store_context_count 'initial_context_count'
store_eval "${initial_context_count} + 1", 'expected_context_count'
yield
wait_for_context_count "${expected_context_count}"
end
end

View file

@ -1,20 +1,5 @@
/*
* By default, Selenium looks for a file called "user-extensions.js", and loads and javascript
* code found in that file. This file is a sample of what that file could look like.
*
* user-extensions.js provides a convenient location for adding extensions to Selenium, like
* new actions, checks and locator-strategies.
* By default, this file does not exist. Users can create this file and place their extension code
* in this common location, removing the need to modify the Selenium sources, and hopefully assisting
* with the upgrade process.
*
* You can find contributed extensions at http://wiki.openqa.org/display/SEL/Contributed%20User-Extensions
*/
// All get* methods on the Selenium prototype result in
// store, assert, assertNot, verify, verifyNot, waitFor, and waitForNot commands.
// E.g. add a getTextLength method that returns the length of the text
// of a specified element.
// Will result in support for storeContextCount, assertContextCount, etc.
Selenium.prototype.getContextCount = function() {
return this.browserbot.getCurrentWindow().$$('.context').length;