diff --git a/features/show_statistics.feature b/features/show_statistics.feature index fb8a3951..40f3fa92 100644 --- a/features/show_statistics.feature +++ b/features/show_statistics.feature @@ -52,14 +52,14 @@ Feature: Show statistics Given I have 5 todos And I have 3 deferred todos When I go to the statistics page - And I click on the chart for running time of all incomplete actions + And I click on the chart for running time of all incomplete visible actions Then I should see a chart And I should see "Actions selected from week" And I should see 5 todos And I should see "to return to the statistics page" And I should see "to show the actions from week 0 and further" - @selenium + @javascript Scenario: I can edit the todos selected from a chart Given I have 5 todos When I go to the statistics page @@ -70,7 +70,7 @@ Feature: Show statistics Then I should not see the todo "todo 1" And I should see the todo "foo bar" - @selenium + @javascript Scenario: Marking a todo selected from a chart as complete will remove it from the page Given I have 5 todos When I go to the statistics page diff --git a/features/step_definitions/container_steps.rb b/features/step_definitions/container_steps.rb index 2de63bb4..a8c42412 100644 --- a/features/step_definitions/container_steps.rb +++ b/features/step_definitions/container_steps.rb @@ -3,9 +3,9 @@ When /^I collapse the context container of "([^"]*)"$/ do |context_name| context.should_not be_nil xpath = "//a[@id='toggle_c#{context.id}']" - selenium.is_visible(xpath).should be_true - - selenium.click(xpath) + toggle = page.find(:xpath, xpath) + toggle.should be_visible + toggle.click end When /^I toggle all collapsed context containers$/ do @@ -160,10 +160,9 @@ Then /^I should see "([^"]*)" in the active recurring todos container$/ do |repe unless repeat.nil? xpath = "//div[@id='active_recurring_todos_container']//div[@id='recurring_todo_#{repeat.id}']" - selenium.wait_for_element("xpath=#{xpath}", :timeout_in_seconds => 5) - selenium.is_visible(xpath).should be_true + page.should have_xpath(xpath, :visible => true) else - step "I should not see \"#{repeat_pattern}\"" + step "I should see \"#{repeat_pattern}\"" end end @@ -172,8 +171,7 @@ Then /^I should not see "([^"]*)" in the completed recurring todos container$/ d unless repeat.nil? xpath = "//div[@id='completed_recurring_todos_container']//div[@id='recurring_todo_#{repeat.id}']" - selenium.wait_for_element("xpath=#{xpath}", :timeout_in_seconds => 5) - selenium.is_visible(xpath).should be_true + page.should_not have_xpath(xpath, :visible => true) else step "I should not see \"#{repeat_pattern}\"" end diff --git a/features/step_definitions/generic_steps.rb b/features/step_definitions/generic_steps.rb index 06d8d7ae..1cb1d3b3 100644 --- a/features/step_definitions/generic_steps.rb +++ b/features/step_definitions/generic_steps.rb @@ -22,7 +22,7 @@ Then /^I should see an error flash message saying "([^"]*)"$/ do |message| end Then /^I should see "([^"]*)" $/ do |text| - Then "I should see \"#{text}\"" + step "I should see \"#{text}\"" end Then /^I should save and open the page$/ do diff --git a/features/step_definitions/integration_steps.rb b/features/step_definitions/integration_steps.rb index 10d5727d..79e175fd 100644 --- a/features/step_definitions/integration_steps.rb +++ b/features/step_definitions/integration_steps.rb @@ -1,23 +1,20 @@ Then /^I should see a message that you need a context to see scripts$/ do - Then 'I should see "You do not have any context yet. The script will be available after you add your first context"' + step 'I should see "You do not have any context yet. The script will be available after you add your first context"' end Then /^I should see scripts$/ do # check on a small snippet of the first applescript - Then 'I should see "set returnValue to call xmlrpc"' + step 'I should see "set returnValue to call xmlrpc"' end Then /^I should see a script "([^\"]*)" for "([^\"]*)"$/ do |script, context_name| - selenium.is_visible(script) + page.should have_css("##{script}", :visible => true) context = Context.find_by_name(context_name) - # wait for the script to refresh - wait_for :timeout => 15 do - selenium.is_text_present("#{context.id} (* #{context_name} *)") - end + page.should have_content("#{context.id} (* #{context_name} *)") # make sure the text is found within the textarea - script_source = selenium.get_text("//textarea[@id='#{script}']") + script_source = page.find(:xpath, "//textarea[@id='#{script}']").text script_source.should =~ /#{context.id} \(\* #{context_name} \*\)/ end diff --git a/features/step_definitions/stats_steps.rb b/features/step_definitions/stats_steps.rb index 21edddc8..619ebf6d 100644 --- a/features/step_definitions/stats_steps.rb +++ b/features/step_definitions/stats_steps.rb @@ -4,10 +4,15 @@ When /^I click on the chart for actions done in the last 12 months$/ do end Then /^I should see a chart$/ do - response.body.should =~ /open-flash-chart/m + page.should have_css("div.open-flash-chart") end When /^I click on the chart for running time of all incomplete actions$/ do # cannot really click the chart which is a swf visit stats_path + "/show_selected_actions_from_chart/art?index=0" end + +When /^I click on the chart for running time of all incomplete visible actions$/ do + # cannot really click the chart which is a swf + visit stats_path + "/show_selected_actions_from_chart/avrt?index=0" +end diff --git a/features/step_definitions/todo_edit_steps.rb b/features/step_definitions/todo_edit_steps.rb index 78216f86..c71244a4 100644 --- a/features/step_definitions/todo_edit_steps.rb +++ b/features/step_definitions/todo_edit_steps.rb @@ -49,14 +49,12 @@ When /^I unstar the action "([^"]*)"$/ do |action_description| xpath_unstarred = "//div[@id='line_todo_#{todo.id}']//img[@class='todo_star']" xpath_starred = "//div[@id='line_todo_#{todo.id}']//img[@class='todo_star starred']" - selenium.is_element_present(xpath_starred).should be_true + page.should have_xpath(xpath_starred) star_img = "//img[@id='star_img_#{todo.id}']" - selenium.click(star_img, :wait_for => :ajax, :javascript_framework => :jquery) - - wait_for :timeout => 5 do - selenium.is_element_present(xpath_unstarred) - end + page.find(:xpath, star_img).click + + page.should have_xpath(xpath_unstarred) end ####### Editing a todo using Edit Form ####### diff --git a/features/step_definitions/todo_steps.rb b/features/step_definitions/todo_steps.rb index 3fd5edfb..7e51e732 100644 --- a/features/step_definitions/todo_steps.rb +++ b/features/step_definitions/todo_steps.rb @@ -47,16 +47,12 @@ Then /^I should see an unstarred "([^"]*)"$/ do |action_description| todo.should_not be_nil xpath_starred = "//div[@id='line_todo_#{todo.id}']//img[@class='todo_star']" - - wait_for :timeout => 5 do - selenium.is_element_present(xpath_starred) - end + page.should have_xpath(xpath_starred) end Then /^I should see ([0-9]+) todos$/ do |count| - count.to_i.downto 1 do |i| - match_xpath "div[" - end + total = page.all("div.item-container").inject(0) { |s, e| s+=1 } + total.should == count.to_i end Then /^there should not be an error$/ do @@ -132,17 +128,13 @@ Then /^the selected context should be "([^"]*)"$/ do |content| end Then /^I should see the page selector$/ do - page_selector_xpath = ".//a[@class='next_page']" - response.body.should have_xpath(page_selector_xpath) + page.should have_xpath(".//a[@class='next_page']") end Then /^the page should be "([^"]*)"$/ do |page_number| page_number_found = -1 page_number_xpath = ".//span[@class='current']" - response.should have_xpath(page_number_xpath) do |node| - page_number_found = node.first.content.to_i - end - page_number_found.should == page_number.to_i + page.find(:xpath, page_number_xpath).text.should == page_number end Then /^the project field of the new todo form should contain "([^"]*)"$/ do |project_name| @@ -196,6 +188,15 @@ Then /^I should see empty message for completed todos of home$/ do find("div#empty-d").should be_visible end +Then /^I should (see|not see) the empty tickler message$/ do |see| + elem = find("div#tickler-empty-nd") + if see=="see" + elem.should be_visible + else + elem.should_not be_visible + end +end + Then /^I should not see the notes of "([^"]*)"$/ do |todo_description| todo = @current_user.todos.find_by_description(todo_description) todo.should_not be_nil diff --git a/features/support/hooks.rb b/features/support/hooks.rb index f53087e8..85c80fa5 100644 --- a/features/support/hooks.rb +++ b/features/support/hooks.rb @@ -2,10 +2,3 @@ AfterStep('@pause') do print "Press Return to continue..." STDIN.getc end - -Before('@clear_cookies') do - cookies = selenium.cookies - cookies.split(';').each do | cookie | - selenium.delete_cookie(cookie) - end -end diff --git a/features/tagging_todos.feature b/features/tagging_todos.feature index 9e4847cf..7c3d82d9 100644 --- a/features/tagging_todos.feature +++ b/features/tagging_todos.feature @@ -15,7 +15,7 @@ Feature: Tagging todos When I go to the tag page for "starred" Then I should see "Currently there are no incomplete actions with the tag 'starred'" - @selenium + @javascript Scenario: I can remove a tag from a todo from the tag view and the todo will be removed Given I have a todo "fix tests" in context "@pc" with tags "now" When I go to the tag page for "now" @@ -23,19 +23,19 @@ Feature: Tagging todos When I edit the tags of "fix tests" to "later" Then I should not see "fix tests" - @selenium + @javascript Scenario: I can add a new todo from tag view with that tag and it will be added to the page When I go to the tag page for "tracks" And I submit a new action with description "prepare release" and the tags "tracks, release" in the context "@pc" Then I should see "prepare release" in the context container for "@pc" - @selenium + @javascript Scenario: I can add a new todo from tag view with a different tag and it will not be added to the page When I go to the tag page for "tracks" And I submit a new action with description "prepare release" and the tags "release, next" in the context "@pc" Then I should not see "prepare release" - @selenium + @javascript Scenario: I can move a tagged todo in tag view to a hidden project and it will move the todo on the page to the hidden container Given I have a hidden project called "secret" When I go to the tag page for "tracks" @@ -45,7 +45,7 @@ Feature: Tagging todos Then I should not see "prepare release" in the context container for "@pc" And I should see "prepare release" in the hidden container - @selenium + @javascript Scenario: I can move a tagged todo in tag view to a hidden context and it will move the todo on the page to the hidden container Given I have a hidden context called "@secret" When I go to the tag page for "tracks" @@ -55,7 +55,7 @@ Feature: Tagging todos Then I should not see "prepare release" in the context container for "@pc" Then I should see "prepare release" in the hidden container - @selenium + @javascript Scenario: Completing the last todo from the tag view will show the empty message Given I have a todo "migrate old scripts" in context "@pc" with tags "starred" When I go to the tag page for "starred" @@ -64,7 +64,7 @@ Feature: Tagging todos Then I should not see the context container for "@pc" And I should see "Currently there are no incomplete actions with the tag 'starred'" - @selenium + @javascript Scenario: Setting default tags for a project will prefill new todo form for that project When I go to the "hacking tracks" project Then the tag field in the new todo form should be empty @@ -77,7 +77,7 @@ Feature: Tagging todos When I submit a new action with description "are my tags prefilled" Then the tags of "are my tags prefilled" should be "tests" - @selenium + @javascript Scenario: If there are todos for a tag, when viewing the tag's page, the Tags field for new todos should be defaulted to that tag Given I have a todo "migrate old scripts" in context "@pc" with tags "starred" When I go to the tag page for "starred" diff --git a/features/tickler.feature b/features/tickler.feature index 446323be..0f6038a7 100644 --- a/features/tickler.feature +++ b/features/tickler.feature @@ -10,7 +10,7 @@ Feature: Manage deferred todos And there exists a project "manage me" for user "testuser" And I have logged in as "testuser" with password "secret" - @selenium + @javascript Scenario: I can add a deferred todo and it will show in the tickler # also adding the first deferred todo will hide the empty message Given I have a context called "test" @@ -20,7 +20,7 @@ Feature: Manage deferred todos Then I should see "a new next action" And I should not see the empty tickler message - @selenium + @javascript Scenario: Editing the description of a todo in the tickler updated the todo Given I have a deferred todo "not yet now" When I go to the tickler page @@ -29,7 +29,7 @@ Feature: Manage deferred todos Then I should not see "not yet now" And I should see "almost" - @selenium + @javascript Scenario: Editing the context of a todo moves it to the new context Given I have a context called "A" And I have a context called "B" @@ -40,7 +40,7 @@ Feature: Manage deferred todos Then I should see "not yet now" in the context container for "B" And I should not see "not yet now" in the context container for "A" - @selenium + @javascript Scenario: Removing the show from date from a todo removes it from the tickler Given I have a deferred todo "not yet now" When I go to the tickler page @@ -58,7 +58,7 @@ Feature: Manage deferred todos Then I should see "not yet now" And I should not see "now is a good time" - @selenium + @javascript Scenario: I can mark an action complete from the tickler Given I have a deferred todo "not yet now" When I go to the tickler page diff --git a/features/toggle_context_containers.feature b/features/toggle_context_containers.feature index fc1bbe37..1d018fca 100644 --- a/features/toggle_context_containers.feature +++ b/features/toggle_context_containers.feature @@ -9,7 +9,7 @@ Feature: Toggle the context containers | testuser | secret | false | And I have logged in as "testuser" with password "secret" - @selenium @clear_cookies + @javascript Scenario: I can toggle a context container Given I have the following contexts | context | hide | @@ -26,19 +26,19 @@ Feature: Toggle the context containers And I should see "test 2" in the context container for "@home" And I should see "test 3" in the context container for "@boss" When I collapse the context container of "@ipad" - Then I should not see "test 1" + Then I should not see the todo "test 1" And I should see "test 2" in the context container for "@home" And I should see "test 3" in the context container for "@boss" When I collapse the context container of "@home" - Then I should not see "test 1" - And I should not see "test 2" + Then I should not see the todo "test 1" + And I should not see the todo "test 2" And I should see "test 3" in the context container for "@boss" When I collapse the context container of "@boss" - Then I should not see "test 1" - And I should not see "test 2" - And I should not see "test 3" + Then I should not see the todo "test 1" + And I should not see the todo "test 2" + And I should not see the todo "test 3" - @selenium @clear_cookies + @javascript Scenario: I can hide all collapsed containers Given I have the following contexts | context | hide | @@ -57,9 +57,9 @@ Feature: Toggle the context containers When I collapse the context container of "@home" And I collapse the context container of "@boss" And I collapse the context container of "@ipad" - Then I should not see "test 1" - And I should not see "test 2" - And I should not see "test 3" + Then I should not see the todo "test 1" + And I should not see the todo "test 2" + And I should not see the todo "test 3" When I toggle all collapsed context containers Then I should not see the context container for "@home" And I should not see the context container for "@boss" diff --git a/features/view_done.feature b/features/view_done.feature index 4f9b1fee..be2ec55b 100644 --- a/features/view_done.feature +++ b/features/view_done.feature @@ -71,7 +71,7 @@ Feature: Show done | page | | all done actions page | | all done actions page for project "test project" | - | all done actions page for context "@pc" | + | all done actions page for context "@pc" | | all done actions page for tag "starred" | Scenario: The projects page shows a link to all completed projects