Commit 448366be970733fd723761e112b88c58ba96bfa1
Exists in
master
and in
29 other branches
Merge commit 'refs/merge-requests/267' of git://gitorious.org/noosfero/noosfero …
…into merge-requests/267 Conflicts: features/signup.feature features/step_definitions/noosfero_steps.rb Making tests on signup wait for the bot trap time and use selenium.
Showing
88 changed files
with
1169 additions
and
1311 deletions
Show diff stats
Gemfile
1 | 1 | source :rubygems |
2 | -gem 'cucumber', '0.4.0' | |
3 | -gem 'webrat', '0.5.1' | |
4 | -gem 'rspec', '1.2.9' | |
5 | -gem 'rspec-rails', '1.2.9' | |
6 | -gem 'Selenium', '>= 1.1.14' | |
7 | -gem 'selenium-client', '>= 1.2.17' | |
8 | -gem 'database_cleaner' | |
2 | + | |
9 | 3 | gem 'exception_notification', '1.0.20090728' |
10 | 4 | gem 'system_timer' |
11 | 5 | |
6 | +group :test do | |
7 | + gem 'rspec', '1.2.9' | |
8 | + gem 'rspec-rails', '1.2.9' | |
9 | +end | |
10 | + | |
11 | +group :cucumber do | |
12 | + gem 'rake', '0.8.7' | |
13 | + gem 'cucumber-rails', '0.3.2' | |
14 | + gem 'capybara', '1.1.1' | |
15 | + gem 'cucumber', '1.1.0' | |
16 | + gem 'database_cleaner' | |
17 | +end | |
18 | + | |
12 | 19 | def program(name) |
13 | 20 | unless system("which #{name} > /dev/null") |
14 | 21 | puts "W: Program #{name} is needed, but was not found in your PATH" | ... | ... |
Gemfile.lock
1 | 1 | GEM |
2 | 2 | remote: http://rubygems.org/ |
3 | 3 | specs: |
4 | - Selenium (1.1.14) | |
5 | - builder (3.0.0) | |
6 | - cucumber (0.4.0) | |
4 | + builder (3.1.4) | |
5 | + capybara (1.1.1) | |
6 | + mime-types (>= 1.16) | |
7 | + nokogiri (>= 1.3.3) | |
8 | + rack (>= 1.0.0) | |
9 | + rack-test (>= 0.5.4) | |
10 | + selenium-webdriver (~> 2.0) | |
11 | + xpath (~> 0.1.4) | |
12 | + childprocess (0.3.6) | |
13 | + ffi (~> 1.0, >= 1.0.6) | |
14 | + cucumber (1.1.0) | |
7 | 15 | builder (>= 2.1.2) |
8 | 16 | diff-lcs (>= 1.1.2) |
9 | - polyglot (>= 0.2.9) | |
10 | - term-ansicolor (>= 1.0.3) | |
11 | - treetop (>= 1.4.2) | |
12 | - database_cleaner (0.7.0) | |
17 | + gherkin (~> 2.5.0) | |
18 | + json (>= 1.4.6) | |
19 | + term-ansicolor (>= 1.0.6) | |
20 | + cucumber-rails (0.3.2) | |
21 | + cucumber (>= 0.8.0) | |
22 | + database_cleaner (0.9.1) | |
13 | 23 | diff-lcs (1.1.3) |
14 | 24 | exception_notification (1.0.20090728) |
15 | - nokogiri (1.5.0) | |
16 | - polyglot (0.3.3) | |
17 | - rack (1.3.5) | |
25 | + ffi (1.2.0) | |
26 | + gherkin (2.5.4) | |
27 | + json (>= 1.4.6) | |
28 | + json (1.7.5) | |
29 | + libwebsocket (0.1.6.1) | |
30 | + websocket | |
31 | + mime-types (1.19) | |
32 | + multi_json (1.3.7) | |
33 | + nokogiri (1.5.5) | |
34 | + rack (1.1.0) | |
35 | + rack-test (0.6.2) | |
36 | + rack (>= 1.0) | |
37 | + rake (0.8.7) | |
18 | 38 | rspec (1.2.9) |
19 | 39 | rspec-rails (1.2.9) |
20 | 40 | rack (>= 1.0.0) |
21 | 41 | rspec (>= 1.2.9) |
22 | - selenium-client (1.2.18) | |
42 | + rubyzip (0.9.9) | |
43 | + selenium-webdriver (2.26.0) | |
44 | + childprocess (>= 0.2.5) | |
45 | + libwebsocket (~> 0.1.3) | |
46 | + multi_json (~> 1.0) | |
47 | + rubyzip | |
23 | 48 | system_timer (1.2.4) |
24 | 49 | term-ansicolor (1.0.7) |
25 | - treetop (1.4.10) | |
26 | - polyglot | |
27 | - polyglot (>= 0.3.1) | |
28 | - webrat (0.5.1) | |
29 | - nokogiri (>= 1.2.0) | |
30 | - rack (>= 1.0) | |
50 | + websocket (1.0.4) | |
51 | + xpath (0.1.4) | |
52 | + nokogiri (~> 1.3) | |
31 | 53 | |
32 | 54 | PLATFORMS |
33 | 55 | ruby |
34 | 56 | |
35 | 57 | DEPENDENCIES |
36 | - Selenium (>= 1.1.14) | |
37 | - cucumber (= 0.4.0) | |
58 | + capybara (= 1.1.1) | |
59 | + cucumber (= 1.1.0) | |
60 | + cucumber-rails (= 0.3.2) | |
38 | 61 | database_cleaner |
39 | 62 | exception_notification (= 1.0.20090728) |
63 | + rake (= 0.8.7) | |
40 | 64 | rspec (= 1.2.9) |
41 | 65 | rspec-rails (= 1.2.9) |
42 | - selenium-client (>= 1.2.17) | |
43 | 66 | system_timer |
44 | - webrat (= 0.5.1) | ... | ... |
app/models/environment.rb
... | ... | @@ -618,12 +618,10 @@ class Environment < ActiveRecord::Base |
618 | 618 | end |
619 | 619 | |
620 | 620 | def top_url |
621 | - protocol = 'http' | |
622 | - result = "#{protocol}://#{default_hostname}" | |
623 | - if Noosfero.url_options.has_key?(:port) | |
624 | - result << ':' << Noosfero.url_options[:port].to_s | |
625 | - end | |
626 | - result | |
621 | + url = 'http://' | |
622 | + url << (Noosfero.url_options.key?(:host) ? Noosfero.url_options[:host] : default_hostname) | |
623 | + url << ':' << Noosfero.url_options[:port].to_s if Noosfero.url_options.key?(:port) | |
624 | + url | |
627 | 625 | end |
628 | 626 | |
629 | 627 | def to_s | ... | ... |
config/cucumber.yml
1 | -default: --tags ~@selenium,~@wip --exclude features/support/selenium.rb --exclude features/step_definitions/selenium_steps.rb -r features/support -r features/step_definitions | |
2 | -selenium: --tags @selenium,~@wip -r features/support -r features/step_definitions | |
1 | +default: --color --format progress --strict --tags ~@selenium --tags ~@selenium-fixme --tags ~@fixme --exclude features/support/selenium.rb -r features/support -r features/step_definitions | |
2 | +selenium: --strict --tags @selenium -r features/support -r features/step_definitions | ... | ... |
config/environments/cucumber.rb
1 | -# IMPORTANT: This file was generated by Cucumber 0.4.0 | |
2 | 1 | # Edit at your own peril - it's recommended to regenerate this file |
3 | 2 | # in the future when you upgrade to a newer version of Cucumber. |
4 | 3 | |
5 | -config.cache_classes = true # This must be true for Cucumber to operate correctly! | |
4 | +# IMPORTANT: Setting config.cache_classes to false is known to | |
5 | +# break Cucumber's use_transactional_fixtures method. | |
6 | +# For more information see https://rspec.lighthouseapp.com/projects/16211/tickets/165 | |
7 | +config.cache_classes = true | |
6 | 8 | |
7 | 9 | # Log error messages when you accidentally call methods on nil. |
8 | 10 | config.whiny_nils = true |
... | ... | @@ -18,3 +20,8 @@ config.action_controller.allow_forgery_protection = false |
18 | 20 | # The :test delivery method accumulates sent emails in the |
19 | 21 | # ActionMailer::Base.deliveries array. |
20 | 22 | config.action_mailer.delivery_method = :test |
23 | + | |
24 | +config.gem 'cucumber-rails', :lib => false, :version => '>=0.3.2' unless File.directory?(File.join(Rails.root, 'vendor/plugins/cucumber-rails')) | |
25 | +config.gem 'database_cleaner', :lib => false, :version => '>=0.5.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/database_cleaner')) | |
26 | +config.gem 'capybara', :lib => false, :version => '>=0.3.5' unless File.directory?(File.join(Rails.root, 'vendor/plugins/capybara')) | |
27 | + | ... | ... |
features/accept_member.feature
... | ... | @@ -17,7 +17,7 @@ Feature: accept member |
17 | 17 | Scenario: approve a task to accept a member as admin in a closed community |
18 | 18 | Given "Marie Curie" asked to join "My Community" |
19 | 19 | And I am logged in as "mario" |
20 | - And I go to My Community's control panel | |
20 | + And I go to mycommunity's control panel | |
21 | 21 | And I follow "Process requests" |
22 | 22 | And I should see "Marie Curie wants to be a member" |
23 | 23 | When I choose "Accept" |
... | ... | @@ -28,7 +28,7 @@ Feature: accept member |
28 | 28 | Scenario: approve a task to accept a member as member in a closed community |
29 | 29 | Given "Marie Curie" asked to join "My Community" |
30 | 30 | And I am logged in as "mario" |
31 | - And I go to My Community's control panel | |
31 | + And I go to mycommunity's control panel | |
32 | 32 | And I follow "Process requests" |
33 | 33 | And I should see "Marie Curie wants to be a member" |
34 | 34 | When I choose "Accept" |
... | ... | @@ -39,7 +39,7 @@ Feature: accept member |
39 | 39 | Scenario: approve a task to accept a member as moderator in a closed community |
40 | 40 | Given "Marie Curie" asked to join "My Community" |
41 | 41 | And I am logged in as "mario" |
42 | - And I go to My Community's control panel | |
42 | + And I go to mycommunity's control panel | |
43 | 43 | And I follow "Process requests" |
44 | 44 | And I should see "Marie Curie wants to be a member" |
45 | 45 | When I choose "Accept" | ... | ... |
features/activate_enterprise.feature
... | ... | @@ -11,7 +11,7 @@ Feature: activate enterprise |
11 | 11 | |
12 | 12 | Scenario: added an unexistent code |
13 | 13 | Given feature "enterprise_activation" is enabled on environment |
14 | - And I am on Joao Silva's control panel | |
14 | + And I am on joaosilva's control panel | |
15 | 15 | And I fill in "Enterprise activation code" with "abcde" |
16 | 16 | When I press "Activate" |
17 | 17 | Then I should see "Invalid enterprise code" |
... | ... | @@ -21,7 +21,7 @@ Feature: activate enterprise |
21 | 21 | And the following enterprises |
22 | 22 | | identifier | name | enabled | |
23 | 23 | | products-factory | Products Factory | false | |
24 | - And I am on Joao Silva's control panel | |
24 | + And I am on joaosilva's control panel | |
25 | 25 | And enterprise "Products Factory" is enabled |
26 | 26 | And I fill in "Enterprise activation code" with code of "Products Factory" |
27 | 27 | When I press "Activate" |
... | ... | @@ -32,7 +32,7 @@ Feature: activate enterprise |
32 | 32 | And the following enterprises |
33 | 33 | | identifier | name | enabled | |
34 | 34 | | products-factory | Products Factory | false | |
35 | - And I am on Joao Silva's control panel | |
35 | + And I am on joaosilva's control panel | |
36 | 36 | And I fill in "Enterprise activation code" with code of "Products Factory" |
37 | 37 | When I press "Activate" |
38 | 38 | Then I should see "We don't have enough information about your enterprise to identify you." |
... | ... | @@ -43,7 +43,7 @@ Feature: activate enterprise |
43 | 43 | And the following enterprises |
44 | 44 | | identifier | name | enabled | foundation_year | |
45 | 45 | | services-provider | Services Provider | false | 2000 | |
46 | - And I am on Joao Silva's control panel | |
46 | + And I am on joaosilva's control panel | |
47 | 47 | And I fill in "Enterprise activation code" with code of "Services Provider" |
48 | 48 | And I press "Activate" |
49 | 49 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "1999" |
... | ... | @@ -56,7 +56,7 @@ Feature: activate enterprise |
56 | 56 | And the following enterprises |
57 | 57 | | identifier | name | enabled | cnpj | |
58 | 58 | | services-provider | Services Provider | false | 94.132.024/0001-48 | |
59 | - And I am on Joao Silva's control panel | |
59 | + And I am on joaosilva's control panel | |
60 | 60 | And I fill in "Enterprise activation code" with code of "Services Provider" |
61 | 61 | And I press "Activate" |
62 | 62 | And I fill in "What is the CNPJ of your enterprise?" with "12345678912345" |
... | ... | @@ -70,9 +70,9 @@ Feature: activate enterprise |
70 | 70 | And the following enterprises |
71 | 71 | | identifier | name | enabled | foundation_year | |
72 | 72 | | services-provider | Services Provider | false | 2000 | |
73 | - And I visit "Joao Silva's control panel" and wait | |
73 | + And I go to joaosilva's control panel | |
74 | 74 | And I fill in "Enterprise activation code" with code of "Services Provider" |
75 | - And I press "Activate" and wait | |
75 | + And I press "Activate" | |
76 | 76 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" |
77 | 77 | And I press "Continue" |
78 | 78 | And I check "I read the terms of use and accepted them" |
... | ... | @@ -91,9 +91,9 @@ Feature: activate enterprise |
91 | 91 | | active-template | Active Template | false | 2000 | |
92 | 92 | And "Active Template" is the active enterprise template |
93 | 93 | And "Services Provider 2" doesnt have "Active Template" as template |
94 | - And I visit "Joao Silva's control panel" and wait | |
94 | + And I go to joaosilva's control panel | |
95 | 95 | And I fill in "Enterprise activation code" with code of "Services Provider 2" |
96 | - And I press "Activate" and wait | |
96 | + And I press "Activate" | |
97 | 97 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" |
98 | 98 | And I press "Continue" |
99 | 99 | And I check "I read the terms of use and accepted them" |
... | ... | @@ -113,9 +113,9 @@ Feature: activate enterprise |
113 | 113 | | active-template | Active Template | false | 2000 | |
114 | 114 | And "Active Template" is the active enterprise template |
115 | 115 | And "Services Provider 3" doesnt have "Active Template" as template |
116 | - When I visit "Joao Silva's control panel" and wait | |
116 | + When I go to joaosilva's control panel | |
117 | 117 | And I fill in "Enterprise activation code" with code of "Services Provider 3" |
118 | - And I press "Activate" and wait | |
118 | + And I press "Activate" | |
119 | 119 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" |
120 | 120 | And I press "Continue" |
121 | 121 | And I check "I read the terms of use and accepted them" | ... | ... |
features/admin_categories.feature
... | ... | @@ -16,22 +16,22 @@ Feature: manage categories |
16 | 16 | @selenium |
17 | 17 | Scenario: admin user could access new category |
18 | 18 | Given I follow "Administration" |
19 | - When I follow "Manage Categories" | |
20 | - And I follow "New category" and wait | |
19 | + When I follow "Categories" | |
20 | + And I follow "New category" | |
21 | 21 | Then I should be on /admin/categories/new |
22 | 22 | |
23 | 23 | @selenium |
24 | 24 | Scenario: admin user could create a category |
25 | - Given I visit "/admin/categories/new" and wait | |
26 | - When I fill in "Name" with "Category 1" | |
27 | - And I press "Save" | |
28 | - Then I should see "Categories" | |
29 | - And I should see "Category 1" | |
25 | + Given I go to /admin/categories/new | |
26 | + And I fill in "Name" with "Category 1" | |
27 | + When I press "Save" | |
28 | + Then I should see "Categories" | |
29 | + And I should see "Category 1" | |
30 | 30 | |
31 | 31 | @selenium |
32 | 32 | Scenario: admin user could see all the category tree |
33 | 33 | Given I follow "Administration" |
34 | - And I follow "Manage Categories" | |
34 | + And I follow "Categories" | |
35 | 35 | When I follow "Show" |
36 | 36 | Then I should see "Vegetarian" |
37 | 37 | And I should see "Steak" |
... | ... | @@ -39,13 +39,13 @@ Feature: manage categories |
39 | 39 | @selenium |
40 | 40 | Scenario: admin user could hide the category tree |
41 | 41 | Given I follow "Administration" |
42 | - And I follow "Manage Categories" | |
43 | - When I follow "Show" | |
42 | + And I follow "Categories" | |
43 | + When I follow "Show" and wait while it hides | |
44 | 44 | Then I should see "Vegetarian" |
45 | 45 | And I should see "Steak" |
46 | - When I follow "Hide" and sleep 1 second | |
47 | - Then I should not see "Vegetarian" | |
48 | - And I should not see "Steak" | |
46 | + When I follow "Hide" and wait while it hides | |
47 | + Then "Vegetarian" should not be visible within "div" | |
48 | + And "Steak" should not be visible within "div" | |
49 | 49 | |
50 | 50 | @selenium |
51 | 51 | Scenario: the show link is available just for categories with category tree |
... | ... | @@ -54,7 +54,7 @@ Feature: manage categories |
54 | 54 | | Steak | Pig | true | |
55 | 55 | And I am on the homepage |
56 | 56 | When I follow "Administration" |
57 | - And I follow "Manage Categories" | |
57 | + And I follow "Categories" | |
58 | 58 | Then I should see "Food Show" |
59 | 59 | When I follow "Show" |
60 | 60 | Then I should see "Vegetarian" | ... | ... |
features/approve_article.feature
... | ... | @@ -19,52 +19,52 @@ Feature: approve article |
19 | 19 | And "Maria Silva" is a member of "Sample Community" |
20 | 20 | And "Joao Silva" is admin of "Sample Community" |
21 | 21 | |
22 | - @selenium | |
22 | + @selenium-fixme | |
23 | 23 | Scenario: edit an article before approval |
24 | 24 | Given I am logged in as "mariasilva" |
25 | - And I am on Maria Silva's homepage | |
26 | - When I follow "Spread" and wait | |
25 | + And I am on mariasilva's homepage | |
26 | + When I follow "Spread" | |
27 | 27 | And I check "Sample Community" |
28 | 28 | And I press "Spread this" |
29 | 29 | And I am logged in as "joaosilva" |
30 | - And I go to Sample Community's control panel | |
31 | - And I follow "Process requests" and wait | |
30 | + And I go to sample-community's control panel | |
31 | + And I follow "Process requests" | |
32 | 32 | And I fill in "Text" with "This is an article edited" |
33 | 33 | And I choose "Accept" |
34 | 34 | And I press "Apply!" |
35 | - And I go to Sample Community's sitemap | |
35 | + And I go to sample-community's sitemap | |
36 | 36 | And I follow "Sample Article" |
37 | 37 | Then I should see "This is an article edited" |
38 | 38 | |
39 | 39 | @selenium |
40 | 40 | Scenario: reject an article with explanation |
41 | 41 | Given I am logged in as "mariasilva" |
42 | - And I go to Maria Silva's cms | |
42 | + And I go to mariasilva's cms | |
43 | 43 | And I follow "Sample Article" |
44 | - And I follow "Spread" and wait | |
44 | + And I follow "Spread" | |
45 | 45 | And I check "Sample Community" |
46 | 46 | And I press "Spread this" |
47 | 47 | And I am logged in as "joaosilva" |
48 | - And I go to Sample Community's control panel | |
49 | - And I follow "Process requests" and wait | |
48 | + And I go to sample-community's control panel | |
49 | + And I follow "Process requests" | |
50 | 50 | And I choose "Reject" |
51 | 51 | And I fill in "Rejection explanation" with "This is not an appropriate article for this community." |
52 | 52 | And I press "Apply!" |
53 | - When I go to Sample Community's sitemap | |
53 | + When I go to sample-community's sitemap | |
54 | 54 | Then I should not see "Sample Article" |
55 | 55 | |
56 | 56 | @selenium |
57 | 57 | Scenario: reject an article that was removed |
58 | 58 | Given I am logged in as "mariasilva" |
59 | 59 | And I follow "Dub Wars" |
60 | - And I follow "Spread" and wait | |
60 | + And I follow "Spread" | |
61 | 61 | And I check "Sample Community" |
62 | 62 | And I press "Spread this" |
63 | 63 | And I follow "Delete" |
64 | - And I press "Yes, I want." | |
64 | + And I confirm the browser dialog | |
65 | 65 | When I am logged in as "joaosilva" |
66 | - And I go to Sample Community's control panel | |
67 | - And I follow "Process requests" and wait | |
66 | + And I go to sample-community's control panel | |
67 | + And I follow "Process requests" | |
68 | 68 | And I choose "Reject" |
69 | 69 | And I fill in "Rejection explanation" with "Article was removed." |
70 | 70 | And I press "Apply!" | ... | ... |
features/balloon.feature
... | ... | @@ -12,7 +12,7 @@ Feature: balloon |
12 | 12 | @selenium |
13 | 13 | Scenario: I should not see trigger if not enabled |
14 | 14 | Given feature "show_balloon_with_profile_links_when_clicked" is disabled on environment |
15 | - When I go to /browse/people | |
15 | + When I go to /search/people | |
16 | 16 | Then I should not see "Profile links" |
17 | 17 | |
18 | 18 | @selenium |
... | ... | @@ -24,7 +24,7 @@ Feature: balloon |
24 | 24 | When I go to the homepage |
25 | 25 | Then I should not see "Friends" |
26 | 26 | |
27 | - @selenium | |
27 | + @selenium-fixme | |
28 | 28 | Scenario: I should see balloon when clicked on people block trigger |
29 | 29 | Given the following blocks |
30 | 30 | | owner | type | |
... | ... | @@ -34,10 +34,10 @@ Feature: balloon |
34 | 34 | And I follow "Profile links" |
35 | 35 | Then I should see "Friends" |
36 | 36 | |
37 | - @selenium | |
37 | + @selenium-fixme | |
38 | 38 | Scenario: I should see balloon when clicked on community block trigger |
39 | 39 | Given feature "show_balloon_with_profile_links_when_clicked" is enabled on environment |
40 | - When I go to /browse/communities | |
40 | + When I go to /search/communities | |
41 | 41 | And I follow "Profile links" |
42 | 42 | Then I should see "Members" |
43 | 43 | |
... | ... | @@ -53,7 +53,7 @@ Feature: balloon |
53 | 53 | When I go to /assets/communities |
54 | 54 | Then I should not see "Members" |
55 | 55 | |
56 | - @selenium | |
56 | + @selenium-fixme | |
57 | 57 | Scenario: I should see balloon when clicked on page trigger |
58 | 58 | Given feature "show_balloon_with_profile_links_when_clicked" is enabled on environment |
59 | 59 | When I go to /assets/communities | ... | ... |
features/blog.feature
... | ... | @@ -11,16 +11,16 @@ Feature: blog |
11 | 11 | And I am logged in as "joaosilva" |
12 | 12 | |
13 | 13 | Scenario: create a blog |
14 | - Given I go to the Control panel | |
14 | + Given I go to joaosilva's control panel | |
15 | 15 | And I follow "Create blog" |
16 | 16 | Then I should see "My Blog" |
17 | 17 | When I fill in "Title" with "My Blog" |
18 | 18 | And I press "Save" |
19 | - And I go to Joao Silva's control panel | |
19 | + And I go to joaosilva's control panel | |
20 | 20 | Then I should see "Configure blog" |
21 | 21 | |
22 | 22 | Scenario: redirect to blog after create blog from control panel |
23 | - Given I go to the Control panel | |
23 | + Given I go to joaosilva's control panel | |
24 | 24 | And I follow "Create blog" |
25 | 25 | Then I should see "My Blog" |
26 | 26 | When I fill in "Title" with "My Blog" |
... | ... | @@ -28,7 +28,7 @@ Feature: blog |
28 | 28 | Then I should be on /joaosilva/my-blog |
29 | 29 | |
30 | 30 | Scenario: redirect to blog after create blog from cms |
31 | - Given I go to the Control panel | |
31 | + Given I go to joaosilva's control panel | |
32 | 32 | And I follow "Manage Content" |
33 | 33 | And I follow "New content" |
34 | 34 | When I follow "Blog" |
... | ... | @@ -37,13 +37,13 @@ Feature: blog |
37 | 37 | Then I should be on /joaosilva/blog-from-cms |
38 | 38 | |
39 | 39 | Scenario: create multiple blogs |
40 | - Given I go to the Control panel | |
40 | + Given I go to joaosilva's control panel | |
41 | 41 | And I follow "Manage Content" |
42 | 42 | And I follow "New content" |
43 | 43 | And I follow "Blog" |
44 | 44 | And I fill in "Title" with "Blog One" |
45 | 45 | And I press "Save" |
46 | - Then I go to the Control panel | |
46 | + Then I go to joaosilva's control panel | |
47 | 47 | And I follow "Manage Content" |
48 | 48 | And I follow "New content" |
49 | 49 | And I follow "Blog" |
... | ... | @@ -53,7 +53,7 @@ Feature: blog |
53 | 53 | And I should be on /joaosilva/blog-two |
54 | 54 | |
55 | 55 | Scenario: cancel button back to cms |
56 | - Given I go to the Control panel | |
56 | + Given I go to joaosilva's control panel | |
57 | 57 | And I follow "Manage Content" |
58 | 58 | And I follow "New content" |
59 | 59 | And I follow "Blog" |
... | ... | @@ -61,7 +61,7 @@ Feature: blog |
61 | 61 | Then I should be on /myprofile/joaosilva/cms |
62 | 62 | |
63 | 63 | Scenario: cancel button back to myprofile |
64 | - Given I go to the Control panel | |
64 | + Given I go to joaosilva's control panel | |
65 | 65 | And I follow "Create blog" |
66 | 66 | When I follow "Cancel" within ".main-block" |
67 | 67 | Then I should be on /myprofile/joaosilva |
... | ... | @@ -71,7 +71,7 @@ Feature: blog |
71 | 71 | | owner | name | |
72 | 72 | | joaosilva | Blog One | |
73 | 73 | | joaosilva | Blog Two | |
74 | - And I go to the Control panel | |
74 | + And I go to joaosilva's control panel | |
75 | 75 | When I follow "Configure blog" |
76 | 76 | Then I should be on /myprofile/joaosilva/cms |
77 | 77 | |
... | ... | @@ -79,7 +79,7 @@ Feature: blog |
79 | 79 | Given the following blogs |
80 | 80 | | owner | name | |
81 | 81 | | joaosilva | Blog One | |
82 | - And I go to the Control panel | |
82 | + And I go to joaosilva's control panel | |
83 | 83 | When I follow "Configure blog" |
84 | 84 | Then I should be on edit "Blog One" by joaosilva |
85 | 85 | |
... | ... | @@ -89,14 +89,14 @@ Feature: blog |
89 | 89 | | owner | name | |
90 | 90 | | joaosilva | Blog One | |
91 | 91 | And I go to /joaosilva/blog-one |
92 | - When I follow "Configure blog" and wait | |
92 | + When I follow "Configure blog" | |
93 | 93 | Then I should be on edit "Blog One" by joaosilva |
94 | 94 | |
95 | 95 | Scenario: change address of blog |
96 | 96 | Given the following blogs |
97 | 97 | | owner | name | |
98 | 98 | | joaosilva | Blog One | |
99 | - And I go to the Control panel | |
99 | + And I go to joaosilva's control panel | |
100 | 100 | And I follow "Configure blog" |
101 | 101 | And I fill in "Address" with "blog-two" |
102 | 102 | And I press "Save" |
... | ... | @@ -104,7 +104,7 @@ Feature: blog |
104 | 104 | Then I should see "Blog One" |
105 | 105 | |
106 | 106 | Scenario: display tag list field when creating new blog |
107 | - Given I go to the Control panel | |
107 | + Given I go to joaosilva's control panel | |
108 | 108 | And I follow "Manage Content" |
109 | 109 | And I follow "New content" |
110 | 110 | When I follow "Blog" | ... | ... |
features/browse.feature
... | ... | @@ -15,17 +15,17 @@ Feature: browse |
15 | 15 | | comunity-silva | Community Silva | |
16 | 16 | | comunity-neto | Community Neto | |
17 | 17 | |
18 | - @selenium | |
18 | + @selenium-fixme | |
19 | 19 | Scenario: Show people browse menu |
20 | 20 | Given I should not see "More Recent" |
21 | 21 | And I should not see "More Active" |
22 | 22 | And I should not see "More Popular" |
23 | - When I click "#submenu-people-trigger" | |
23 | + When I follow "#submenu-people-trigger" | |
24 | 24 | Then I should see "More Recent" |
25 | 25 | And I should see "More Active" |
26 | 26 | And I should see "More Popular" |
27 | 27 | |
28 | - @selenium | |
28 | + @selenium-fixme | |
29 | 29 | Scenario: People browse menu should add logged information |
30 | 30 | Given I am logged in as "joaosilva" |
31 | 31 | And I should not see "More Recent" |
... | ... | @@ -33,13 +33,14 @@ Feature: browse |
33 | 33 | And I should not see "More Popular" |
34 | 34 | And I should not see "Invite friends" |
35 | 35 | And I should not see "My friends" |
36 | - When I click "#submenu-people-trigger" | |
36 | + When I follow "#submenu-people-trigger" | |
37 | 37 | Then I should see "More Recent" |
38 | 38 | And I should see "More Active" |
39 | 39 | And I should see "More Popular" |
40 | 40 | And I should see "Invite friends" |
41 | 41 | And I should see "My friends" |
42 | 42 | |
43 | + @fixme | |
43 | 44 | Scenario: Browse people by query |
44 | 45 | Given I go to /search/people |
45 | 46 | When I fill in "Silva" for "query" |
... | ... | @@ -50,7 +51,7 @@ Feature: browse |
50 | 51 | And I should not see "Community Silva" |
51 | 52 | And I should not see "Community Neto" |
52 | 53 | |
53 | - @selenium | |
54 | + @selenium-fixme | |
54 | 55 | Scenario: Communities browse menu should add logged information |
55 | 56 | Given I am logged in as "joaosilva" |
56 | 57 | When I go to /joaosilva |
... | ... | @@ -59,23 +60,24 @@ Feature: browse |
59 | 60 | And I should not see "More Popular" |
60 | 61 | And I should not see "My communities" |
61 | 62 | And I should not see "New community" |
62 | - When I click "#submenu-communities-trigger" | |
63 | + When I follow "#submenu-communities-trigger" | |
63 | 64 | Then I should see "More Recent" |
64 | 65 | And I should see "More Active" |
65 | 66 | And I should see "More Popular" |
66 | 67 | And I should see "My communities" |
67 | 68 | And I should see "New community" |
68 | 69 | |
69 | - @selenium | |
70 | + @selenium-fixme | |
70 | 71 | Scenario: Show communities browse menu |
71 | 72 | Given I should not see "More Recent" |
72 | 73 | And I should not see "More Active" |
73 | 74 | And I should not see "More Popular" |
74 | - When I click "#submenu-communities-trigger" | |
75 | + When I follow "#submenu-communities-trigger" | |
75 | 76 | Then I should see "More Recent" |
76 | 77 | And I should see "More Active" |
77 | 78 | And I should see "More Popular" |
78 | 79 | |
80 | + @fixme | |
79 | 81 | Scenario: Browse communities by query |
80 | 82 | When I go to /search/communities |
81 | 83 | And I fill in "Neto" for "query" |
... | ... | @@ -86,16 +88,17 @@ Feature: browse |
86 | 88 | And I should not see "Paulo Neto" |
87 | 89 | And I should not see "Community Silva" |
88 | 90 | |
89 | - @selenium | |
91 | + @selenium-fixme | |
90 | 92 | Scenario: Show contents browse menu |
91 | 93 | Given I should not see "More Comments" |
92 | 94 | And I should not see "More Views" |
93 | 95 | And I should not see "More Recent" |
94 | - When I click "#submenu-contents-trigger" | |
96 | + When I follow "#submenu-contents-trigger" | |
95 | 97 | Then I should see "More Comments" |
96 | 98 | And I should see "More Views" |
97 | 99 | And I should see "More Recent" |
98 | 100 | |
101 | + @fixme | |
99 | 102 | Scenario: Browse contents by query |
100 | 103 | Given the following articles |
101 | 104 | | owner | name | body | | ... | ... |
features/browse_catalogs.feature
... | ... | @@ -132,7 +132,7 @@ Feature: browse catalogs |
132 | 132 | And I should not see "qualifiers" |
133 | 133 | And I should not see "price composition" |
134 | 134 | |
135 | - @selenium | |
135 | + @selenium-fixme | |
136 | 136 | Scenario: display description button when needed (but not the description) |
137 | 137 | Given the following products |
138 | 138 | | owner | category | name | price | description | |
... | ... | @@ -142,22 +142,22 @@ Feature: browse catalogs |
142 | 142 | Then I should see "Produto2" within "li.product-link" |
143 | 143 | And I should see "12.34" within "span.product-price" |
144 | 144 | And I should see "description" within "#product-description-button" |
145 | - And the "product-description-button" should be visible | |
145 | + And "description" should not be visible within "product-description-button" | |
146 | 146 | And I should see "A small description" within "#product-description" |
147 | - And the "product-description" should not be visible | |
147 | + And "A small description for a product that doesn't exist" should not be visible within "product-description" | |
148 | 148 | |
149 | - @selenium | |
149 | + @selenium-fixme | |
150 | 150 | Scenario: display description when button is clicked |
151 | 151 | Given the following products |
152 | 152 | | owner | category | name | price | description | |
153 | 153 | | artebonito | categ1 | Produto3 | 12.34 | A small description for a product that doesn't exist. | |
154 | 154 | And I am on /catalog/artebonito |
155 | 155 | And I reload and wait for the page |
156 | - When I click "product-description-button" | |
156 | + When I follow "product-description-button" | |
157 | 157 | Then I should see "A small description" within "#product-description" |
158 | - And the "product-description" should be visible | |
158 | + And "A small description for a product that doesn't exist" should not be visible within "product-description" | |
159 | 159 | |
160 | - @selenium | |
160 | + @selenium-fixme | |
161 | 161 | Scenario: hide description |
162 | 162 | Given the following products |
163 | 163 | | owner | category | name | price | description | |
... | ... | @@ -198,7 +198,7 @@ Feature: browse catalogs |
198 | 198 | And I should see "Organic" within "span.search-product-qualifier" |
199 | 199 | And I should not see "price composition" |
200 | 200 | |
201 | - @selenium | |
201 | + @selenium-fixme | |
202 | 202 | Scenario: not display price composition button if price is not described |
203 | 203 | Given the following product |
204 | 204 | | owner | category | name | price | |
... | ... | @@ -212,7 +212,7 @@ Feature: browse catalogs |
212 | 212 | And I should see "10.00" within "span.product-price" |
213 | 213 | And the "#product-price-composition-button" should not be visible |
214 | 214 | |
215 | - @selenium | |
215 | + @selenium-fixme | |
216 | 216 | Scenario: display price composition button (but not inputs) |
217 | 217 | Given the following product |
218 | 218 | | owner | category | name | price | |
... | ... | @@ -229,7 +229,7 @@ Feature: browse catalogs |
229 | 229 | And I should see "food" within "#product-price-composition" |
230 | 230 | And I should see "10.00" within "#product-price-composition" |
231 | 231 | |
232 | - @selenium | |
232 | + @selenium-fixme | |
233 | 233 | Scenario: display price composition when button is clicked |
234 | 234 | Given the following product |
235 | 235 | | owner | category | name | price | |
... | ... | @@ -244,7 +244,7 @@ Feature: browse catalogs |
244 | 244 | And I should see "food" within "#product-price-composition" |
245 | 245 | And I should see "10.88" within "#product-price-composition" |
246 | 246 | |
247 | - @selenium | |
247 | + @selenium-fixme | |
248 | 248 | Scenario: display inputs and raw materials button when not completely filled |
249 | 249 | Given the following product |
250 | 250 | | owner | category | name | price | |
... | ... | @@ -260,7 +260,7 @@ Feature: browse catalogs |
260 | 260 | Then the "#inputs-button" should be visible |
261 | 261 | And I should see "inputs and raw materials" within "#inputs-button" |
262 | 262 | |
263 | - @selenium | |
263 | + @selenium-fixme | |
264 | 264 | Scenario: display inputs and raw materials button |
265 | 265 | Given the following product |
266 | 266 | | owner | category | name | price | |
... | ... | @@ -280,7 +280,7 @@ Feature: browse catalogs |
280 | 280 | And the "#inputs-description" should not be visible |
281 | 281 | And I should see "7.0 Liter of food" within "#inputs-description" |
282 | 282 | |
283 | - @selenium | |
283 | + @selenium-fixme | |
284 | 284 | Scenario: display inputs and raw materials description |
285 | 285 | Given the following product |
286 | 286 | | owner | category | name | price | |
... | ... | @@ -297,7 +297,7 @@ Feature: browse catalogs |
297 | 297 | Then the "#inputs-description" should be visible |
298 | 298 | And I should see "7.0 Liter of food" within "#inputs-description" |
299 | 299 | |
300 | - @selenium | |
300 | + @selenium-fixme | |
301 | 301 | Scenario: hide inputs and raw materials |
302 | 302 | Given the following product |
303 | 303 | | owner | category | name | price | | ... | ... |
features/browse_enterprises.feature
... | ... | @@ -24,7 +24,7 @@ Scenario: show profile links button |
24 | 24 | And I should not see "Members" |
25 | 25 | And I should not see "Agenda" |
26 | 26 | |
27 | -@selenium | |
27 | +@selenium-fixme | |
28 | 28 | Scenario: show profile links when clicked |
29 | 29 | Given I am on /assets/enterprises |
30 | 30 | When I follow "Profile links" |
... | ... | @@ -32,7 +32,7 @@ Scenario: show profile links when clicked |
32 | 32 | And I should see "Members" within "ul.menu-submenu-list" |
33 | 33 | And I should see "Agenda" within "ul.menu-submenu-list" |
34 | 34 | |
35 | -@selenium | |
35 | +@selenium-fixme | |
36 | 36 | Scenario: go to catalog when click on products link |
37 | 37 | Given I am on /assets/enterprises |
38 | 38 | When I follow "Profile links" | ... | ... |
features/categories_block.feature
... | ... | @@ -25,7 +25,7 @@ Feature: categories_block |
25 | 25 | | environment | CategoriesBlock | |
26 | 26 | And I am logged in as admin |
27 | 27 | |
28 | - @selenium | |
28 | + @selenium @ignore-hidden-elements | |
29 | 29 | Scenario: List just product categories |
30 | 30 | Given I go to /admin/environment_design |
31 | 31 | And I follow "Edit" within ".categories-block" |
... | ... | @@ -33,11 +33,11 @@ Feature: categories_block |
33 | 33 | When I press "Save" |
34 | 34 | Then I should see "Food" |
35 | 35 | And I should see "Book" |
36 | - And I should not see "Vegetarian" | |
37 | - And I should not see "Steak" | |
38 | - And I should not see "Fiction" | |
36 | + And "Vegetarian" should not be visible within "span#category-name" | |
37 | + And "Steak" should not be visible within "span#category-name" | |
38 | + And "Fiction" should not be visible within "span#category-name" | |
39 | 39 | |
40 | - @selenium | |
40 | + @selenium @ignore-hidden-elements | |
41 | 41 | Scenario: Show submenu if it exists |
42 | 42 | Given I go to /admin/environment_design |
43 | 43 | And I follow "Edit" within ".categories-block" |
... | ... | @@ -45,40 +45,39 @@ Feature: categories_block |
45 | 45 | And I press "Save" |
46 | 46 | Then I should see "Food" |
47 | 47 | And I should see "Book" |
48 | - And I should not see "Vegetarian" | |
49 | - And I should not see "Steak" | |
50 | - And I should not see "Literature" | |
51 | - When I click ".category-link-expand category-root" | |
48 | + And "Vegetarian" should not be visible within "span#category-name" | |
49 | + And "Steak" should not be visible within "span#category-name" | |
50 | + And "Literature" should not be visible within "span#category-name" | |
51 | + When I follow "block_2_category_2" | |
52 | 52 | Then I should see "Literature" |
53 | - When I click ".category-link-expand category-root" | |
53 | + When I follow "block_2_category_1" | |
54 | 54 | Then I should see "Vegetarian" |
55 | 55 | And I should see "Steak" |
56 | 56 | And I should not see "Fiction" |
57 | 57 | |
58 | - @selenium | |
58 | + @selenium @ignore-hidden-elements | |
59 | 59 | Scenario: Show only one submenu per time |
60 | 60 | Given I go to /admin/environment_design |
61 | 61 | And I follow "Edit" within ".categories-block" |
62 | 62 | And I check "Product" |
63 | 63 | And I press "Save" |
64 | 64 | Then I should see "Book" |
65 | - And I should not see "Literature" | |
66 | - When I click ".category-link-expand category-root" | |
65 | + And "Literature" should not be visible within "span#category-name" | |
66 | + When I follow "block_2_category_2" | |
67 | 67 | Then I should see "Literature" |
68 | 68 | |
69 | - @selenium | |
69 | + @selenium @ignore-hidden-elements | |
70 | 70 | Scenario: List just general categories |
71 | 71 | Given I go to /admin/environment_design |
72 | 72 | And I follow "Edit" within ".categories-block" |
73 | - And I check "Generic Category" | |
73 | + And I check "Generic category" | |
74 | 74 | When I press "Save" |
75 | 75 | Then I should see "Wood" |
76 | 76 | |
77 | - @selenium | |
77 | + @selenium @ignore-hidden-elements | |
78 | 78 | Scenario: List just regions |
79 | 79 | Given I go to /admin/environment_design |
80 | 80 | And I follow "Edit" within ".categories-block" |
81 | 81 | And I check "Region" |
82 | 82 | When I press "Save" |
83 | 83 | Then I should see "Bahia" |
84 | - | ... | ... |
features/change_organization_name.feature
... | ... | @@ -12,12 +12,12 @@ Feature: change organization name |
12 | 12 | | joaosilva | Joao Silva | |
13 | 13 | And "Joao Silva" is admin of "Sample Community" |
14 | 14 | And I am logged in as "joaosilva" |
15 | - And I am on Sample Community's control panel | |
15 | + And I am on sample-community's control panel | |
16 | 16 | And I follow "Community Info and settings" |
17 | 17 | And I fill in "Name" with "New Sample Community" |
18 | 18 | When I press "Save" |
19 | - Then I should be on New Sample Community's control panel | |
20 | - | |
19 | + Then I should be on sample-community's control panel | |
20 | + And I should see "New Sample Community" within "title" | |
21 | 21 | |
22 | 22 | Scenario: changing enterprise's name |
23 | 23 | Given the following enterprises |
... | ... | @@ -28,8 +28,9 @@ Feature: change organization name |
28 | 28 | | joaosilva | Joao Silva | |
29 | 29 | And "Joao Silva" is admin of "Sample Enterprise" |
30 | 30 | And I am logged in as "joaosilva" |
31 | - And I am on Sample Enterprise's control panel | |
31 | + And I am on sample-enterprise's control panel | |
32 | 32 | And I follow "Enterprise Info and settings" |
33 | 33 | And I fill in "Name" with "New Sample Enterprise" |
34 | 34 | When I press "Save" |
35 | - Then I should be on New Sample Enterprise's control panel | |
35 | + Then I should be on sample-enterprise's control panel | |
36 | + And I should see "New Sample Enterprise" within "title" | ... | ... |
features/chat.feature
... | ... | @@ -17,7 +17,7 @@ Feature: chat |
17 | 17 | Scenario: provide link to open chat |
18 | 18 | Given feature "xmpp_chat" is enabled on environment |
19 | 19 | And I am logged in as "tame" |
20 | - Then I should see "Open chat" link | |
20 | + Then I should see "Open chat" within "#user" | |
21 | 21 | |
22 | 22 | @selenium |
23 | 23 | Scenario: provide the chat online users content |
... | ... | @@ -30,18 +30,18 @@ Feature: chat |
30 | 30 | Given the profile "tame" has no blocks |
31 | 31 | And feature "xmpp_chat" is enabled on environment |
32 | 32 | And I am logged in as "tame" |
33 | - And I go to Tame's profile | |
34 | - When I click "#chat-online-users-title" | |
33 | + And I go to tame's profile | |
34 | + When I follow "chat-online-users-title" | |
35 | 35 | Then I should see "Maria Silva" |
36 | 36 | And I should see "Jose Silva" |
37 | 37 | |
38 | 38 | Scenario: not provide link to chat when environment not support that |
39 | 39 | Given I am logged in as "tame" |
40 | - Then I should not see "Open chat" link | |
40 | + Then I should not see "Open chat" within "#user" | |
41 | 41 | |
42 | 42 | Scenario: not provide link to chat when the user is logged out |
43 | - Given I am on Tame's homepage | |
44 | - Then I should not see "Open chat" link | |
43 | + Given I am on tame's homepage | |
44 | + Then I should not see "Open chat" within "#user" | |
45 | 45 | |
46 | 46 | @selenium |
47 | 47 | Scenario: not provide the chat online users list when environment not support that |
... | ... | @@ -71,8 +71,8 @@ Feature: chat |
71 | 71 | Given the profile "tame" has no blocks |
72 | 72 | And feature "xmpp_chat" is enabled on environment |
73 | 73 | And I am logged in as "tame" |
74 | - And I go to Tame's profile | |
75 | - When I click "#chat-online-users-title" | |
74 | + And I go to tame's profile | |
75 | + When I follow "chat-online-users-title" | |
76 | 76 | And I follow "Maria Silva" |
77 | 77 | And I select window "noosfero_chat" |
78 | 78 | Then I should see "Chat - Colivre.net - Friends online (0)" |
... | ... | @@ -83,7 +83,7 @@ Feature: chat |
83 | 83 | And I am logged in as "tame" |
84 | 84 | When I follow "Open chat" |
85 | 85 | And I select window "noosfero_chat" |
86 | - Then I should see "Offline" link | |
86 | + Then I should see "Offline" within "a" | |
87 | 87 | |
88 | 88 | @selenium |
89 | 89 | Scenario: view options to change my chat status through menu |
... | ... | @@ -91,13 +91,13 @@ Feature: chat |
91 | 91 | And I am logged in as "tame" |
92 | 92 | And I follow "Open chat" |
93 | 93 | When I select window "noosfero_chat" |
94 | - Then the "#chat-online" should not be visible | |
95 | - And the "#chat-busy" should not be visible | |
96 | - And the "#chat-disconnect" should not be visible | |
94 | + Then "Online" should not be visible within "#user-status" | |
95 | + And "Busy" should not be visible within "#user-status" | |
96 | + And "Sign out of chat" should not be visible within "#user-status" | |
97 | 97 | When I follow "Offline" |
98 | - Then the "#chat-connect" should be visible | |
99 | - And the "#chat-busy" should be visible | |
100 | - And the "#chat-disconnect" should be visible | |
98 | + Then "Online" should be visible within "#user-status" | |
99 | + And "Busy" should be visible within "#user-status" | |
100 | + And "Sign out of chat" should be visible within "#user-status" | |
101 | 101 | |
102 | 102 | @selenium |
103 | 103 | Scenario: link to open chatroom of a community |
... | ... | @@ -107,8 +107,8 @@ Feature: chat |
107 | 107 | And "Tame" is a member of "Autoramas" |
108 | 108 | And feature "xmpp_chat" is enabled on environment |
109 | 109 | And I am logged in as "tame" |
110 | - When I go to Autoramas's profile | |
111 | - Then I should see "Enter chat room" link | |
110 | + When I go to autoramas's profile | |
111 | + Then I should see "Enter chat room" | |
112 | 112 | |
113 | 113 | @selenium |
114 | 114 | Scenario: not see link to open chatroom of a community if not a member |
... | ... | @@ -117,8 +117,8 @@ Feature: chat |
117 | 117 | | autoramas | Autoramas | |
118 | 118 | And feature "xmpp_chat" is enabled on environment |
119 | 119 | And I am logged in as "tame" |
120 | - When I go to Autoramas's profile | |
121 | - Then I should not see "Enter chat room" link | |
120 | + When I go to autoramas's profile | |
121 | + Then I should not see "Enter chat room" within "a" | |
122 | 122 | |
123 | 123 | @selenium |
124 | 124 | Scenario: not see link to open chatroom of a community if xmpp_chat disabled |
... | ... | @@ -127,8 +127,8 @@ Feature: chat |
127 | 127 | | autoramas | Autoramas | |
128 | 128 | And "Tame" is a member of "Autoramas" |
129 | 129 | And I am logged in as "tame" |
130 | - When I go to Autoramas's profile | |
131 | - Then I should not see "Enter chat room" link | |
130 | + When I go to autoramas's profile | |
131 | + Then I should not see "Enter chat room" within "a" | |
132 | 132 | |
133 | 133 | @selenium |
134 | 134 | Scenario: open chatroom of a community in a new window |
... | ... | @@ -138,7 +138,7 @@ Feature: chat |
138 | 138 | | autoramas | Autoramas | |
139 | 139 | And "Tame" is a member of "Autoramas" |
140 | 140 | And I am logged in as "tame" |
141 | - When I go to Autoramas's profile | |
141 | + When I go to autoramas's profile | |
142 | 142 | And I follow "Enter chat room" |
143 | 143 | And I select window "noosfero_chat" |
144 | 144 | Then I should see "Chat - Colivre.net - Friends online (0)" | ... | ... |
features/clickable_images.feature
... | ... | @@ -22,7 +22,7 @@ Feature: clickable images |
22 | 22 | | owner | name | image | dimensions | |
23 | 23 | | booking | real | rails.png | 50x64 | |
24 | 24 | When I go to /booking/real |
25 | - Then I should not see "Zoom in" | |
25 | + Then "Zoom in" should not be visible within "a#zoomify-image" | |
26 | 26 | |
27 | 27 | @selenium |
28 | 28 | Scenario: not show link if image does not have dimensions set |
... | ... | @@ -30,9 +30,9 @@ Feature: clickable images |
30 | 30 | | owner | name | image | |
31 | 31 | | booking | not set | rails.png | |
32 | 32 | When I go to /booking/not-set |
33 | - Then I should not see "Zoom in" | |
33 | + Then "Zoom in" should not be visible within "a#zoomify-image" | |
34 | 34 | |
35 | - @selenium | |
35 | + @selenium-fixme | |
36 | 36 | Scenario: copy style from image |
37 | 37 | Given the following article with image |
38 | 38 | | owner | name | image | style | dimensions | |
... | ... | @@ -40,11 +40,11 @@ Feature: clickable images |
40 | 40 | When I go to /booking/with-style |
41 | 41 | Then "zoomable-image" should be right aligned |
42 | 42 | |
43 | - @selenium | |
43 | + @selenium-fixme | |
44 | 44 | Scenario: zoom image |
45 | 45 | Given the following article with image |
46 | 46 | | owner | name | image | dimensions | |
47 | 47 | | booking | zoom | rails.png | 25x32 | |
48 | 48 | When I go to /booking/zoom |
49 | - And I follow "Zoom in" | |
50 | - Then the "#fancybox-wrap" should be visible | |
49 | + And I follow "Zoom in" within "a#zoomify-image" | |
50 | + Then I should see "fancybox-wrap" | ... | ... |
features/comment.feature
... | ... | @@ -24,7 +24,7 @@ Feature: comment |
24 | 24 | When I press "Post comment" |
25 | 25 | Then I should not see "Hey ho, let's go" |
26 | 26 | |
27 | - @selenium | |
27 | + @selenium-fixme | |
28 | 28 | Scenario: post a comment while not authenticated |
29 | 29 | Given I am on /booking/article-to-comment |
30 | 30 | And I fill in "Name" with "Joey Ramone" |
... | ... | @@ -34,7 +34,7 @@ Feature: comment |
34 | 34 | When I press "Post comment" |
35 | 35 | Then I should see "Hey ho, let's go" |
36 | 36 | |
37 | - @selenium | |
37 | + @selenium-fixme | |
38 | 38 | Scenario: post comment while authenticated |
39 | 39 | Given I am logged in as "booking" |
40 | 40 | And I am on /booking/article-to-comment |
... | ... | @@ -43,7 +43,7 @@ Feature: comment |
43 | 43 | When I press "Post comment" |
44 | 44 | Then I should see "Hey ho, let's go" |
45 | 45 | |
46 | - @selenium | |
46 | + @selenium-fixme | |
47 | 47 | Scenario: redirect to right place after comment a picture |
48 | 48 | Given the following files |
49 | 49 | | owner | file | mime | |
... | ... | @@ -55,7 +55,7 @@ Feature: comment |
55 | 55 | When I press "Post comment" |
56 | 56 | Then I should be exactly on /booking/rails.png?view=true |
57 | 57 | |
58 | - @selenium | |
58 | + @selenium-fixme | |
59 | 59 | Scenario: show error messages when make a blank comment |
60 | 60 | Given I am logged in as "booking" |
61 | 61 | And I am on /booking/article-to-comment |
... | ... | @@ -63,7 +63,7 @@ Feature: comment |
63 | 63 | Then I should see "Title can't be blank" |
64 | 64 | And I should see "Body can't be blank" |
65 | 65 | |
66 | - @selenium | |
66 | + @selenium-fixme | |
67 | 67 | Scenario: disable post comment button |
68 | 68 | Given I am on /booking/article-to-comment |
69 | 69 | And I fill in "Name" with "Joey Ramone" |
... | ... | @@ -74,7 +74,7 @@ Feature: comment |
74 | 74 | Then the "value.Post comment" button should not be enabled |
75 | 75 | And I should see "Hey ho, let's go" |
76 | 76 | |
77 | - @selenium | |
77 | + @selenium-fixme | |
78 | 78 | Scenario: render comment form and go to bottom |
79 | 79 | Given I am on /booking/article-with-comment |
80 | 80 | When I follow "Post a comment" within ".post-comment-button" |
... | ... | @@ -82,7 +82,7 @@ Feature: comment |
82 | 82 | And I should be exactly on /booking/article-with-comment |
83 | 83 | And I should be moved to anchor "comment_form" |
84 | 84 | |
85 | - @selenium | |
85 | + @selenium-fixme | |
86 | 86 | Scenario: keep comments field filled while trying to do a comment |
87 | 87 | Given I am on /booking/article-with-comment |
88 | 88 | And I fill in "Name" with "Joey Ramone" | ... | ... |
features/comment_reply.feature
... | ... | @@ -25,7 +25,7 @@ Feature: comment |
25 | 25 | Then I should not see "Enter your comment" within "div.comment-balloon" |
26 | 26 | And I should see "Reply" within "div.comment-balloon" |
27 | 27 | |
28 | - @selenium | |
28 | + @selenium-fixme | |
29 | 29 | Scenario: show error messages when make a blank comment reply |
30 | 30 | Given I am logged in as "booking" |
31 | 31 | And I go to /booking/article-to-comment |
... | ... | @@ -53,7 +53,7 @@ Feature: comment |
53 | 53 | And I follow "Cancel" within ".comment-balloon" |
54 | 54 | Then I should see "Enter your comment" within "div.comment_reply.closed" |
55 | 55 | |
56 | - @selenium | |
56 | + @selenium-fixme | |
57 | 57 | Scenario: not render same reply form twice |
58 | 58 | Given I am on /booking/article-to-comment |
59 | 59 | When I follow "Reply" within ".comment-balloon" |
... | ... | @@ -62,7 +62,7 @@ Feature: comment |
62 | 62 | Then there should be 1 "comment_form" within "comment_reply" |
63 | 63 | And I should see "Enter your comment" within "div.comment_reply.opened" |
64 | 64 | |
65 | - @selenium | |
65 | + @selenium-fixme | |
66 | 66 | Scenario: reply a comment |
67 | 67 | Given I go to /booking/another-article |
68 | 68 | And I follow "Reply" within ".comment-balloon" |
... | ... | @@ -74,7 +74,7 @@ Feature: comment |
74 | 74 | Then I should see "Hey ho, let's go" within "ul.comment-replies" |
75 | 75 | And there should be 1 "comment-replies" within "article-comment" |
76 | 76 | |
77 | - @selenium | |
77 | + @selenium-fixme | |
78 | 78 | Scenario: redirect to right place after reply a picture comment |
79 | 79 | Given the following files |
80 | 80 | | owner | file | mime | | ... | ... |
features/contact.feature
... | ... | @@ -14,8 +14,8 @@ In order to ask questions and solve problems |
14 | 14 | |
15 | 15 | @selenium |
16 | 16 | Scenario: without states |
17 | - Given I am on Sample Community's homepage | |
18 | - When I follow "Send an e-mail" and wait | |
17 | + Given I am on sample-community's homepage | |
18 | + When I follow "Send an e-mail" | |
19 | 19 | Then I should not see "City and state" |
20 | 20 | |
21 | 21 | @selenium |
... | ... | @@ -23,7 +23,6 @@ In order to ask questions and solve problems |
23 | 23 | Given the following states |
24 | 24 | | name | |
25 | 25 | | Bahia | |
26 | - And I am on Sample Community's homepage | |
27 | - When I follow "Send an e-mail" and wait | |
26 | + And I am on sample-community's homepage | |
27 | + When I follow "Send an e-mail" | |
28 | 28 | Then I should see "City and state" |
29 | - | ... | ... |
features/create_community.feature
... | ... | @@ -11,7 +11,7 @@ Feature: create community |
11 | 11 | Scenario: a user creates a community |
12 | 12 | Given I am logged in as "joaosilva" |
13 | 13 | And feature "admin_must_approve_new_communities" is disabled on environment |
14 | - And I go to the Control panel | |
14 | + And I go to joaosilva's control panel | |
15 | 15 | And I follow "Manage my groups" |
16 | 16 | When I follow "Create a new community" |
17 | 17 | And I fill in "Name" with "Fancy community" |
... | ... | @@ -22,7 +22,7 @@ Feature: create community |
22 | 22 | Scenario: a user creates a community when environment moderates it |
23 | 23 | Given I am logged in as "joaosilva" |
24 | 24 | And feature "admin_must_approve_new_communities" is enabled on environment |
25 | - When I go to the Control panel | |
25 | + And I go to joaosilva's control panel | |
26 | 26 | And I follow "Manage my groups" |
27 | 27 | And I follow "Create a new community" |
28 | 28 | And I fill in "Name" with "Community for moderation" |
... | ... | @@ -32,7 +32,7 @@ Feature: create community |
32 | 32 | Scenario: a user tries to create a community without a name |
33 | 33 | Given I am logged in as "joaosilva" |
34 | 34 | And feature "admin_must_approve_new_communities" is disabled on environment |
35 | - And I go to the Control panel | |
35 | + And I go to joaosilva's control panel | |
36 | 36 | And I follow "Manage my groups" |
37 | 37 | When I follow "Create a new community" |
38 | 38 | And I press "Create" |
... | ... | @@ -42,20 +42,20 @@ Feature: create community |
42 | 42 | Given I am logged in as admin |
43 | 43 | And feature "admin_must_approve_new_communities" is enabled on environment |
44 | 44 | When I create community "Community for approval" |
45 | - And I go to the Control panel | |
45 | + And I go to admin_user's control panel | |
46 | 46 | Then I should see "admin_user wants to create community Community for approval" |
47 | 47 | |
48 | 48 | Scenario: environment admin accepts new community task |
49 | 49 | Given I am logged in as admin |
50 | 50 | And feature "admin_must_approve_new_communities" is enabled on environment |
51 | 51 | When I create community "Community for approval" |
52 | - And I go to the Control panel | |
52 | + And I go to admin_user's control panel | |
53 | 53 | And I follow "Process requests" |
54 | 54 | And I should see "admin_user wants to create community Community for approval" |
55 | 55 | And I choose "Accept" |
56 | 56 | When I press "Apply!" |
57 | 57 | Then I should not see "admin_user wants to create community Community for approval" |
58 | - When I go to the Control panel | |
58 | + And I go to admin_user's control panel | |
59 | 59 | And I follow "Manage my groups" |
60 | 60 | Then I should see "Community for approval" |
61 | 61 | |
... | ... | @@ -63,13 +63,13 @@ Feature: create community |
63 | 63 | Given I am logged in as admin |
64 | 64 | And feature "admin_must_approve_new_communities" is enabled on environment |
65 | 65 | When I create community "Community for approval" |
66 | - And I go to the Control panel | |
66 | + And I go to admin_user's control panel | |
67 | 67 | And I follow "Process requests" |
68 | 68 | And I should see "admin_user wants to create community Community for approval" |
69 | 69 | And I choose "Reject" |
70 | 70 | When I press "Apply!" |
71 | 71 | Then I should not see "admin_user wants to create community Community for approval" |
72 | - When I go to the Control panel | |
72 | + And I go to admin_user's control panel | |
73 | 73 | And I follow "Manage my groups" |
74 | 74 | Then I should not see "Community for approval" |
75 | 75 | |
... | ... | @@ -78,7 +78,7 @@ Feature: create community |
78 | 78 | And feature "admin_must_approve_new_communities" is enabled on environment |
79 | 79 | When I create community "Community for approval" |
80 | 80 | And I approve community "Community for approval" |
81 | - When I go to the Control panel | |
81 | + And I go to admin_user's control panel | |
82 | 82 | And I follow "Manage my groups" |
83 | 83 | Then I should see "Community for approval" |
84 | 84 | |
... | ... | @@ -87,6 +87,6 @@ Feature: create community |
87 | 87 | And feature "admin_must_approve_new_communities" is enabled on environment |
88 | 88 | When I create community "Community for approval" |
89 | 89 | And I reject community "Community for approval" |
90 | - When I go to the Control panel | |
90 | + And I go to admin_user's control panel | |
91 | 91 | And I follow "Manage my groups" |
92 | 92 | Then I should not see "Community for approval" | ... | ... |
features/delete_profile.feature
... | ... | @@ -13,9 +13,10 @@ Feature: delete profile |
13 | 13 | | sample-community | Sample Community | |
14 | 14 | And "Maria Silva" is a member of "Sample Community" |
15 | 15 | |
16 | + @selenium | |
16 | 17 | Scenario: deleting profile |
17 | 18 | Given I am logged in as "joaosilva" |
18 | - And I am on Joao Silva's control panel | |
19 | + And I am on joaosilva's control panel | |
19 | 20 | And I follow "Edit Profile" |
20 | 21 | And I follow "Delete profile" |
21 | 22 | Then I should see "Are you sure you want to delete this profile?" |
... | ... | @@ -31,24 +32,25 @@ Feature: delete profile |
31 | 32 | |
32 | 33 | Scenario: giving up of deleting profile |
33 | 34 | Given I am logged in as "joaosilva" |
34 | - And I am on Joao Silva's control panel | |
35 | + And I am on joaosilva's control panel | |
35 | 36 | And I follow "Edit Profile" |
36 | 37 | And I follow "Delete profile" |
37 | 38 | Then I should see "Are you sure you want to delete this profile?" |
38 | 39 | When I follow "No, I gave up" |
39 | - Then I should be on Joao Silva's profile | |
40 | + Then I should be on joaosilva's profile | |
40 | 41 | |
41 | 42 | Scenario: community admin can see link to delete profile |
42 | 43 | Given "Joao Silva" is admin of "Sample Community" |
43 | 44 | And I am logged in as "joaosilva" |
44 | - And I am on Sample Community's control panel | |
45 | + And I am on sample-community's control panel | |
45 | 46 | When I follow "Community Info and settings" |
46 | 47 | Then I should see "Delete profile" |
47 | 48 | |
49 | + @selenium | |
48 | 50 | Scenario: community admin deletes the community |
49 | 51 | Given "Joao Silva" is admin of "Sample Community" |
50 | 52 | And I am logged in as "joaosilva" |
51 | - And I am on Sample Community's control panel | |
53 | + And I am on sample-community's control panel | |
52 | 54 | And I follow "Community Info and settings" |
53 | 55 | And I follow "Delete profile" |
54 | 56 | Then I should see "Are you sure you want to delete this profile?" |
... | ... | @@ -69,17 +71,18 @@ Feature: delete profile |
69 | 71 | | sample-enterprise | Sample Enterprise | |
70 | 72 | And "Joao Silva" is admin of "Sample Enterprise" |
71 | 73 | And I am logged in as "joaosilva" |
72 | - And I am on Sample Enterprise's control panel | |
74 | + And I am on sample-enterprise's control panel | |
73 | 75 | When I follow "Enterprise Info and settings" |
74 | 76 | Then I should see "Delete profile" |
75 | 77 | |
78 | + @selenium | |
76 | 79 | Scenario: enterprise admin deletes the enterprise |
77 | 80 | Given the following enterprise |
78 | 81 | | identifier | name | |
79 | 82 | | sample-enterprise | Sample Enterprise | |
80 | 83 | And "Joao Silva" is admin of "Sample Enterprise" |
81 | 84 | And I am logged in as "joaosilva" |
82 | - And I am on Sample Enterprise's control panel | |
85 | + And I am on sample-enterprise's control panel | |
83 | 86 | When I follow "Enterprise Info and settings" |
84 | 87 | And I follow "Delete profile" |
85 | 88 | Then I should see "Are you sure you want to delete this profile?" |
... | ... | @@ -98,9 +101,10 @@ Feature: delete profile |
98 | 101 | And I go to /myprofile/sample-enterprise/profile_editor/destroy_profile |
99 | 102 | Then I should see "Access denied" |
100 | 103 | |
104 | + @selenium | |
101 | 105 | Scenario: environment admin deletes profile |
102 | 106 | Given I am logged in as admin |
103 | - And I am on Joao Silva's control panel | |
107 | + And I am on joaosilva's control panel | |
104 | 108 | And I follow "Edit Profile" |
105 | 109 | And I follow "Delete profile" |
106 | 110 | Then I should see "Are you sure you want to delete this profile?" | ... | ... |
features/edit_article.feature
... | ... | @@ -13,17 +13,17 @@ Feature: edit article |
13 | 13 | And I am logged in as "joaosilva" |
14 | 14 | |
15 | 15 | Scenario: create a folder |
16 | - Given I am on Joao Silva's control panel | |
16 | + Given I am on joaosilva's control panel | |
17 | 17 | And I follow "Manage Content" |
18 | 18 | And I follow "New content" |
19 | 19 | When I follow "Folder" |
20 | 20 | And I fill in "Title" with "My Folder" |
21 | 21 | And I press "Save" |
22 | - And I go to Joao Silva's control panel | |
22 | + And I go to joaosilva's control panel | |
23 | 23 | Then I should see "My Folder" |
24 | 24 | |
25 | 25 | Scenario: redirect to the created folder |
26 | - Given I am on Joao Silva's control panel | |
26 | + Given I am on joaosilva's control panel | |
27 | 27 | And I follow "Manage Content" |
28 | 28 | And I follow "New content" |
29 | 29 | When I follow "Folder" |
... | ... | @@ -33,29 +33,29 @@ Feature: edit article |
33 | 33 | And I should be on /joaosilva/my-folder |
34 | 34 | |
35 | 35 | Scenario: cancel button back to cms |
36 | - Given I go to the Control panel | |
36 | + Given I am on joaosilva's control panel | |
37 | 37 | And I follow "Manage Content" |
38 | 38 | And I follow "New content" |
39 | 39 | And I follow "Folder" |
40 | 40 | When I follow "Cancel" within ".main-block" |
41 | - Then I should be on Joao Silva's cms | |
41 | + Then I should be on joaosilva's cms | |
42 | 42 | |
43 | 43 | Scenario: display tag list field when creating event |
44 | - Given I go to the Control panel | |
44 | + Given I am on joaosilva's control panel | |
45 | 45 | And I follow "Manage Content" |
46 | 46 | And I follow "New content" |
47 | 47 | When I follow "Event" |
48 | 48 | Then I should see "Tag list" |
49 | 49 | |
50 | 50 | Scenario: display tag list field when creating folder |
51 | - Given I go to the Control panel | |
51 | + Given I am on joaosilva's control panel | |
52 | 52 | And I follow "Manage Content" |
53 | 53 | And I follow "New content" |
54 | 54 | When I follow "Folder" |
55 | 55 | Then I should see "Tag list" |
56 | 56 | |
57 | 57 | Scenario: create new article with tags |
58 | - Given I go to the Control panel | |
58 | + Given I am on joaosilva's control panel | |
59 | 59 | And I follow "Manage Content" |
60 | 60 | And I follow "New content" |
61 | 61 | When I follow "Text article with Textile markup language" |
... | ... | @@ -68,7 +68,7 @@ Feature: edit article |
68 | 68 | And I should see "bug" within "#article-tags a:last" |
69 | 69 | |
70 | 70 | Scenario: redirect to the created article |
71 | - Given I am on Joao Silva's control panel | |
71 | + Given I am on joaosilva's control panel | |
72 | 72 | And I follow "Manage Content" |
73 | 73 | When I follow "New content" |
74 | 74 | When I follow "Text article with visual editor" |
... | ... | @@ -79,62 +79,62 @@ Feature: edit article |
79 | 79 | |
80 | 80 | @selenium |
81 | 81 | Scenario: edit an article |
82 | - Given I am on Joao Silva's sitemap | |
83 | - When I follow "Save the whales" and wait | |
84 | - And I follow "Edit" and wait | |
82 | + Given I am on joaosilva's sitemap | |
83 | + When I follow "Save the whales" | |
84 | + And I follow "Edit" | |
85 | 85 | And I fill in "Title" with "My Article edited" |
86 | - And I press "Save" and wait | |
86 | + And I press "Save" | |
87 | 87 | Then I should be on /joaosilva/my-article-edited |
88 | 88 | |
89 | 89 | @selenium |
90 | 90 | Scenario: cancel button back to article when edit |
91 | - Given I am on Joao Silva's sitemap | |
92 | - When I follow "Save the whales" and wait | |
93 | - And I follow "Edit" and wait | |
94 | - And I follow "Cancel" and wait | |
91 | + Given I am on joaosilva's sitemap | |
92 | + When I follow "Save the whales" | |
93 | + And I follow "Edit" within "#article-actions" | |
94 | + And I follow "Cancel" | |
95 | 95 | Then I should be on /joaosilva/save-the-whales |
96 | 96 | |
97 | - @selenium | |
97 | + @selenium-fixme | |
98 | 98 | Scenario: create an article inside a folder |
99 | - Given I am on Joao Silva's control panel | |
99 | + Given I am on joaosilva's control panel | |
100 | 100 | When I follow "Manage Content" |
101 | 101 | And I follow "New content" |
102 | - And I follow "Folder" and wait | |
102 | + And I follow "Folder" | |
103 | 103 | And I fill in "Title" with "My Folder" |
104 | - And I press "Save" and wait | |
104 | + And I press "Save" | |
105 | 105 | Then I should be on /joaosilva/my-folder |
106 | 106 | When I follow "New article" |
107 | - And I follow "Text article with visual editor" and wait | |
107 | + And I follow "Text article with visual editor" | |
108 | 108 | And I fill in "Title" with "My Article" |
109 | - And I press "Save" and wait | |
109 | + And I press "Save" | |
110 | 110 | Then I should see "My Article" |
111 | 111 | And I should be on /joaosilva/my-folder/my-article |
112 | 112 | |
113 | - @selenium | |
113 | + @selenium-fixme | |
114 | 114 | Scenario: cancel button back to folder after giving up creating |
115 | - Given I am on Joao Silva's control panel | |
115 | + Given I am on joaosilva's control panel | |
116 | 116 | When I follow "Manage Content" |
117 | 117 | And I follow "New content" |
118 | - And I follow "Folder" and wait | |
118 | + And I follow "Folder" | |
119 | 119 | And I fill in "Title" with "My Folder" |
120 | - And I press "Save" and wait | |
120 | + And I press "Save" | |
121 | 121 | Then I should be on /joaosilva/my-folder |
122 | 122 | When I follow "New article" |
123 | - And I follow "Text article with visual editor" and wait | |
124 | - And I follow "Cancel" within ".no-boxes" and wait | |
123 | + And I follow "Text article with visual editor" | |
124 | + And I follow "Cancel" within ".no-boxes" | |
125 | 125 | Then I should be on /joaosilva/my-folder |
126 | 126 | |
127 | 127 | @selenium |
128 | 128 | Scenario: save and continue |
129 | 129 | Given I am on /joaosilva/save-the-whales |
130 | - And I follow "Edit" and wait | |
130 | + And I follow "Edit" | |
131 | 131 | When I fill in "Text" with "new text" |
132 | 132 | And I press "Save and continue" |
133 | 133 | Then the "Text" field should contain "new text" |
134 | 134 | And I should be on "Save the whales" edit page |
135 | 135 | |
136 | 136 | Scenario: save and continue when creating a new article |
137 | - Given I am on Joao Silva's control panel | |
137 | + Given I am on joaosilva's control panel | |
138 | 138 | When I follow "Manage Content" |
139 | 139 | And I follow "New content" |
140 | 140 | And I follow "Text article with visual editor" |
... | ... | @@ -147,31 +147,31 @@ Feature: edit article |
147 | 147 | |
148 | 148 | @selenium |
149 | 149 | Scenario: add a translation to an article |
150 | - Given I am on Joao Silva's sitemap | |
150 | + Given I am on joaosilva's sitemap | |
151 | 151 | And I follow "Save the whales" |
152 | 152 | Then I should not see "Add translation" |
153 | - And I follow "Edit" and wait | |
153 | + And I follow "Edit" | |
154 | 154 | And I select "English" from "Language" |
155 | - Then I press "Save" and wait | |
156 | - And I follow "Add translation" and wait | |
155 | + Then I press "Save" | |
156 | + And I follow "Add translation" | |
157 | 157 | And I fill in "Title" with "Mi neuvo artículo" |
158 | 158 | And I select "Español" from "Language" |
159 | - When I press "Save" and wait | |
159 | + When I press "Save" | |
160 | 160 | Then I should be on /joaosilva/mi-neuvo-articulo |
161 | 161 | And I should see "Translations" |
162 | 162 | |
163 | - @selenium | |
163 | + @selenium-fixme | |
164 | 164 | Scenario: not add a translation without a language |
165 | 165 | Given the following articles |
166 | 166 | | owner | name | language | |
167 | 167 | | joaosilva | Article in English | en | |
168 | - And I am on Joao Silva's sitemap | |
169 | - When I follow "Article in English" and wait | |
170 | - And I follow "Add translation" and wait | |
168 | + And I am on joaosilva's sitemap | |
169 | + When I follow "Article in English" | |
170 | + And I follow "Add translation" | |
171 | 171 | And I fill in "Title" with "Article in Portuguese" |
172 | - And I press "Save" and wait | |
172 | + And I press "Save" | |
173 | 173 | Then I should see "Language must be choosen" |
174 | 174 | When I select "Português" from "Language" |
175 | - And I press "Save" and wait | |
175 | + And I press "Save" | |
176 | 176 | Then I should not see "Language must be choosen" |
177 | 177 | And I should be on /joaosilva/article-in-portuguese | ... | ... |
features/edit_block_of_links.feature
... | ... | @@ -12,7 +12,7 @@ Feature: edit_block_of_links |
12 | 12 | | eddievedder | LinkListBlock | |
13 | 13 | And I am logged in as "eddievedder" |
14 | 14 | |
15 | - @selenium | |
15 | + @selenium-fixme | |
16 | 16 | Scenario: show the icon selector |
17 | 17 | Given I follow "Edit sideboxes" |
18 | 18 | And I follow "Edit" within ".link-list-block" | ... | ... |
features/edit_environment_templates.feature
... | ... | @@ -4,50 +4,46 @@ Feature: edit environment templates |
4 | 4 | |
5 | 5 | Background: |
6 | 6 | Given that the default environment have all profile templates |
7 | + And I am logged in as admin | |
8 | + And I follow "Administration" | |
7 | 9 | |
10 | + @selenium | |
8 | 11 | Scenario: See links to edit all templates |
9 | - Given I am logged in as admin | |
10 | - When I follow "Administration" | |
11 | - And I follow "Profile templates" | |
12 | - Then I should see "Person template" link | |
13 | - And I should see "Community template" link | |
14 | - And I should see "Enterprise template" link | |
15 | - And I should see "Inactive Enterprise template" link | |
12 | + Given I follow "Profile templates" | |
13 | + Then I should see "Person template" | |
14 | + And I should see "Community template" | |
15 | + And I should see "Enterprise template" | |
16 | + And I should see "Inactive Enterprise template" | |
16 | 17 | |
18 | + @selenium | |
17 | 19 | Scenario: Go to control panel of person template |
18 | - Given I am logged in as admin | |
19 | - When I follow "Administration" | |
20 | - And I follow "Profile templates" | |
20 | + Given I follow "Profile templates" | |
21 | 21 | And I follow "Person template" |
22 | - Then I should be on Person template's control panel | |
22 | + Then I should be on colivre.net_person_template's control panel | |
23 | 23 | |
24 | + @selenium | |
24 | 25 | Scenario: Go to control panel of enterprise template |
25 | - Given I am logged in as admin | |
26 | - When I follow "Administration" | |
27 | - And I follow "Profile templates" | |
26 | + Given I follow "Profile templates" | |
28 | 27 | And I follow "Enterprise template" |
29 | - Then I should be on Enterprise template's control panel | |
28 | + Then I should be on colivre.net_enterprise_template's control panel | |
30 | 29 | |
30 | + @selenium | |
31 | 31 | Scenario: Go to control panel of inactive enterprise template |
32 | - Given I am logged in as admin | |
33 | - When I follow "Administration" | |
34 | - And I follow "Profile templates" | |
35 | - And I follow "Inactive enterprise template" | |
36 | - Then I should be on Inactive Enterprise template's control panel | |
32 | + Given I follow "Profile templates" | |
33 | + And I follow "Inactive Enterprise template" | |
34 | + Then I should be on colivre.net_inactive_enterprise_template's control panel | |
37 | 35 | |
36 | + @selenium | |
38 | 37 | Scenario: Go to control panel of community template |
39 | - Given I am logged in as admin | |
40 | - When I follow "Administration" | |
41 | - And I follow "Profile templates" | |
42 | - And I follow "Community template" | |
43 | - Then I should be on Community template's control panel | |
38 | + Given I follow "Profile templates" | |
39 | + When I follow "Community template" | |
40 | + Then I should be on colivre.net_community_template's control panel | |
44 | 41 | |
42 | + @selenium | |
45 | 43 | Scenario: Not see link to edit an unexistent template |
46 | - Given that the default environment have no Inactive Enterprise template | |
47 | - And I am logged in as admin | |
48 | - When I follow "Administration" | |
49 | - And I follow "Profile templates" | |
50 | - Then I should see "Person template" link | |
51 | - And I should see "Community template" link | |
52 | - And I should see "Enterprise template" link | |
53 | - And I should not see "Inactive enterprise template" link | |
44 | + Given I follow "Profile templates" | |
45 | + And that the default environment have no Inactive Enterprise template | |
46 | + Then I should see "Person template" | |
47 | + And I should see "Community template" | |
48 | + And I should see "Enterprise template" | |
49 | + And I should not see "Inactive enterprise template" | ... | ... |
features/edit_language_block.feature
... | ... | @@ -15,25 +15,25 @@ Feature: edit language of block |
15 | 15 | Scenario: display in all languages |
16 | 16 | Given I go to edit ArticleBlock of joaosilva |
17 | 17 | And I fill in "Custom title for this block" with "Block displayed" |
18 | - And I select "all languages" | |
18 | + And I select "all languages" from "Show for" | |
19 | 19 | And I press "Save" |
20 | - When I go to Jose Silva's homepage | |
20 | + When I go to joaosilva's homepage | |
21 | 21 | Then I should see "Block displayed" |
22 | 22 | |
23 | 23 | Scenario: display in the selected language |
24 | 24 | Given I go to edit LinkListBlock of joaosilva |
25 | 25 | And I fill in "Custom title for this block" with "Block displayed" |
26 | - And I select "English" | |
26 | + And I select "English" from "Show for" | |
27 | 27 | And I press "Save" |
28 | 28 | And my browser prefers English |
29 | - When I go to Jose Silva's homepage | |
29 | + When I go to joaosilva's homepage | |
30 | 30 | Then I should see "Block displayed" |
31 | 31 | |
32 | 32 | Scenario: not display in a not selected language |
33 | 33 | Given I go to edit LinkListBlock of joaosilva |
34 | 34 | And I fill in "Custom title for this block" with "Block not displayed" |
35 | - And I select "English" | |
35 | + And I select "English" from "Show for" | |
36 | 36 | And I press "Save" |
37 | 37 | And my browser prefers Portuguese |
38 | - When I go to Jose Silva's homepage | |
38 | + When I go to joaosilva's homepage | |
39 | 39 | Then I should not see "Block displayed" | ... | ... |
features/edit_profile.feature
... | ... | @@ -12,8 +12,8 @@ Feature: edit profile |
12 | 12 | | birth_date | |
13 | 13 | When I go to joao's control panel |
14 | 14 | And I follow "Edit Profile" |
15 | - And I select "November" | |
16 | - And I select "15" | |
15 | + And I select "November" from "profile_data_birth_date_2i" | |
16 | + And I select "15" from "profile_data_birth_date_3i" | |
17 | 17 | And I press "Save" |
18 | 18 | Then I should see "Birth date is invalid" |
19 | 19 | And I should not see "Birth date can't be blank" |
... | ... | @@ -24,8 +24,8 @@ Feature: edit profile |
24 | 24 | | birth_date | |
25 | 25 | When I go to joao's control panel |
26 | 26 | And I follow "Edit Profile" |
27 | - And I select "November" | |
28 | - And I select "15" | |
27 | + And I select "November" from "profile_data_birth_date_2i" | |
28 | + And I select "15" from "profile_data_birth_date_3i" | |
29 | 29 | And I press "Save" |
30 | 30 | Then I should see "Birth date is invalid" |
31 | 31 | And I should not see "Birth date can't be blank" |
... | ... | @@ -36,9 +36,9 @@ Feature: edit profile |
36 | 36 | | birth_date | |
37 | 37 | When I go to joao's control panel |
38 | 38 | And I follow "Edit Profile" |
39 | - And I select "November" | |
40 | - And I select "15" | |
41 | - And I select "1980" | |
39 | + And I select "November" from "profile_data_birth_date_2i" | |
40 | + And I select "15" from "profile_data_birth_date_3i" | |
41 | + And I select "1980" from "profile_data_birth_date_1i" | |
42 | 42 | And I press "Save" |
43 | 43 | Then I should not see "Birth date is invalid" |
44 | 44 | And I should not see "Birth date is mandatory" |
... | ... | @@ -49,9 +49,9 @@ Feature: edit profile |
49 | 49 | | birth_date | |
50 | 50 | When I go to joao's control panel |
51 | 51 | And I follow "Edit Profile" |
52 | - And I select "November" | |
53 | - And I select "15" | |
54 | - And I select "1980" | |
52 | + And I select "November" from "profile_data_birth_date_2i" | |
53 | + And I select "15" from "profile_data_birth_date_3i" | |
54 | + And I select "1980" from "profile_data_birth_date_1i" | |
55 | 55 | And I press "Save" |
56 | 56 | Then I should not see "Birth date is invalid" |
57 | 57 | And I should not see "Birth date is mandatory" |
... | ... | @@ -62,11 +62,11 @@ Feature: edit profile |
62 | 62 | | identifier | name | owner | |
63 | 63 | | o-rappa | O Rappa | joao | |
64 | 64 | And feature "enable_organization_url_change" is enabled on environment |
65 | - When I go to O Rappa's control panel | |
66 | - And I follow "Community Info and settings" and wait | |
67 | - Then the "#identifier-change-confirmation" should not be visible | |
65 | + When I go to o-rappa's control panel | |
66 | + And I follow "Community Info and settings" | |
67 | + And I should not see "identifier-change-confirmation" | |
68 | 68 | When I fill in "Address" with "banda-o-rappa" |
69 | - Then the "#identifier-change-confirmation" should be visible | |
69 | + And I should see "identifier-change-confirmation" | |
70 | 70 | |
71 | 71 | @selenium |
72 | 72 | Scenario: Confirm url change |
... | ... | @@ -74,12 +74,12 @@ Feature: edit profile |
74 | 74 | | identifier | name | owner | |
75 | 75 | | o-rappa | O Rappa | joao | |
76 | 76 | And feature "enable_organization_url_change" is enabled on environment |
77 | - When I go to O Rappa's control panel | |
78 | - And I follow "Community Info and settings" and wait | |
77 | + When I go to o-rappa's control panel | |
78 | + And I follow "Community Info and settings" | |
79 | 79 | When I fill in "Address" with "banda-o-rappa" |
80 | - Then the "#identifier-change-confirmation" should be visible | |
80 | + Then I should see "identifier-change-confirmation" | |
81 | 81 | When I follow "Yes" |
82 | - Then the "#identifier-change-confirmation" should not be visible | |
82 | + Then "identifier-change-confirmation" should not be visible within "profile-identifier-formitem" | |
83 | 83 | |
84 | 84 | @selenium |
85 | 85 | Scenario: Cancel url change |
... | ... | @@ -87,9 +87,9 @@ Feature: edit profile |
87 | 87 | | identifier | name | owner | |
88 | 88 | | o-rappa | O Rappa | joao | |
89 | 89 | And feature "enable_organization_url_change" is enabled on environment |
90 | - When I go to O Rappa's control panel | |
91 | - And I follow "Community Info and settings" and wait | |
90 | + When I go to o-rappa's control panel | |
91 | + And I follow "Community Info and settings" | |
92 | 92 | When I fill in "Address" with "banda-o-rappa" |
93 | - Then the "#identifier-change-confirmation" should be visible | |
93 | + Then I should see "identifier-change-confirmation" | |
94 | 94 | When I follow "No" |
95 | - Then the "#identifier-change-confirmation" should not be visible | |
95 | + Then "identifier-change-confirmation" should not be visible within "profile-identifier-formitem" | ... | ... |
features/environment_name.feature
... | ... | @@ -3,6 +3,7 @@ Feature: setting environment name |
3 | 3 | I want to change the name of the environment |
4 | 4 | So that it appears in the window's title bar |
5 | 5 | |
6 | + @selenium-fixme | |
6 | 7 | Scenario: setting environment name through administration panel |
7 | 8 | Given I am logged in as admin |
8 | 9 | When I follow "Administration" | ... | ... |
features/events.feature
... | ... | @@ -184,7 +184,7 @@ Feature: events |
184 | 184 | And "josesilva" is a member of "Sample Community" |
185 | 185 | And I go to josesilva's control panel |
186 | 186 | And I follow "Manage Content" |
187 | - And I follow "Another Conference" and wait | |
187 | + And I follow "Another Conference" | |
188 | 188 | And I follow "Spread" |
189 | 189 | And I check "Sample Community" |
190 | 190 | And I press "Spread this" |
... | ... | @@ -213,15 +213,15 @@ Feature: events |
213 | 213 | And I am on josesilva's Event creation |
214 | 214 | Then I should see "Lead" |
215 | 215 | |
216 | - @selenium | |
216 | + @selenium-fixme | |
217 | 217 | Scenario: events lead should be shown on blogs with short format |
218 | 218 | Given I am logged in as "josesilva" |
219 | 219 | And I am on josesilva's control panel |
220 | - And I follow "Configure blog" and wait | |
220 | + And I follow "Configure blog" | |
221 | 221 | And I select "First paragraph" from "How to display posts:" |
222 | 222 | And I press "Save" |
223 | 223 | And I follow "New post" |
224 | - And I follow "A calendar event" and wait | |
224 | + And I follow "A calendar event" | |
225 | 225 | And I fill in "Title" with "Leaded event" |
226 | 226 | And I type "This is the abstract." in TinyMCE field "article_abstract" |
227 | 227 | And I type "This is the real text." in TinyMCE field "article_body" | ... | ... |
features/export_users.feature
... | ... | @@ -9,15 +9,13 @@ Feature: export users |
9 | 9 | |
10 | 10 | Scenario: Export users as XML |
11 | 11 | Given I am logged in as admin |
12 | - When I follow "Administration" | |
13 | - And I follow "Users" | |
12 | + When I go to /admin/users | |
14 | 13 | And I follow "[XML]" |
15 | 14 | Then I should see "ultraje" |
16 | 15 | |
17 | 16 | Scenario: Export users as CSV |
18 | 17 | Given I am logged in as admin |
19 | - When I follow "Administration" | |
20 | - And I follow "Users" | |
18 | + When I go to /admin/users | |
21 | 19 | And I follow "[CSV]" |
22 | 20 | Then I should see "name;email" |
23 | 21 | And I should see "ultraje" | ... | ... |
features/featured_products_block.feature
... | ... | @@ -23,7 +23,7 @@ Feature: featured_products_block |
23 | 23 | | redemoinho | automobile | Moto | Very long description of and auto-mobile moto to be truncated | true | |
24 | 24 | And I am logged in as "eddievedder" |
25 | 25 | |
26 | - @selenium | |
26 | + @selenium-fixme | |
27 | 27 | Scenario: select a product to be featured |
28 | 28 | And I follow "Manage my groups" |
29 | 29 | And I follow "Control panel of this group" |
... | ... | @@ -35,7 +35,7 @@ Feature: featured_products_block |
35 | 35 | And I should not see "float_to_currency" |
36 | 36 | And I should not see "product_path" |
37 | 37 | |
38 | - @selenium | |
38 | + @selenium-fixme | |
39 | 39 | Scenario: display block with long description |
40 | 40 | Given I follow "Manage my groups" |
41 | 41 | And I follow "Control panel of this group" | ... | ... |
features/forum.feature
... | ... | @@ -10,18 +10,18 @@ Feature: forum |
10 | 10 | And "joaosilva" has no articles |
11 | 11 | And I am logged in as "joaosilva" |
12 | 12 | |
13 | - @selenium | |
13 | + @selenium @ignore-hidden-elements | |
14 | 14 | Scenario: create a forum |
15 | - Given I am on Joao Silva's control panel | |
15 | + Given I am on joaosilva's control panel | |
16 | 16 | And I follow "Manage Content" |
17 | 17 | And I follow "New content" |
18 | - When I follow "Forum" and wait | |
18 | + When I follow "Forum" | |
19 | 19 | And I fill in "Title" with "My Forum" |
20 | - And I press "Save" and wait | |
20 | + And I press "Save" | |
21 | 21 | Then I should see "Configure forum" |
22 | 22 | |
23 | 23 | Scenario: redirect to forum after create forum from cms |
24 | - Given I go to the Control panel | |
24 | + Given I go to joaosilva's control panel | |
25 | 25 | And I follow "Manage Content" |
26 | 26 | And I follow "New content" |
27 | 27 | When I follow "Forum" |
... | ... | @@ -30,13 +30,13 @@ Feature: forum |
30 | 30 | Then I should be on /joaosilva/forum-from-cms |
31 | 31 | |
32 | 32 | Scenario: create multiple forums |
33 | - Given I go to the Control panel | |
33 | + Given I go to joaosilva's control panel | |
34 | 34 | And I follow "Manage Content" |
35 | 35 | And I follow "New content" |
36 | 36 | And I follow "Forum" |
37 | 37 | And I fill in "Title" with "Forum One" |
38 | 38 | And I press "Save" |
39 | - Then I go to the Control panel | |
39 | + Then I go to joaosilva's control panel | |
40 | 40 | And I follow "Manage Content" |
41 | 41 | And I follow "New content" |
42 | 42 | And I follow "Forum" |
... | ... | @@ -46,7 +46,7 @@ Feature: forum |
46 | 46 | And I should be on /joaosilva/forum-two |
47 | 47 | |
48 | 48 | Scenario: cancel button back to cms |
49 | - Given I go to the Control panel | |
49 | + Given I go to joaosilva's control panel | |
50 | 50 | And I follow "Manage Content" |
51 | 51 | And I follow "New content" |
52 | 52 | And I follow "Forum" |
... | ... | @@ -54,7 +54,7 @@ Feature: forum |
54 | 54 | Then I should be on /myprofile/joaosilva/cms |
55 | 55 | |
56 | 56 | Scenario: cancel button back to myprofile |
57 | - Given I go to the Control panel | |
57 | + Given I go to joaosilva's control panel | |
58 | 58 | And I follow "Manage Content" |
59 | 59 | And I follow "New content" |
60 | 60 | And I follow "Forum" |
... | ... | @@ -66,8 +66,8 @@ Feature: forum |
66 | 66 | Given the following forums |
67 | 67 | | owner | name | |
68 | 68 | | joaosilva | Forum One | |
69 | - And I visit "/joaosilva/forum-one" and wait | |
70 | - When I follow "Configure forum" and wait | |
69 | + And I go to /joaosilva/forum-one | |
70 | + When I follow "Configure forum" | |
71 | 71 | Then I should be on edit "Forum One" by joaosilva |
72 | 72 | |
73 | 73 | Scenario: last topic update by unautenticated user should not link |
... | ... | @@ -94,4 +94,4 @@ Feature: forum |
94 | 94 | | article | author | title | body | |
95 | 95 | | Post one | joaosilva | Hi all | Hi all | |
96 | 96 | When I go to /joaosilva/forum |
97 | - Then I should see "Joao" linking to "http:///joaosilva" | |
97 | + Then I should see "Joao" linking to "http://localhost/joaosilva" | ... | ... |
features/gallery_navigation.feature
... | ... | @@ -23,7 +23,7 @@ Feature: gallery_navigation |
23 | 23 | @selenium |
24 | 24 | Scenario: view next image when follow next link |
25 | 25 | Given I am on /marciopunk/my-gallery/other-pic.jpg?view=true |
26 | - When I follow "Next »" and wait | |
26 | + When I follow "Next »" | |
27 | 27 | Then I should see "rails.png" within ".title" |
28 | 28 | |
29 | 29 | Scenario: not link to next when in last image |
... | ... | @@ -38,7 +38,7 @@ Feature: gallery_navigation |
38 | 38 | @selenium |
39 | 39 | Scenario: view previous image when follow previous link |
40 | 40 | Given I am on /marciopunk/my-gallery/rails.png?view=true |
41 | - When I follow "« Previous" and wait | |
41 | + When I follow "« Previous" | |
42 | 42 | Then I should see "other-pic.jpg" within ".title" |
43 | 43 | |
44 | 44 | Scenario: not link to previous when in first image |
... | ... | @@ -71,8 +71,10 @@ Feature: gallery_navigation |
71 | 71 | @selenium |
72 | 72 | Scenario: image title in window title |
73 | 73 | Given I am logged in as "marciopunk" |
74 | - When I visit "/marciopunk/other-gallery/rails.png?view=true" and wait | |
75 | - And I follow "Edit" and wait | |
74 | + When I go to /marciopunk/other-gallery/rails.png?view=true | |
75 | + And the page title should be "rails.png" | |
76 | + And I follow "Edit" | |
76 | 77 | And I fill in "Title" with "Rails is cool" |
77 | - And I press "Save" and wait | |
78 | - Then The page title should contain "Rails is cool" | |
78 | + And I press "Save" | |
79 | + When I go to /marciopunk/other-gallery/rails.png?view=true | |
80 | + Then the page title should be "Rails is cool" | ... | ... |
features/http_caching.feature
... | ... | @@ -35,13 +35,13 @@ Feature: HTTP caching |
35 | 35 | Then the response should be valid for 90 minutes |
36 | 36 | |
37 | 37 | Scenario: profile pages, default configuaration |
38 | - When I go to João Silva's homepage | |
38 | + When I go to joao's homepage | |
39 | 39 | Then the response should be valid for 15 minutes |
40 | 40 | |
41 | 41 | Scenario: profile pages, custom configuration |
42 | 42 | Given the following environment configuration |
43 | 43 | | profile_cache_in_minutes | 90 | |
44 | - When I go to João Silva's homepage | |
44 | + When I go to joao's homepage | |
45 | 45 | Then the response should be valid for 90 minutes |
46 | 46 | |
47 | 47 | Scenario: account controller should not be cached at all |
... | ... | @@ -50,7 +50,7 @@ Feature: HTTP caching |
50 | 50 | |
51 | 51 | Scenario: profile administration |
52 | 52 | Given I am logged in as "joao" |
53 | - When I go to João Silva's control panel | |
53 | + When I go to joao's control panel | |
54 | 54 | Then there must be no cache at all |
55 | 55 | |
56 | 56 | Scenario: environment administration | ... | ... |
features/internationalization.feature
features/invitation.feature
... | ... | @@ -46,8 +46,7 @@ Feature: invitation |
46 | 46 | Then I should see "Invite your friends to join 26 Bsslines" link |
47 | 47 | |
48 | 48 | Scenario: not see link to invite members to community if has no rights |
49 | - Given I am not logged in | |
50 | - And I am logged in as "josesantos" | |
49 | + Given I am logged in as "josesantos" | |
51 | 50 | When I am on /profile/26-bsslines/members |
52 | 51 | Then I should not see "Invite your friends to join 26 Bsslines" link |
53 | 52 | |
... | ... | @@ -65,8 +64,7 @@ Feature: invitation |
65 | 64 | Then I should not see "Invite your friends to join Beatles For Sale" link |
66 | 65 | |
67 | 66 | Scenario: deny access if user has no right to invite members |
68 | - Given I am not logged in | |
69 | - And I am logged in as "josesantos" | |
67 | + Given I am logged in as "josesantos" | |
70 | 68 | When I am on /profile/26-bsslines/invite/friends |
71 | 69 | Then I should see "Access denied" |
72 | 70 | |
... | ... | @@ -92,20 +90,20 @@ Feature: invitation |
92 | 90 | And I press "Invite my friends!" |
93 | 91 | Given there are no pending jobs |
94 | 92 | When I am logged in as "josesantos" |
95 | - And I go to the Control panel | |
93 | + And I go to josesantos's control panel | |
96 | 94 | And I should see "josesilva invited you to join 26 Bsslines." |
97 | 95 | |
98 | 96 | Scenario: noosfero user accepts to join community |
99 | 97 | Given I invite email "santos@invalid.br" to join community "26 Bsslines" |
100 | 98 | And there are no pending jobs |
101 | 99 | When I am logged in as "josesantos" |
102 | - And I go to the Control panel | |
100 | + And I go to josesantos's control panel | |
103 | 101 | And I follow "Process requests" |
104 | 102 | And I should see "josesilva invited you to join 26 Bsslines." |
105 | 103 | And I choose "Accept" |
106 | 104 | When I press "Apply!" |
107 | 105 | Then I should not see "josesilva invited you to join 26 Bsslines." |
108 | - When I go to the Control panel | |
106 | + When I go to josesantos's control panel | |
109 | 107 | And I follow "Manage my groups" |
110 | 108 | Then I should see "26 Bsslines" |
111 | 109 | |
... | ... | @@ -113,19 +111,19 @@ Feature: invitation |
113 | 111 | Given I invite email "santos@invalid.br" to join community "26 Bsslines" |
114 | 112 | And there are no pending jobs |
115 | 113 | When I am logged in as "josesantos" |
116 | - And I go to the Control panel | |
114 | + And I go to josesantos's control panel | |
117 | 115 | And I follow "Process requests" |
118 | 116 | And I should see "josesilva invited you to join 26 Bsslines." |
119 | 117 | And I choose "Reject" |
120 | 118 | When I press "Apply!" |
121 | 119 | Then I should not see "josesilva invited you to join 26 Bsslines." |
122 | - When I go to the Control panel | |
120 | + And I go to josesantos's control panel | |
123 | 121 | And I follow "Manage my groups" |
124 | 122 | Then I should not see "26 Bsslines" |
125 | 123 | |
126 | 124 | Scenario: noosfero user receives a task when a user invites to be friend |
127 | 125 | Given I am on josesilva's control panel |
128 | - And I follow "Manage Friends" | |
126 | + And I follow "Manage friends" | |
129 | 127 | And I follow "Invite people from my e-mail contacts" |
130 | 128 | And I press "Next" |
131 | 129 | And I fill in "manual_import_addresses" with "santos@invalid.br" |
... | ... | @@ -133,34 +131,38 @@ Feature: invitation |
133 | 131 | And I press "Invite my friends!" |
134 | 132 | Given there are no pending jobs |
135 | 133 | When I am logged in as "josesantos" |
136 | - And I go to the Control panel | |
134 | + And I go to josesantos's control panel | |
137 | 135 | And I follow "Process requests" |
138 | 136 | Then I should see "josesilva wants to be your friend." |
139 | 137 | |
140 | 138 | Scenario: noosfero user accepts to be friend |
141 | - Given I invite email "santos@invalid.br" to be my friend | |
139 | + Given I am logged in as "josesilva" | |
140 | + And I go to josesilva's control panel | |
141 | + And I invite email "santos@invalid.br" to be my friend | |
142 | 142 | And there are no pending jobs |
143 | 143 | When I am logged in as "josesantos" |
144 | - And I go to the Control panel | |
144 | + And I go to josesantos's control panel | |
145 | 145 | And I follow "Process requests" |
146 | 146 | And I should see "josesilva wants to be your friend." |
147 | 147 | And I choose "Accept" |
148 | 148 | When I press "Apply!" |
149 | 149 | And I should not see "josesilva wants to be your friend." |
150 | - When I go to the Control panel | |
150 | + When I go to josesantos's control panel | |
151 | 151 | And I follow "Manage friends" |
152 | 152 | Then I should see "josesilva" |
153 | 153 | |
154 | 154 | Scenario: noosfero user rejects to be friend |
155 | - Given I invite email "santos@invalid.br" to be my friend | |
155 | + Given I am logged in as "josesilva" | |
156 | + And I go to josesilva's control panel | |
157 | + And I invite email "santos@invalid.br" to be my friend | |
156 | 158 | And there are no pending jobs |
157 | 159 | When I am logged in as "josesantos" |
158 | - And I go to the Control panel | |
160 | + And I go to josesantos's control panel | |
159 | 161 | And I follow "Process requests" |
160 | 162 | And I should see "josesilva wants to be your friend." |
161 | 163 | And I choose "Reject" |
162 | 164 | When I press "Apply!" |
163 | 165 | And I should not see "josesilva wants to be your friend." |
164 | - When I go to the Control panel | |
166 | + When I go to josesantos's control panel | |
165 | 167 | And I follow "Manage friends" |
166 | 168 | Then I should not see "josesilva" | ... | ... |
features/language_redirection.feature
... | ... | @@ -26,9 +26,9 @@ Feature: language redirection |
26 | 26 | # Testing the web UI |
27 | 27 | Given I am logged in as "manuel" |
28 | 28 | And my browser prefers English |
29 | - And I go to manuel's profile editor | |
29 | + And I go to /myprofile/manuel/profile_editor/edit | |
30 | 30 | And I check "Automaticaly redirect the visitor to the article translated to his/her language" |
31 | - And I press "save" | |
31 | + And I press "Save" | |
32 | 32 | When I go to /manuel/meu-artigo |
33 | 33 | Then the site should be in English |
34 | 34 | ... | ... |
features/location.feature
... | ... | @@ -16,13 +16,14 @@ Feature: Location |
16 | 16 | | state | |
17 | 17 | | city | |
18 | 18 | | zip_code | |
19 | - And I go to the Control panel | |
19 | + And I go to zezinho's control panel | |
20 | 20 | And I follow "Location" |
21 | 21 | When I fill in "Address" with "Rua Marechal Floriano, 28" |
22 | 22 | And I select "Brazil" from "Country" |
23 | 23 | And I fill in "State" with "Bahia" |
24 | 24 | And I fill in "City" with "Salvador" |
25 | - And I fill in "ZIP Code" with "40110010" | |
25 | + And I fill in "ZIP code" with "40110010" | |
26 | + And I follow "Locate in the map" | |
26 | 27 | And I press "Save" |
27 | 28 | Then "zezinho" should have the following data |
28 | 29 | | address | country | state | city | zip_code | |
... | ... | @@ -38,14 +39,14 @@ Feature: Location |
38 | 39 | Given the following <plural> |
39 | 40 | | identifier | name | owner | |
40 | 41 | | mycollective | My Collective | zezinho | |
41 | - And I am on My Collective's control panel | |
42 | + And I am on mycollective's control panel | |
42 | 43 | And I follow "Location" |
43 | 44 | And I select "Brazil" from "Country" |
44 | 45 | And I fill in the following: |
45 | 46 | | Address | Rua Marechal Floriano, 28 | |
46 | 47 | | State | Bahia | |
47 | 48 | | City | Salvador | |
48 | - | ZIP Code | 40110010 | | |
49 | + | ZIP code | 40110010 | | |
49 | 50 | When I press "Save" |
50 | 51 | Then "mycollective" should have the following data |
51 | 52 | | address | country | state | city | zip_code | | ... | ... |
features/login.feature
... | ... | @@ -28,29 +28,29 @@ Feature: login |
28 | 28 | And the following articles |
29 | 29 | | owner | name | homepage | |
30 | 30 | | mariasilva | my home page | true | |
31 | - And I go to Maria Silva's homepage | |
31 | + And I go to mariasilva's homepage | |
32 | 32 | And I follow "Login" |
33 | 33 | And I fill in the following: |
34 | 34 | | Username | joaosilva | |
35 | 35 | | Password | 123456 | |
36 | 36 | When I press "Log in" |
37 | - Then I should be on Maria Silva's homepage | |
37 | + Then I should be on mariasilva's homepage | |
38 | 38 | |
39 | 39 | Scenario: view my control panel |
40 | 40 | Given feature "allow_change_of_redirection_after_login" is disabled on environment |
41 | 41 | And I am not logged in |
42 | - And I go to Joao Silva's control panel | |
42 | + And I go to joaosilva's control panel | |
43 | 43 | And I should be on login page |
44 | 44 | And I fill in the following: |
45 | 45 | | Username | joaosilva | |
46 | 46 | | Password | 123456 | |
47 | 47 | When I press "Log in" |
48 | - Then I should be on Joao Silva's control panel | |
48 | + Then I should be on joaosilva's control panel | |
49 | 49 | |
50 | 50 | Scenario: be redirected if user goes to login page and is logged |
51 | 51 | Given I am logged in as "joaosilva" |
52 | 52 | And I go to login page |
53 | - Then I should be on Joao Silva's control panel | |
53 | + Then I should be on joaosilva's control panel | |
54 | 54 | |
55 | 55 | Scenario: stay on the same page after login if this is the environment default |
56 | 56 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
... | ... | @@ -62,19 +62,19 @@ Feature: login |
62 | 62 | And the following articles |
63 | 63 | | owner | name | homepage | |
64 | 64 | | mariasilva | my home page | true | |
65 | - And I go to Maria Silva's homepage | |
65 | + And I go to mariasilva's homepage | |
66 | 66 | And I follow "Login" |
67 | 67 | And I fill in the following: |
68 | 68 | | Username | joaosilva | |
69 | 69 | | Password | 123456 | |
70 | 70 | When I press "Log in" |
71 | - Then I should be on Maria Silva's homepage | |
71 | + Then I should be on mariasilva's homepage | |
72 | 72 | |
73 | 73 | Scenario: go to site homepage if this is the environment default |
74 | 74 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
75 | 75 | And I am not logged in |
76 | 76 | And the environment is configured to redirect to site homepage after login |
77 | - And I go to Joao Silva's homepage | |
77 | + And I go to joaosilva's homepage | |
78 | 78 | And I follow "Login" |
79 | 79 | And I fill in the following: |
80 | 80 | | Username | joaosilva | |
... | ... | @@ -92,7 +92,7 @@ Feature: login |
92 | 92 | | Username | joaosilva | |
93 | 93 | | Password | 123456 | |
94 | 94 | When I press "Log in" |
95 | - Then I should be on Joao Silva's profile | |
95 | + Then I should be on joaosilva's profile | |
96 | 96 | |
97 | 97 | Scenario: go to profile homepage after login if this is the environment default |
98 | 98 | Given the following articles |
... | ... | @@ -107,7 +107,7 @@ Feature: login |
107 | 107 | | Username | joaosilva | |
108 | 108 | | Password | 123456 | |
109 | 109 | When I press "Log in" |
110 | - Then I should be on Joao Silva's homepage | |
110 | + Then I should be on joaosilva's homepage | |
111 | 111 | |
112 | 112 | Scenario: go to profile control panel after login if this is the environment default |
113 | 113 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
... | ... | @@ -119,7 +119,7 @@ Feature: login |
119 | 119 | | Username | joaosilva | |
120 | 120 | | Password | 123456 | |
121 | 121 | When I press "Log in" |
122 | - Then I should be on Joao Silva's control panel | |
122 | + Then I should be on joaosilva's control panel | |
123 | 123 | |
124 | 124 | Scenario: stay on the same page after login if this is the profile default |
125 | 125 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
... | ... | @@ -132,20 +132,20 @@ Feature: login |
132 | 132 | And the following articles |
133 | 133 | | owner | name | homepage | |
134 | 134 | | mariasilva | my home page | true | |
135 | - And I go to Maria Silva's homepage | |
135 | + And I go to mariasilva's homepage | |
136 | 136 | And I follow "Login" |
137 | 137 | And I fill in the following: |
138 | 138 | | Username | joaosilva | |
139 | 139 | | Password | 123456 | |
140 | 140 | When I press "Log in" |
141 | - Then I should be on Maria Silva's homepage | |
141 | + Then I should be on mariasilva's homepage | |
142 | 142 | |
143 | 143 | Scenario: go to site homepage if this is the profile default |
144 | 144 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
145 | 145 | And I am not logged in |
146 | 146 | And the environment is configured to stay on the same page after login |
147 | 147 | And the profile joaosilva is configured to redirect to site homepage after login |
148 | - And I go to Joao Silva's homepage | |
148 | + And I go to joaosilva's homepage | |
149 | 149 | And I follow "Login" |
150 | 150 | And I fill in the following: |
151 | 151 | | Username | joaosilva | |
... | ... | @@ -164,7 +164,7 @@ Feature: login |
164 | 164 | | Username | joaosilva | |
165 | 165 | | Password | 123456 | |
166 | 166 | When I press "Log in" |
167 | - Then I should be on Joao Silva's profile | |
167 | + Then I should be on joaosilva's profile | |
168 | 168 | |
169 | 169 | Scenario: go to profile homepage after login if this is the profile default |
170 | 170 | Given the following articles |
... | ... | @@ -180,7 +180,7 @@ Feature: login |
180 | 180 | | Username | joaosilva | |
181 | 181 | | Password | 123456 | |
182 | 182 | When I press "Log in" |
183 | - Then I should be on Joao Silva's homepage | |
183 | + Then I should be on joaosilva's homepage | |
184 | 184 | |
185 | 185 | Scenario: go to profile control panel after login if this is the profile default |
186 | 186 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
... | ... | @@ -193,4 +193,4 @@ Feature: login |
193 | 193 | | Username | joaosilva | |
194 | 194 | | Password | 123456 | |
195 | 195 | When I press "Log in" |
196 | - Then I should be on Joao Silva's control panel | |
196 | + Then I should be on joaosilva's control panel | ... | ... |
features/manage_categories.feature
... | ... | @@ -26,7 +26,6 @@ Feature: manage categories |
26 | 26 | Scenario: load subcategories only after following parent |
27 | 27 | Then I should not see "Beans" |
28 | 28 | And I should not see "Potatoes" |
29 | - When I follow "Show" and wait for jquery | |
30 | - # Then show me the page | |
31 | - | |
32 | - | |
29 | + When I follow "Show" | |
30 | + Then I should see "Beans" | |
31 | + And I should see "Potatoes" | ... | ... |
features/manage_enterprises.feature
... | ... | @@ -15,8 +15,10 @@ Feature: manage enterprises |
15 | 15 | Scenario: seeing my enterprises on menu |
16 | 16 | Given I am logged in as "joaosilva" |
17 | 17 | Then I should see "My enterprises" link |
18 | - When I follow "My enterprises" and wait | |
19 | - Then I should see "Tangerine Dream" linking to "/myprofile/tangerine-dream" | |
18 | + When I follow "My enterprises" | |
19 | + And I follow "Tangerine Dream" | |
20 | + Then I should be on tangerine-dream's control panel | |
21 | + | |
20 | 22 | |
21 | 23 | @selenium |
22 | 24 | Scenario: not show enterprises on menu to a user without enterprises | ... | ... |
features/manage_inputs.feature
... | ... | @@ -32,8 +32,8 @@ Feature: manage inputs |
32 | 32 | And I follow "Inputs" |
33 | 33 | Then I should not see "Add new input or raw material" |
34 | 34 | And I follow "Add the inputs or raw material used by this product" |
35 | - And I select "Music »" and wait for jquery | |
36 | - And I select "Rock" and wait for jquery | |
35 | + And I select "Music »" from "category_id" within "#categories_container_level0" | |
36 | + And I select "Rock" from "category_id" within "#categories_container_level1" | |
37 | 37 | And I press "Save and continue" |
38 | 38 | Then I should see "Rock" |
39 | 39 | |
... | ... | @@ -47,8 +47,8 @@ Feature: manage inputs |
47 | 47 | And I follow "Inputs" |
48 | 48 | And I should not see "Add the inputs or raw material used by this product" |
49 | 49 | And I follow "Add new input or raw material" |
50 | - And I select "Music »" and wait for jquery | |
51 | - And I select "Rock" and wait for jquery | |
50 | + And I select "Music »" from "category_id" within "#categories_container_level0" | |
51 | + And I select "Rock" from "category_id" within "#categories_container_level1" | |
52 | 52 | And I press "Save and continue" |
53 | 53 | Then I should see "Rock" |
54 | 54 | |
... | ... | @@ -57,8 +57,8 @@ Feature: manage inputs |
57 | 57 | Given I am logged in as "joaosilva" |
58 | 58 | When I go to Rede Moinho's page of product Abbey Road |
59 | 59 | And I follow "Inputs" |
60 | - And I follow "Add the inputs or raw material used by this product" and wait until "#input-category-form" is present | |
61 | - And I click "css=a.cancel-add-input" | |
60 | + And I follow "Add the inputs or raw material used by this product" | |
61 | + And I follow "Cancel" within "#categories_selection_actionbar" | |
62 | 62 | Then I should see "Abbey Road" |
63 | 63 | And I should see "Add the inputs or raw material used by this product" |
64 | 64 | |
... | ... | @@ -90,7 +90,7 @@ Feature: manage inputs |
90 | 90 | And I follow "Inputs and raw material" |
91 | 91 | Then I should see "Edit" within ".input-item" |
92 | 92 | |
93 | - @selenium | |
93 | + @selenium-fixme | |
94 | 94 | Scenario: Order inputs by position |
95 | 95 | Given the following product_categories |
96 | 96 | | name | |
... | ... | @@ -131,7 +131,7 @@ Feature: manage inputs |
131 | 131 | And I follow "Inputs" |
132 | 132 | And I follow "Click here to add price and the amount used" |
133 | 133 | And I should not see "Price by Meter ($)" |
134 | - When I select "Meter" | |
134 | + When I select "Meter" from "input_unit_id" within ".edit_input" | |
135 | 135 | Then I should see "Price by Meter ($)" |
136 | 136 | |
137 | 137 | @selenium |
... | ... | @@ -145,7 +145,7 @@ Feature: manage inputs |
145 | 145 | And I follow "Click here to add price and the amount used" |
146 | 146 | And I fill in "Amount used" with "2.5" |
147 | 147 | And I fill in "Price" with "11.50" |
148 | - And I select "Meter" | |
148 | + And I select "Meter" from "input_unit_id" within ".edit_input" | |
149 | 149 | And I press "Save" |
150 | 150 | Then I should see "2.5" |
151 | 151 | And I should see "Meter" |
... | ... | @@ -162,14 +162,14 @@ Feature: manage inputs |
162 | 162 | And I follow "Click here to add price and the amount used" |
163 | 163 | And I fill in "Amount used" with "2.5" |
164 | 164 | And I fill in "Price" with "11.50" |
165 | - And I select "Meter" | |
165 | + And I select "Meter" from "input_unit_id" within ".edit_input" | |
166 | 166 | And I press "Save" |
167 | 167 | Then I should see "2.5" |
168 | 168 | And I should see "Meter" |
169 | 169 | When I follow "Edit" within ".input-details" |
170 | 170 | And I fill in "Amount used" with "3.0" |
171 | 171 | And I fill in "Price" with "23.31" |
172 | - And I select "Litre" | |
172 | + And I select "Litre" from "input_unit_id" within ".edit_input" | |
173 | 173 | And I press "Save" |
174 | 174 | Then I should see "3" |
175 | 175 | And I should see "Litre" |
... | ... | @@ -182,12 +182,12 @@ Feature: manage inputs |
182 | 182 | And I am logged in as "joaosilva" |
183 | 183 | When I go to Rede Moinho's page of product Abbey Road |
184 | 184 | And I follow "Inputs" |
185 | - And I follow "Click here to add price and the amount used" and wait until ".input-details-form" is present | |
185 | + And I follow "Click here to add price and the amount used" | |
186 | 186 | Then I should see "Cancel" |
187 | 187 | And I should see "Amount used" |
188 | 188 | And I should see "Price" |
189 | 189 | And I should see "This input or raw material inpact on the final price of the product?" |
190 | - When I click "css=a.cancel-edit-input" | |
190 | + When I follow "Cancel" within ".edit_input" | |
191 | 191 | Then I should see "Click here to add price and the amount used" |
192 | 192 | |
193 | 193 | @selenium |
... | ... | @@ -199,7 +199,7 @@ Feature: manage inputs |
199 | 199 | When I go to Rede Moinho's page of product Abbey Road |
200 | 200 | And I follow "Inputs" |
201 | 201 | And I follow "Edit" within ".input-details" |
202 | - And I follow "Cancel" | |
202 | + And I follow "Cancel" within ".edit_input" | |
203 | 203 | And I follow "Edit" within ".input-details" |
204 | 204 | Then I should see "Amount used" |
205 | 205 | And I should see "Price by Meter" |
... | ... | @@ -215,7 +215,7 @@ Feature: manage inputs |
215 | 215 | Then I should see "Rock" |
216 | 216 | And I should not see "Add the inputs or raw material used by this product" |
217 | 217 | When I follow "Remove" |
218 | - And I confirm | |
218 | + And I confirm the browser dialog | |
219 | 219 | Then I should see "Add the inputs or raw material used by this product" |
220 | 220 | |
221 | 221 | @selenium |
... | ... | @@ -226,18 +226,18 @@ Feature: manage inputs |
226 | 226 | | redemoinho | Music | Manu Chao | |
227 | 227 | And I am logged in as "joaosilva" |
228 | 228 | When I go to Rede Moinho's page of product Depeche Mode |
229 | - Then the content "Add some description to your product" should be visible | |
230 | - And the content "Add the inputs or raw material used by this product" should not be visible | |
229 | + Then I should see "Add some description to your product" | |
230 | + And "Add the inputs or raw material used by this product" should not be visible within "#show_product" | |
231 | 231 | When I follow "Inputs and raw material" |
232 | - Then the content "Add the inputs or raw material used by this product" should be visible | |
233 | - And the content "Add some description to your product" should not be visible | |
232 | + Then I should see "Add the inputs or raw material used by this product" | |
233 | + And "Add some description to your product" should not be visible within "#show_product" | |
234 | 234 | When I go to Rede Moinho's page of product Manu Chao |
235 | - Then the content "Add some description to your product" should be visible | |
235 | + Then I should see "Add some description to your product" | |
236 | 236 | When I go to Rede Moinho's page of product Depeche Mode |
237 | - Then the content "Add the inputs or raw material used by this product" should be visible | |
238 | - And the content "Add some description to your product" should not be visible | |
237 | + Then I should see "Add the inputs or raw material used by this product" | |
238 | + And "Add some description to your product" should not be visible within "#show_product" | |
239 | 239 | |
240 | - @selenium | |
240 | + @selenium-fixme | |
241 | 241 | Scenario: Order input list |
242 | 242 | Given the following product_category |
243 | 243 | | name | | ... | ... |
features/manage_product_price_details.feature
... | ... | @@ -51,9 +51,9 @@ Feature: manage product price details |
51 | 51 | And I follow "Price composition" |
52 | 52 | And I follow "Describe here the cost of production" |
53 | 53 | And I follow "New cost" |
54 | - And I select "Taxes" | |
54 | + And I select "Taxes" from "price_details__production_cost_id" within "#display-product-price-details" | |
55 | 55 | And I fill in "$" with "5.00" |
56 | - And I leave the ".price-details-price" field | |
56 | + And I leave the "#price_details__price" field | |
57 | 57 | And I press "Save" |
58 | 58 | Then I should not see "Save" |
59 | 59 | And I should see "Describe here the cost of production" |
... | ... | @@ -67,15 +67,15 @@ Feature: manage product price details |
67 | 67 | And I follow "Price composition" |
68 | 68 | And I follow "Describe here the cost of production" |
69 | 69 | And I follow "New cost" |
70 | - And I select "Taxes" | |
70 | + And I select "Taxes" from "price_details__production_cost_id" within "#display-product-price-details" | |
71 | 71 | And I fill in "$" with "20.00" |
72 | 72 | And I leave the ".price-details-price" field |
73 | 73 | And I press "Save" |
74 | 74 | Then I should not see "Save" |
75 | 75 | And I should see "Taxes" within "#display-price-details" |
76 | 76 | When I follow "Describe here the cost of production" |
77 | - And I select "Energy" | |
78 | - And I leave the ".price-details-price" field | |
77 | + And I select "Energy" from "price_details__production_cost_id" within "#display-product-price-details" | |
78 | + And I leave the "#price_details__price" field | |
79 | 79 | And I press "Save" |
80 | 80 | And I should not see "Taxes" within "#display-price-details" |
81 | 81 | And I should see "Energy" within "#display-price-details" |
... | ... | @@ -102,9 +102,10 @@ Feature: manage product price details |
102 | 102 | And I follow "Price composition" |
103 | 103 | And I follow "Describe here the cost of production" |
104 | 104 | And I follow "New cost" |
105 | - And I select "Taxes" | |
105 | + And I select "Taxes" from "price_details__production_cost_id" within "#display-product-price-details" | |
106 | 106 | And I fill in "$" with "20.00" |
107 | 107 | And I press "Save" |
108 | + And I go to Rede Moinho's page of product Abbey Road | |
108 | 109 | Then I should see "Inputs" within ".price-detail-name" |
109 | 110 | And I should see "60.0" within ".price-detail-price" |
110 | 111 | |
... | ... | @@ -114,10 +115,10 @@ Feature: manage product price details |
114 | 115 | And I follow "Price composition" |
115 | 116 | And I follow "Describe here the cost of production" |
116 | 117 | And I follow "New cost" |
118 | + And I select "Other cost" from "price_details__production_cost_id" within "#display-product-price-details" | |
117 | 119 | And I want to add "Energy" as cost |
118 | - And I select "Other cost" | |
119 | 120 | And I fill in "$" with "10.00" |
120 | - And I leave the ".price-details-price" field | |
121 | + And I leave the "#price_details__price" field | |
121 | 122 | And I press "Save" |
122 | 123 | When I follow "Describe here the cost of production" |
123 | 124 | Then I should see "Energy" within ".production-cost-selection" |
... | ... | @@ -127,8 +128,9 @@ Feature: manage product price details |
127 | 128 | Given I go to Rede Moinho's page of product Abbey Road |
128 | 129 | And I follow "Price composition" |
129 | 130 | And I follow "Describe here the cost of production" |
131 | + And I follow "New cost" | |
132 | + And I select "Other cost" from "price_details__production_cost_id" within "#display-product-price-details" | |
130 | 133 | And I want to add "Energy" as cost |
131 | - And I select "Other cost" | |
132 | 134 | Then I should see "Energy" within "#new-cost-fields" |
133 | 135 | |
134 | 136 | @selenium |
... | ... | @@ -141,7 +143,7 @@ Feature: manage product price details |
141 | 143 | And I follow "Describe here the cost of production" |
142 | 144 | And I should see "Taxes" within "#manage-product-details-form" |
143 | 145 | When I follow "Remove" within "#manage-product-details-form" |
144 | - And I confirm | |
146 | + And I confirm the browser dialog | |
145 | 147 | And I press "Save" |
146 | 148 | And I follow "Describe here the cost of production" |
147 | 149 | Then I should not see "Taxes" within "#manage-product-details-form" |
... | ... | @@ -160,7 +162,7 @@ Feature: manage product price details |
160 | 162 | Then I should see "$ 60.00 of $ 80.00" within "#progressbar-text" |
161 | 163 | And I follow "New cost" |
162 | 164 | And I fill in "$" with "10.00" |
163 | - And I leave the ".price-details-price" field | |
165 | + And I leave the "#price_details__price" field | |
164 | 166 | Then I should see "$ 70.00 of $ 80.00" within "#progressbar-text" |
165 | 167 | |
166 | 168 | @selenium | ... | ... |
features/manage_products.feature
... | ... | @@ -13,7 +13,7 @@ Feature: manage products |
13 | 13 | |
14 | 14 | Scenario: display "create new product" button |
15 | 15 | Given I am logged in as "joaosilva" |
16 | - And I am on Rede Moinho's control panel | |
16 | + And I am on redemoinho's control panel | |
17 | 17 | When I follow "Manage Products and Services" |
18 | 18 | Then I should see "New product or service" |
19 | 19 | |
... | ... | @@ -34,7 +34,7 @@ Feature: manage products |
34 | 34 | | redemoinho | bicycle | Bike I | bicycle 9 | |
35 | 35 | | redemoinho | bicycle | Bike J | bicycle 10 | |
36 | 36 | | redemoinho | bicycle | Bike K | bicycle 11 | |
37 | - When I go to /catalog/redemoinho | |
37 | + When I go to redemoinho's products page | |
38 | 38 | Then I should see "Bike A" within "#product-list" |
39 | 39 | And I should see "Bike B" within "#product-list" |
40 | 40 | And I should see "Bike C" within "#product-list" |
... | ... | @@ -52,13 +52,13 @@ Feature: manage products |
52 | 52 | |
53 | 53 | Scenario: listing products and services |
54 | 54 | Given I am logged in as "joaosilva" |
55 | - And I am on Rede Moinho's control panel | |
55 | + And I am on redemoinho's control panel | |
56 | 56 | And I follow "Manage Products and Services" |
57 | 57 | Then I should see "Listing products and services" |
58 | 58 | |
59 | 59 | Scenario: see button to back in categories hierarchy |
60 | 60 | Given I am logged in as "joaosilva" |
61 | - And I am on Rede Moinho's control panel | |
61 | + And I am on redemoinho's control panel | |
62 | 62 | And I follow "Manage Products and Services" |
63 | 63 | When I follow "New product or service" |
64 | 64 | Then I should see "Back to the product listing" link |
... | ... | @@ -69,9 +69,7 @@ Feature: manage products |
69 | 69 | | Products | |
70 | 70 | | Services | |
71 | 71 | Given I am logged in as "joaosilva" |
72 | - And I am on Rede Moinho's control panel | |
73 | - And I follow "Manage Products and Services" | |
74 | - When I follow "New product or service" | |
72 | + And I go to redemoinho's new product page | |
75 | 73 | Then I should see "Products" |
76 | 74 | And I should see "Service" |
77 | 75 | |
... | ... | @@ -85,10 +83,8 @@ Feature: manage products |
85 | 83 | | Computers level1 | products-level0 | |
86 | 84 | | DVDs level1 | products-level0 | |
87 | 85 | Given I am logged in as "joaosilva" |
88 | - And I am on Rede Moinho's control panel | |
89 | - And I follow "Manage Products and Services" | |
90 | - When I follow "New product or service" | |
91 | - And I select "Products level0 »" and wait for jquery | |
86 | + And I go to redemoinho's new product page | |
87 | + And I select "Products level0 »" from "category_id" within "#categories_container_level0" | |
92 | 88 | Then I should see "Computers level1" |
93 | 89 | And I should see "DVDs level1" |
94 | 90 | |
... | ... | @@ -103,12 +99,12 @@ Feature: manage products |
103 | 99 | | Computers level1 | products-level0 | |
104 | 100 | | Software development level1 | services-level0 | |
105 | 101 | Given I am logged in as "joaosilva" |
106 | - And I am on Rede Moinho's control panel | |
107 | - And I follow "Manage Products and Services" | |
108 | - When I follow "New product or service" | |
109 | - And I select "Products level0 »" and wait for jquery | |
110 | - And I select "Computers level1" and wait for jquery | |
111 | - And I select "Services level0 »" and wait for jquery | |
102 | + And I go to redemoinho's new product page | |
103 | + And I should not see /Computers level/ | |
104 | + And I select "Products level0 »" from "category_id" within "#categories_container_wrapper" | |
105 | + And I should see /Computers level/ | |
106 | + And I should not see /Software develop/ | |
107 | + And I select "Services level0 »" from "category_id" within "#categories_container_wrapper" | |
112 | 108 | Then I should see /Software develop/ |
113 | 109 | And I should not see /Computers level/ |
114 | 110 | |
... | ... | @@ -121,11 +117,9 @@ Feature: manage products |
121 | 117 | | name | parent | |
122 | 118 | | Computers | products | |
123 | 119 | Given I am logged in as "joaosilva" |
124 | - And I am on Rede Moinho's control panel | |
125 | - And I follow "Manage Products and Services" | |
126 | - When I follow "New product or service" | |
127 | - And I select "Products »" and wait for jquery | |
128 | - And I select "Computers" and wait for jquery | |
120 | + And I go to redemoinho's new product page | |
121 | + And I select "Products »" from "category_id" within "#categories_container_level0" | |
122 | + And I select "Computers" from "category_id" within "#categories_container_level1" | |
129 | 123 | Then I should see "Products → Computers" |
130 | 124 | |
131 | 125 | @selenium |
... | ... | @@ -137,11 +131,9 @@ Feature: manage products |
137 | 131 | | name | parent | |
138 | 132 | | Category Level 1 | toplevel-product-categories | |
139 | 133 | Given I am logged in as "joaosilva" |
140 | - And I am on Rede Moinho's control panel | |
141 | - And I follow "Manage Products and Services" | |
142 | - When I follow "New product or service" | |
143 | - And I select "Toplevel Product Categories »" and wait for jquery | |
144 | - And I select "Category Level 1" and wait for jquery | |
134 | + And I go to redemoinho's new product page | |
135 | + And I select "Toplevel Product Categories »" from "category_id" within "#categories_container_level0" | |
136 | + And I select "Category Level 1" from "category_id" within "#categories_container_level1" | |
145 | 137 | Then I should see "Toplevel Product Categories" link |
146 | 138 | And I should not see "Category Level 1" link |
147 | 139 | |
... | ... | @@ -151,8 +143,8 @@ Feature: manage products |
151 | 143 | | name | |
152 | 144 | | Only for test | |
153 | 145 | And I am logged in as "joaosilva" |
154 | - When I go to /myprofile/redemoinho/manage_products/new | |
155 | - Then the "#save_and_continue" button should not be enabled | |
146 | + When I go to redemoinho's new product page | |
147 | + Then the "#save_and_continue" button should be disabled | |
156 | 148 | |
157 | 149 | @selenium |
158 | 150 | Scenario: enable save button when select one category |
... | ... | @@ -160,11 +152,9 @@ Feature: manage products |
160 | 152 | And the following product_category |
161 | 153 | | name | |
162 | 154 | | Browsers (accept categories) | |
163 | - And I am on Rede Moinho's control panel | |
164 | - And I follow "Manage Products and Services" | |
165 | - When I follow "New product or service" | |
166 | - And I select "Browsers (accept categories)" and wait for jquery | |
167 | - Then the "Save and continue" button should be enabled | |
155 | + When I go to redemoinho's new product page | |
156 | + And I select "Browsers (accept categories)" from "category_id" within "#categories_container_wrapper" | |
157 | + Then the "#save_and_continue" button should be enabled | |
168 | 158 | |
169 | 159 | @selenium |
170 | 160 | Scenario: dont enable save button when select category with not accept products |
... | ... | @@ -172,11 +162,9 @@ Feature: manage products |
172 | 162 | | name | accept_products | |
173 | 163 | | Browsers | false | |
174 | 164 | Given I am logged in as "joaosilva" |
175 | - And I am on Rede Moinho's control panel | |
176 | - And I follow "Manage Products and Services" | |
177 | - When I follow "New product or service" | |
178 | - And I select "Browsers" and wait for jquery | |
179 | - Then the "#save_and_continue" button should not be enabled | |
165 | + When I go to redemoinho's new product page | |
166 | + And I select "Browsers" from "category_id" within "#categories_container_wrapper" | |
167 | + Then the "#save_and_continue" button should be disabled | |
180 | 168 | |
181 | 169 | @selenium |
182 | 170 | Scenario: save product |
... | ... | @@ -184,32 +172,14 @@ Feature: manage products |
184 | 172 | | name | |
185 | 173 | | Bicycle | |
186 | 174 | Given I am logged in as "joaosilva" |
187 | - And I am on Rede Moinho's control panel | |
188 | - And I follow "Manage Products and Services" | |
189 | - When I follow "New product or service" | |
190 | - And I select "Bicycle" and wait for jquery | |
175 | + When I go to redemoinho's new product page | |
176 | + And I select "Bicycle" from "category_id" within "#categories_container_wrapper" | |
191 | 177 | And I press "Save and continue" |
192 | - Then I should see "Bicycle" | |
178 | + When I go to redemoinho's products page | |
179 | + And I follow "Bicycle" within "#product-list" | |
180 | + Then I should see "Bicycle" within "#show_product" | |
193 | 181 | And I should see "Change category" |
194 | 182 | |
195 | - @selenium | |
196 | - Scenario: stay on the same place after error on save | |
197 | - Given the following product_category | |
198 | - | name | | |
199 | - | Bicycle | | |
200 | - Given I am logged in as "joaosilva" | |
201 | - And I am on Rede Moinho's control panel | |
202 | - And I follow "Manage Products and Services" | |
203 | - And I follow "New product or service" | |
204 | - And I select "Bicycle" and wait for jquery | |
205 | - And I press "Save and continue" | |
206 | - When I follow "Back" | |
207 | - And I follow "New product or service" | |
208 | - And I select "Bicycle" and wait for jquery | |
209 | - And I press "Save and continue" | |
210 | - Then I should be on Rede Moinho's new product page | |
211 | - And I should see "Bicycle" | |
212 | - | |
213 | 183 | Scenario: a user with permission can see edit links |
214 | 184 | Given the following product_category |
215 | 185 | | name | |
... | ... | @@ -331,10 +301,11 @@ Feature: manage products |
331 | 301 | And I am logged in as "joaosilva" |
332 | 302 | When I go to Rede Moinho's page of product Generic pc |
333 | 303 | And I follow "Change category" |
334 | - And I select "Eletronics »" and wait for jquery | |
335 | - Then I select "DVDs" and wait for jquery | |
304 | + And I select "Eletronics »" from "category_id" within "#categories_container_level0" | |
305 | + Then I select "DVDs" from "category_id" within "#categories_container_level1" | |
336 | 306 | And I press "Save and continue" |
337 | - Then I should see "Eletronics → DVDs" | |
307 | + When I go to Rede Moinho's page of product Generic pc | |
308 | + Then I should see "Eletronics → DVDs" within ".hierarchy-category" | |
338 | 309 | |
339 | 310 | @selenium |
340 | 311 | Scenario: cancel edition of a product category |
... | ... | @@ -424,7 +395,9 @@ Feature: manage products |
424 | 395 | And I follow "Change category" |
425 | 396 | And I press "Save and continue" |
426 | 397 | Then I should not see "Product category can't be blank" |
427 | - And I should be on Rede Moinho's page of product Generic pc | |
398 | + When I go to Rede Moinho's page of product Generic pc | |
399 | + Then I should see "Eletronics → Computers" within ".hierarchy-category" | |
400 | + | |
428 | 401 | And I should see "Generic pc" |
429 | 402 | |
430 | 403 | @selenium |
... | ... | @@ -450,7 +423,7 @@ Feature: manage products |
450 | 423 | And I am logged in as "joaosilva" |
451 | 424 | When I go to Rede Moinho's page of product Generic pc |
452 | 425 | And I follow "Change category" |
453 | - Then the select for category "Netbook from Venus" should be visible | |
426 | + Then "Netbook from Venus" should be visible within "#categories_container_wrapper" | |
454 | 427 | |
455 | 428 | @selenium |
456 | 429 | Scenario: Truncate long category name in selection of category |
... | ... | @@ -462,7 +435,7 @@ Feature: manage products |
462 | 435 | | name | parent | |
463 | 436 | | Netbook Quantum | Super Quantum Computers with teraflops | |
464 | 437 | And I am logged in as "joaosilva" |
465 | - When I go to Rede Moinho's new product page | |
438 | + When I go to redemoinho's new product page | |
466 | 439 | Then I should see "Nanonote nanotech with long lo..." |
467 | 440 | And I should see "Super Quantum Computers with t... »" |
468 | 441 | |
... | ... | @@ -481,7 +454,7 @@ Feature: manage products |
481 | 454 | When I go to Rede Moinho's page of product Bike |
482 | 455 | And I follow "Edit name and unit" |
483 | 456 | And I fill in "Red bicycle" for "product_name" |
484 | - And I select "Kilo" | |
457 | + And I select "Kilo" from "product_unit_id" within "#product-name-form" | |
485 | 458 | And I press "Save" |
486 | 459 | Then I should see "Red bicycle - kilo" |
487 | 460 | |
... | ... | @@ -519,12 +492,14 @@ Feature: manage products |
519 | 492 | When I go to Rede Moinho's page of product Bike |
520 | 493 | And I follow "Add price and other basic information" |
521 | 494 | And I follow "Add new qualifier" |
522 | - And I select "Organic" and wait for jquery | |
495 | + And I select "Organic" from "selected_qualifier" within "#product-qualifiers-list" | |
523 | 496 | And I press "Save" |
497 | + And I go to Rede Moinho's page of product Bike | |
524 | 498 | Then I should see "Organic (Self declared)" |
525 | 499 | When I follow "Edit basic information" |
526 | 500 | And I follow "Delete qualifier" |
527 | 501 | And I press "Save" |
502 | + And I go to Rede Moinho's page of product Bike | |
528 | 503 | Then I should not see "Organic (Self declared)" |
529 | 504 | |
530 | 505 | @selenium | ... | ... |
features/my_network_block.feature
... | ... | @@ -20,11 +20,11 @@ Feature: my_network_block |
20 | 20 | | identifier | name | owner | public_profile | |
21 | 21 | | other-public-community | Other Public Community | joaosilva | true | |
22 | 22 | | private-community | Private Community | joaosilva | false | |
23 | - And I am on Joao Silva's homepage | |
23 | + And I am on joaosilva's homepage | |
24 | 24 | And I should see "2 communities" |
25 | - When I go to Public Community's homepage | |
25 | + When I go to public-community's homepage | |
26 | 26 | And I follow "Join" |
27 | - And I go to Joao Silva's homepage | |
27 | + And I go to joaosilva's homepage | |
28 | 28 | Then I should see "3 communities" |
29 | 29 | |
30 | 30 | @selenium |
... | ... | @@ -34,11 +34,11 @@ Feature: my_network_block |
34 | 34 | | identifier | name | owner | visible | |
35 | 35 | | visible-community | Visible Community | joaosilva | true | |
36 | 36 | | not-visible-community | Not Visible Community | joaosilva | false | |
37 | - And I am on Joao Silva's homepage | |
37 | + And I am on joaosilva's homepage | |
38 | 38 | And I should see "One community" |
39 | - When I go to Public Community's homepage | |
39 | + When I go to public-community's homepage | |
40 | 40 | And I follow "Join" |
41 | - And I go to Joao Silva's homepage | |
41 | + And I go to joaosilva's homepage | |
42 | 42 | Then I should see "2 communities" |
43 | 43 | |
44 | 44 | Scenario: display how many public/private friends I have |
... | ... | @@ -48,10 +48,10 @@ Feature: my_network_block |
48 | 48 | | josesilva | Jose Silva | false | |
49 | 49 | And "joaosilva" is friend of "mariasilva" |
50 | 50 | And I am logged in as "joaosilva" |
51 | - And I am on Joao Silva's homepage | |
51 | + And I am on joaosilva's homepage | |
52 | 52 | Then I should see "1 friend" |
53 | 53 | And "joaosilva" is friend of "josesilva" |
54 | - When I go to Joao Silva's homepage | |
54 | + When I go to joaosilva's homepage | |
55 | 55 | Then I should see "2 friends" |
56 | 56 | |
57 | 57 | Scenario: not display how many invisible friends I have |
... | ... | @@ -62,8 +62,8 @@ Feature: my_network_block |
62 | 62 | And "josesilva" is invisible |
63 | 63 | And "joaosilva" is friend of "mariasilva" |
64 | 64 | And I am logged in as "joaosilva" |
65 | - When I go to Joao Silva's homepage | |
65 | + When I go to joaosilva's homepage | |
66 | 66 | Then I should see "1 friend" |
67 | 67 | And "joaosilva" is friend of "josesilva" |
68 | - When I go to Joao Silva's homepage | |
68 | + When I go to joaosilva's homepage | |
69 | 69 | Then I should see "1 friend" | ... | ... |
features/new_content_on_cms.feature
... | ... | @@ -7,10 +7,10 @@ Feature: create content on cms |
7 | 7 | | login | name | |
8 | 8 | | joaosilva | Joao Silva | |
9 | 9 | And I am logged in as "joaosilva" |
10 | - And I am on Joao Silva's cms | |
10 | + And I am on joaosilva's cms | |
11 | 11 | |
12 | 12 | Scenario: open page to select type of content |
13 | - Given I follow "New Content" | |
13 | + Given I follow "New content" | |
14 | 14 | Then I should see "Choose the type of content" |
15 | 15 | |
16 | 16 | Scenario: list all content types |
... | ... | @@ -27,7 +27,7 @@ Feature: create content on cms |
27 | 27 | When I follow "Folder" |
28 | 28 | And I fill in "Title" with "My Folder" |
29 | 29 | And I press "Save" |
30 | - And I go to Joao Silva's cms | |
30 | + And I go to joaosilva's cms | |
31 | 31 | Then I should see "My Folder" |
32 | 32 | |
33 | 33 | Scenario: create a tiny_mce article |
... | ... | @@ -35,7 +35,7 @@ Feature: create content on cms |
35 | 35 | When I follow "Text article with visual editor" |
36 | 36 | And I fill in "Title" with "My tiny_mce article" |
37 | 37 | And I press "Save" |
38 | - And I go to Joao Silva's cms | |
38 | + And I go to joaosilva's cms | |
39 | 39 | Then I should see "My tiny_mce article" |
40 | 40 | |
41 | 41 | Scenario: create a textile article |
... | ... | @@ -43,7 +43,7 @@ Feature: create content on cms |
43 | 43 | When I follow "Text article with Textile markup" |
44 | 44 | And I fill in "Title" with "My textile article" |
45 | 45 | And I press "Save" |
46 | - And I go to Joao Silva's cms | |
46 | + And I go to joaosilva's cms | |
47 | 47 | Then I should see "My textile article" |
48 | 48 | |
49 | 49 | Scenario: create a Blog |
... | ... | @@ -51,7 +51,7 @@ Feature: create content on cms |
51 | 51 | When I follow "Blog" |
52 | 52 | And I fill in "Title" with "My blog" |
53 | 53 | And I press "Save" |
54 | - And I go to Joao Silva's cms | |
54 | + And I go to joaosilva's cms | |
55 | 55 | Then I should see "My blog" |
56 | 56 | |
57 | 57 | Scenario: create an event |
... | ... | @@ -59,7 +59,7 @@ Feature: create content on cms |
59 | 59 | When I follow "Event" |
60 | 60 | And I fill in "Title" with "My event" |
61 | 61 | And I press "Save" |
62 | - And I go to Joao Silva's cms | |
62 | + And I go to joaosilva's cms | |
63 | 63 | Then I should see "My event" |
64 | 64 | |
65 | 65 | Scenario: redirect to upload files if choose UploadedFile | ... | ... |
features/organization_custom_fields.feature
... | ... | @@ -9,7 +9,7 @@ Feature: organization custom fields |
9 | 9 | | joaosilva | Joao Silva | |
10 | 10 | And I am logged in as "joaosilva" |
11 | 11 | And feature "enterprise_registration" is enabled on environment |
12 | - And I go to the Control panel | |
12 | + And I go to joaosilva's control panel | |
13 | 13 | |
14 | 14 | Scenario Outline: organization active fields are not displayed on creation |
15 | 15 | Given the following <organization> fields are active fields |
... | ... | @@ -35,7 +35,7 @@ Feature: organization custom fields |
35 | 35 | | name | identifier | |
36 | 36 | | Organization | organization | |
37 | 37 | And "Joao Silva" is admin of "Organization" |
38 | - And I am on Organization's control panel | |
38 | + And I am on organization's control panel | |
39 | 39 | And I follow <information> |
40 | 40 | Then I should see "Display name" |
41 | 41 | Then I should see "Contact email" |
... | ... | @@ -70,7 +70,7 @@ Feature: organization custom fields |
70 | 70 | | name | identifier | display_name | contact_email | city | |
71 | 71 | | Organization | organization | organization | bla@bleee.com | city | |
72 | 72 | And "Joao Silva" is admin of "Organization" |
73 | - And I am on Organization's control panel | |
73 | + And I am on organization's control panel | |
74 | 74 | And I follow <information> |
75 | 75 | And I fill in the following: |
76 | 76 | | Display name | | | ... | ... |
features/plugins.feature
... | ... | @@ -23,36 +23,36 @@ Feature: plugins |
23 | 23 | |
24 | 24 | Scenario: a user must see the plugin\'s button in the control panel if the plugin is enabled |
25 | 25 | Given plugin TestPlugin is enabled on environment |
26 | - And I go to Joao Silva's control panel | |
26 | + And I go to joaosilva's control panel | |
27 | 27 | Then I should see "Test plugin button" |
28 | 28 | |
29 | 29 | Scenario: a user must see the plugin\'s tab in in the profile if the plugin is enabled |
30 | 30 | Given plugin TestPlugin is enabled on environment |
31 | - And I am on Joao Silva's profile | |
31 | + And I am on joaosilva's profile | |
32 | 32 | Then I should see "Test plugin tab" |
33 | 33 | |
34 | 34 | Scenario: a user must not see the plugin\'s button in the control panel if the plugin is disabled |
35 | 35 | Given plugin TestPlugin is disabled on environment |
36 | - And I go to Joao Silva's control panel | |
36 | + And I go to joaosilva's control panel | |
37 | 37 | Then I should not see "Test plugin button" |
38 | 38 | |
39 | 39 | Scenario: a user must not see the plugin\'s tab in in the profile if the plugin is disabled |
40 | 40 | Given plugin TestPlugin is disabled on environment |
41 | - And I am on Joao Silva's profile | |
41 | + And I am on joaosilva's profile | |
42 | 42 | Then I should not see "Test plugin tab" |
43 | 43 | |
44 | 44 | Scenario: an admin should be able to deactivate a plugin |
45 | 45 | Given plugin TestPlugin is enabled on environment |
46 | 46 | And I am logged in as admin |
47 | - When I go to the Control panel | |
47 | + When I go to admin_user's control panel | |
48 | 48 | Then I should see "Test plugin button" |
49 | - When I go to the profile | |
49 | + When I go to admin_user's profile | |
50 | 50 | Then I should see "Test plugin tab" |
51 | 51 | And I go to the environment control panel |
52 | 52 | And I follow "Plugins" |
53 | 53 | And I uncheck "Test plugin" |
54 | 54 | And I press "Save changes" |
55 | - When I go to the Control panel | |
55 | + When I go to admin_user's control panel | |
56 | 56 | Then I should not see "Test plugin button" |
57 | - When I go to the profile | |
57 | + When I go to admin_user's profile | |
58 | 58 | Then I should not see "Test plugin tab" | ... | ... |
features/private_profile.feature
... | ... | @@ -14,7 +14,7 @@ Feature: private profiles |
14 | 14 | |
15 | 15 | Scenario: joining a private community |
16 | 16 | Given I am logged in as "joao" |
17 | - When I go to Safernet's homepage | |
17 | + When I go to safernet's homepage | |
18 | 18 | Then I should see "members only" |
19 | 19 | When I follow "Join" |
20 | 20 | And "joao" is accepted on community "Safernet" | ... | ... |
features/profile_domain.feature
... | ... | @@ -12,48 +12,50 @@ Feature: domain for profile |
12 | 12 | | sample-community | Sample Community | localhost | |
13 | 13 | And the following blocks |
14 | 14 | | owner | type | |
15 | - | sample-community | ProfileImageBlock | | |
16 | - | sample-community | ProfileInfoBlock | | |
15 | + | joaosilva | ProfileInfoBlock | | |
17 | 16 | And the environment domain is "127.0.0.1" |
17 | + And "Joao Silva" is environment admin | |
18 | 18 | And "Joao Silva" is admin of "Sample Community" |
19 | 19 | |
20 | 20 | @selenium |
21 | 21 | Scenario: access profile control panel through profile blocks |
22 | 22 | Given I am logged in as "joaosilva" |
23 | - When I visit "/" and wait | |
24 | - And I follow "Control panel" within "div.profile-info-block" and wait | |
25 | - Then I should see "Sample Community" within "span.control-panel-title" | |
26 | - When I visit "/" and wait | |
27 | - And I follow "Control panel" within "div.profile-image-block" and wait | |
28 | - Then I should see "Sample Community" within "span.control-panel-title" | |
23 | + When I go to joaosilva's homepage | |
24 | + And I follow "Control panel" within ".profile-info-block" | |
25 | + Then I should see "Joao Silva" within "span.control-panel-title" | |
26 | + When I follow "Control panel" within ".profile-image-block" | |
27 | + Then I should see "Joao Silva" within "span.control-panel-title" | |
29 | 28 | |
30 | 29 | @selenium |
31 | 30 | Scenario: access user control panel |
32 | 31 | Given I am logged in as "joaosilva" |
33 | - When I visit "/" and wait | |
34 | - And I follow "joaosilva" and wait | |
32 | + When I go to the homepage | |
33 | + And I follow "joaosilva" | |
34 | + And I go to sample-community's homepage | |
35 | 35 | And I follow "Login" |
36 | 36 | And I fill in "joaosilva" for "Username" |
37 | 37 | And I fill in "123456" for "Password" |
38 | - And I press "Log in" and wait | |
39 | - And I follow "Control panel" within "div#user" and wait | |
38 | + And I press "Log in" | |
39 | + And I follow "Control panel" within "div#user" | |
40 | 40 | Then I should see "Joao Silva" within "span.control-panel-title" |
41 | 41 | |
42 | 42 | @selenium |
43 | 43 | Scenario: access user page |
44 | 44 | Given I am logged in as "joaosilva" |
45 | - When I visit "/" and wait | |
46 | - And I follow "joaosilva" and wait | |
47 | - Then The page title should contain "Joao Silva" | |
45 | + When I go to the homepage | |
46 | + And I follow "joaosilva" | |
47 | + Then I should be on joaosilva's profile | |
48 | + And the page title should be "Joao Silva" | |
48 | 49 | |
49 | - @selenium | |
50 | + @selenium-fixme | |
50 | 51 | Scenario: access community by domain |
51 | - When I go to the homepage | |
52 | - Then The page title should contain "Sample Community" | |
52 | + Given I go to the search communities page | |
53 | + When I follow "Sample Community" within ".search-profile-item" | |
54 | + Then the page title should be "Sample Community" | |
53 | 55 | |
54 | - @selenium | |
56 | + @selenium-fixme | |
55 | 57 | Scenario: Go to profile homepage after clicking on home button on not found page |
56 | - Given I am on the homepage | |
58 | + Given I am on sample-community's homepage | |
57 | 59 | When I go to /something-that-does-not-exist |
58 | 60 | And I follow "Go to the home page" |
59 | 61 | Then the page title should be "Sample Community - Colivre.net" |
... | ... | @@ -61,13 +63,12 @@ Feature: domain for profile |
61 | 63 | @selenium |
62 | 64 | Scenario: Go to environment homepage after clicking on home button on not found page |
63 | 65 | Given I am on the homepage |
64 | - And I click on the logo | |
65 | - When I open /something-that-does-not-exist | |
66 | + When I go to /something-that-does-not-exist | |
66 | 67 | And I follow "Go to the home page" |
67 | - Then the page title should be "Colivre.net" | |
68 | + Then I should be on the homepage | |
69 | + And the page title should be "Colivre.net" | |
68 | 70 | |
69 | 71 | @selenium |
70 | 72 | Scenario: Compose link to administration with environment domain |
71 | 73 | Given I am logged in as "joaosilva" |
72 | - When I visit "/" and wait | |
73 | - Then I should see "Administration" linking to "http://127.0.0.1/admin" | |
74 | + Then I should see "Administration" linking to "http://127.0.0.1.*/admin" | ... | ... |
features/profile_search.feature
... | ... | @@ -14,7 +14,7 @@ Feature: search inside a profile |
14 | 14 | | joaosilva | whales and dolphins | this is an article about whales and dolphins | |
15 | 15 | |
16 | 16 | Scenario: search on profile |
17 | - Given I go to Joao Silva's profile | |
17 | + Given I go to joaosilva's profile | |
18 | 18 | And I fill in "q" with "bees" |
19 | 19 | And I press "Search" |
20 | 20 | Then I should see "bees and butterflies" within ".main-block" |
... | ... | @@ -25,7 +25,7 @@ Feature: search inside a profile |
25 | 25 | | owner | name | start_date | |
26 | 26 | | joaosilva | Group meeting | 2009-10-01 | |
27 | 27 | | joaosilva | John Doe's birthday | 2009-09-01 | |
28 | - When I go to Joao Silva's profile | |
28 | + When I go to joaosilva's profile | |
29 | 29 | And I fill in "q" with "birthday" |
30 | 30 | And I press "Search" |
31 | 31 | Then I should see "John Doe's birthday" within ".main-block" |
... | ... | @@ -35,7 +35,7 @@ Feature: search inside a profile |
35 | 35 | Given the following blocks |
36 | 36 | | owner | type | |
37 | 37 | | joaosilva | ProfileSearchBlock | |
38 | - When I go to Joao Silva's profile | |
38 | + When I go to joaosilva's profile | |
39 | 39 | And I fill in "q" with "bees" within ".profile-search-block" |
40 | 40 | And I press "Search" |
41 | 41 | Then I should see "bees and butterflies" within ".main-block" |
... | ... | @@ -45,14 +45,14 @@ Feature: search inside a profile |
45 | 45 | | owner | name | body | published | |
46 | 46 | | joaosilva | published article | this is a public article | true | |
47 | 47 | | joaosilva | unpublished article | this is a private article | false | |
48 | - And I go to Joao Silva's profile | |
48 | + And I go to joaosilva's profile | |
49 | 49 | And I fill in "q" with "article" |
50 | 50 | And I press "Search" |
51 | 51 | Then I should see "public article" within ".main-block" |
52 | 52 | And I should not see "private article" within ".main-block" |
53 | 53 | |
54 | 54 | Scenario: search on environment |
55 | - Given I go to Joao Silva's profile | |
55 | + Given I go to joaosilva's profile | |
56 | 56 | And I fill in "q" with "bees" |
57 | 57 | And I choose "General" |
58 | 58 | And I press "Search" | ... | ... |
features/publish_article.feature
... | ... | @@ -20,48 +20,48 @@ Feature: publish article |
20 | 20 | Scenario: publishing an article that doesn't exists in the community |
21 | 21 | Given I am logged in as "joaosilva" |
22 | 22 | And "Joao Silva" is a member of "Sample Community" |
23 | - And I am on Joao Silva's control panel | |
23 | + And I am on joaosilva's control panel | |
24 | 24 | And I follow "Manage Content" |
25 | 25 | And I follow "Spread" |
26 | 26 | And I check "Sample Community" |
27 | 27 | And I press "Spread this" |
28 | - And I go to Sample Community's sitemap | |
28 | + And I go to sample-community's sitemap | |
29 | 29 | When I follow "Sample Article" |
30 | 30 | Then I should see "This is the first published article" |
31 | 31 | |
32 | 32 | Scenario: publishing an article with a different name |
33 | 33 | Given I am logged in as "joaosilva" |
34 | 34 | And "Joao Silva" is a member of "Sample Community" |
35 | - And I am on Joao Silva's control panel | |
35 | + And I am on joaosilva's control panel | |
36 | 36 | And I follow "Manage Content" |
37 | 37 | And I follow "Spread" |
38 | 38 | And I check "Sample Community" |
39 | 39 | And I fill in "Title" with "Another name" |
40 | 40 | And I press "Spread this" |
41 | - When I go to Sample Community's sitemap | |
41 | + When I go to sample-community's sitemap | |
42 | 42 | Then I should see "Another name" |
43 | 43 | And I should not see "Sample Article" |
44 | 44 | |
45 | - @selenium | |
45 | + @selenium @ignore-hidden-elements | |
46 | 46 | Scenario: getting an error message when publishing article with same name |
47 | 47 | Given I am logged in as "joaosilva" |
48 | 48 | And "Joao Silva" is a member of "Sample Community" |
49 | - And I am on Joao Silva's control panel | |
50 | - And I follow "Manage Content" and wait | |
49 | + And I am on joaosilva's control panel | |
50 | + And I follow "Manage Content" | |
51 | 51 | And I follow "Spread" |
52 | 52 | And I check "Sample Community" |
53 | 53 | And I press "Spread this" |
54 | 54 | And I am not logged in |
55 | 55 | And I am logged in as "mariasilva" |
56 | 56 | And "Maria Silva" is a member of "Sample Community" |
57 | - And I am on Maria Silva's control panel | |
57 | + And I am on mariasilva's control panel | |
58 | 58 | And I follow "Manage Content" |
59 | 59 | And I follow "New content" |
60 | - And I follow "Text article with Textile markup language" and wait | |
60 | + And I follow "Text article with Textile markup language" | |
61 | 61 | And I fill in the following: |
62 | 62 | | Title | Sample Article | |
63 | 63 | | Text | this is Maria's first published article | |
64 | - And I press "Save" and wait | |
64 | + And I press "Save" | |
65 | 65 | And I follow "Spread" |
66 | 66 | And I check "Sample Community" |
67 | 67 | When I press "Spread this" |
... | ... | @@ -77,13 +77,13 @@ Feature: publish article |
77 | 77 | And "Joao Silva" is a member of "Sample Community" |
78 | 78 | And "Joao Silva" is a member of "Another Community1" |
79 | 79 | And "Joao Silva" is a member of "Another Community2" |
80 | - And I am on Joao Silva's control panel | |
80 | + And I am on joaosilva's control panel | |
81 | 81 | And I follow "Manage Content" |
82 | 82 | And I follow "Spread" |
83 | 83 | And I check "Sample Community" |
84 | 84 | And I press "Spread this" |
85 | 85 | And I should not see "This article name is already in use in the following community(ies):" |
86 | - And I am on Joao Silva's control panel | |
86 | + And I am on joaosilva's control panel | |
87 | 87 | And I follow "Manage Content" |
88 | 88 | And I follow "Spread" |
89 | 89 | And I check "Sample Community" |
... | ... | @@ -91,30 +91,30 @@ Feature: publish article |
91 | 91 | And I check "Another Community2" |
92 | 92 | When I press "Spread this" |
93 | 93 | Then I should see "The title (article name) is already being used by another article, please use another title." |
94 | - When I go to Another Community1's sitemap | |
94 | + When I go to another-community1's sitemap | |
95 | 95 | Then I should see "Sample Article" |
96 | - When I go to Another Community2's sitemap | |
96 | + When I go to another-community2's sitemap | |
97 | 97 | Then I should see "Sample Article" |
98 | 98 | |
99 | 99 | Scenario: publishing articles with the same name in a moderated community |
100 | 100 | Given I am logged in as "joaosilva" |
101 | 101 | And "Joao Silva" is a member of "Sample Community" |
102 | 102 | And "Joao Silva" is admin of "Sample Community" |
103 | - And I am on Sample Community's control panel | |
103 | + And I am on sample-community's control panel | |
104 | 104 | And I follow "Community Info and settings" |
105 | 105 | And I choose "profile_data_moderated_articles_true" |
106 | 106 | And I press "Save" |
107 | - And I am on Joao Silva's control panel | |
107 | + And I am on joaosilva's control panel | |
108 | 108 | And I follow "Manage Content" |
109 | 109 | And I follow "Spread" |
110 | 110 | And I check "Sample Community" |
111 | 111 | And I press "Spread this" |
112 | - And I am on Joao Silva's control panel | |
112 | + And I am on joaosilva's control panel | |
113 | 113 | And I follow "Manage Content" |
114 | 114 | And I follow "Spread" |
115 | 115 | And I check "Sample Community" |
116 | 116 | And I press "Spread this" |
117 | - And I am on Sample Community's control panel | |
117 | + And I am on sample-community's control panel | |
118 | 118 | And I follow "Tasks" |
119 | 119 | And I choose "Accept" |
120 | 120 | And I press "Apply!" |
... | ... | @@ -126,17 +126,17 @@ Feature: publish article |
126 | 126 | Scenario: ask to publish an article that was deleted before approval |
127 | 127 | Given I am logged in as "joaosilva" |
128 | 128 | And "Joao Silva" is admin of "Sample Community" |
129 | - And I am on Sample Community's control panel | |
129 | + And I am on sample-community's control panel | |
130 | 130 | And I follow "Community Info and settings" |
131 | 131 | And I choose "profile_data_moderated_articles_true" |
132 | 132 | And I press "Save" |
133 | - And I am on Joao Silva's control panel | |
133 | + And I am on joaosilva's control panel | |
134 | 134 | And I follow "Manage Content" |
135 | 135 | And I follow "Spread" |
136 | 136 | And I check "Sample Community" |
137 | 137 | And I press "Spread this" |
138 | 138 | And "joaosilva" has no articles |
139 | - And I am on Sample Community's control panel | |
139 | + And I am on sample-community's control panel | |
140 | 140 | When I follow "Tasks" |
141 | 141 | Then I should see "The article was removed." |
142 | 142 | And I press "Apply!" | ... | ... |
features/register_enterprise.feature
... | ... | @@ -9,7 +9,7 @@ Feature: register enterprise |
9 | 9 | | joaosilva | Joao Silva | joaosilva@example.com | |
10 | 10 | |
11 | 11 | And I am logged in as "joaosilva" |
12 | - And I am on Joao Silva's control panel | |
12 | + And I am on joaosilva's control panel | |
13 | 13 | And feature "enterprise_registration" is enabled on environment |
14 | 14 | |
15 | 15 | Scenario: enterprise registration is disabled by admin |
... | ... | @@ -92,7 +92,7 @@ Feature: register enterprise |
92 | 92 | And I press "Next" |
93 | 93 | Then I should see "Enterprise registration completed" |
94 | 94 | And I am logged in as admin |
95 | - And I go to the Control panel | |
95 | + And I go to admin_user's control panel | |
96 | 96 | When I follow "Tasks" within ".control-panel" |
97 | 97 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
98 | 98 | And the first mail is to admin_user@example.com |
... | ... | @@ -100,7 +100,7 @@ Feature: register enterprise |
100 | 100 | And I press "Apply!" |
101 | 101 | Then the last mail is to joaosilva@example.com |
102 | 102 | And I am logged in as "joaosilva" |
103 | - And I am on Joao Silva's control panel | |
103 | + And I am on joaosilva's control panel | |
104 | 104 | When I follow "Manage my groups" |
105 | 105 | Then I should see "My Enterprise" |
106 | 106 | |
... | ... | @@ -119,7 +119,7 @@ Feature: register enterprise |
119 | 119 | And I press "Next" |
120 | 120 | Then I should see "Enterprise registration completed" |
121 | 121 | And I am logged in as admin |
122 | - And I go to the Control panel | |
122 | + And I go to admin_user's control panel | |
123 | 123 | When I follow "Tasks" within ".control-panel" |
124 | 124 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
125 | 125 | And the first mail is to admin_user@example.com |
... | ... | @@ -128,7 +128,7 @@ Feature: register enterprise |
128 | 128 | And I press "Apply!" |
129 | 129 | Then the last mail is to joaosilva@example.com |
130 | 130 | And I am logged in as "joaosilva" |
131 | - And I am on Joao Silva's control panel | |
131 | + And I am on joaosilva's control panel | |
132 | 132 | When I follow "Manage my groups" |
133 | 133 | Then I should not see "My Enterprise" |
134 | 134 | |
... | ... | @@ -156,12 +156,12 @@ Feature: register enterprise |
156 | 156 | When I choose "Validator" |
157 | 157 | And I press "Confirm" |
158 | 158 | Then I should see "Enterprise registration completed" |
159 | - And I am on Validator's control panel | |
159 | + And I am on validator's control panel | |
160 | 160 | When I follow "Tasks" |
161 | 161 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
162 | 162 | And I choose "Accept" |
163 | 163 | And I press "Apply!" |
164 | - And I am on Joao Silva's control panel | |
164 | + And I am on joaosilva's control panel | |
165 | 165 | When I follow "Manage my groups" |
166 | 166 | Then I should see "My Enterprise" |
167 | 167 | |
... | ... | @@ -189,13 +189,13 @@ Feature: register enterprise |
189 | 189 | When I choose "Validator" |
190 | 190 | And I press "Confirm" |
191 | 191 | Then I should see "Enterprise registration completed" |
192 | - And I am on Validator's control panel | |
192 | + And I am on validator's control panel | |
193 | 193 | When I follow "Tasks" |
194 | 194 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
195 | 195 | And I choose "Reject" |
196 | 196 | And I fill in "Rejection explanation" with "This enterprise has some irregularities." |
197 | 197 | And I press "Apply" |
198 | - And I am on Joao Silva's control panel | |
198 | + And I am on joaosilva's control panel | |
199 | 199 | When I follow "Manage my groups" |
200 | 200 | Then I should not see "My Enterprise" |
201 | 201 | ... | ... |
features/search.feature
... | ... | @@ -9,7 +9,7 @@ Feature: search |
9 | 9 | |
10 | 10 | Scenario: show empty results in all enabled assets |
11 | 11 | Given I go to the search page |
12 | - And I fill in "query" with "Anything" | |
12 | + And I fill in "search-input" with "Anything" | |
13 | 13 | And I press "Search" |
14 | 14 | Then I should see "People" within ".search-results-people" |
15 | 15 | And I should see "None" within ".search-results-people" |
... | ... | @@ -30,7 +30,7 @@ Feature: search |
30 | 30 | | joaosilva | Joao Silva | |
31 | 31 | | josearaujo | Jose Araujo | |
32 | 32 | When I go to the search page |
33 | - And I fill in "query" with "Silva" | |
33 | + And I fill in "search-input" with "Silva" | |
34 | 34 | And I press "Search" |
35 | 35 | Then I should see "Joao Silva" within ".common-profile-list-block" |
36 | 36 | And I should not see "Jose Araujo" |
... | ... | @@ -51,7 +51,7 @@ Feature: search |
51 | 51 | | joaosilva | article #8 | |
52 | 52 | | joaosilva | article #9 | |
53 | 53 | When I go to the search page |
54 | - And I fill in "query" with "article" | |
54 | + And I fill in "search-input" with "article" | |
55 | 55 | And I press "Search" |
56 | 56 | Then I should see "article #8" within ".search-results-articles" |
57 | 57 | And I should not see "article #9" within ".search-results-articles" |
... | ... | @@ -65,7 +65,7 @@ Feature: search |
65 | 65 | | boring-community | Boring community | semterrinha | |
66 | 66 | | fancy-community | Fancy community | agrotox | |
67 | 67 | And I go to the search page |
68 | - And I fill in "query" with "fancy" | |
68 | + And I fill in "search-input" with "fancy" | |
69 | 69 | And I press "Search" |
70 | 70 | Then I should see "Fancy community" within ".common-profile-list-block" |
71 | 71 | And I should not see "Boring community" |
... | ... | @@ -76,7 +76,7 @@ Feature: search |
76 | 76 | | shop1 | Shoes shop | |
77 | 77 | | shop2 | Fruits shop | |
78 | 78 | And I go to the search page |
79 | - And I fill in "query" with "shoes" | |
79 | + And I fill in "search-input" with "shoes" | |
80 | 80 | And I press "Search" |
81 | 81 | Then I should see "Shoes shop" within ".common-profile-list-block" |
82 | 82 | And I should not see "Fruits shop" |
... | ... | @@ -90,7 +90,7 @@ Feature: search |
90 | 90 | | joaosilva | bees and butterflies | this is an article about bees and butterflies | |
91 | 91 | | joaosilva | whales and dolphins | this is an article about whales and dolphins | |
92 | 92 | When I go to the search page |
93 | - And I fill in "query" with "whales" | |
93 | + And I fill in "search-input" with "whales" | |
94 | 94 | And I press "Search" |
95 | 95 | Then I should see "whales and dolphins" within "div.search-results-articles" |
96 | 96 | And I should not see "bees and butterflies" |
... | ... | @@ -107,7 +107,7 @@ Feature: search |
107 | 107 | | colivre-ent | development | social networks consultancy | |
108 | 108 | | colivre-ent | development | wikis consultancy | |
109 | 109 | When I go to the search page |
110 | - And I fill in "query" with "wikis" | |
110 | + And I fill in "search-input" with "wikis" | |
111 | 111 | And I press "Search" |
112 | 112 | Then I should see "wikis consultancy" within "div.search-results-products" |
113 | 113 | And I should not see "social networks consultancy" |
... | ... | @@ -121,7 +121,7 @@ Feature: search |
121 | 121 | | nice-people | Group meeting | 2009-10-01 | |
122 | 122 | | nice-people | John Doe's birthday | 2009-09-01 | |
123 | 123 | When I go to the search page |
124 | - And I fill in "query" with "birthday" | |
124 | + And I fill in "search-input" with "birthday" | |
125 | 125 | And I press "Search" |
126 | 126 | Then I should see "John Doe's birthday" within "div.search-results-events" |
127 | 127 | And I should not see "Group meeting" |
... | ... | @@ -140,7 +140,7 @@ Feature: search |
140 | 140 | | owner | name | category | |
141 | 141 | | colivre_dev | Noosfero platform | Development | |
142 | 142 | When I go to the search page |
143 | - And I fill in "query" with "noosfero" | |
143 | + And I fill in "search-input" with "noosfero" | |
144 | 144 | And I press "Search" |
145 | 145 | Then I should see "Colivre - Noosfero dev." within "div.search-results-enterprises" |
146 | 146 | And I should see "Noosfero users" within "div.search-results-communities" | ... | ... |
features/search_communities.feature
... | ... | @@ -28,7 +28,7 @@ Feature: search communities |
28 | 28 | |
29 | 29 | Scenario: simple search for community |
30 | 30 | When I go to the search communities page |
31 | - And I fill in "query" with "noosfero" | |
31 | + And I fill in "search-input" with "noosfero" | |
32 | 32 | And I press "Search" |
33 | 33 | Then I should see "Noosfero Community" within "#search-results" |
34 | 34 | And I should see "Noosfero Community" within ".only-one-result-box" |
... | ... | @@ -42,7 +42,7 @@ Feature: search communities |
42 | 42 | | identifier | name | category | |
43 | 43 | | noos-comm | Noosfero Community | software-livre | |
44 | 44 | When I go to the search communities page |
45 | - And I fill in "query" with "software livre" | |
45 | + And I fill in "search-input" with "software livre" | |
46 | 46 | And I press "Search" |
47 | 47 | Then I should see "Noosfero" within "#search-results" |
48 | 48 | |
... | ... | @@ -57,7 +57,7 @@ Feature: search communities |
57 | 57 | | identifier | name | category | |
58 | 58 | | linux | Linux Community | software-livre | |
59 | 59 | When I go to the search communities page |
60 | - And I fill in "query" with "Linux" | |
60 | + And I fill in "search-input" with "Linux" | |
61 | 61 | And I press "Search" |
62 | 62 | Then I should see "Temáticas" within "#facets-menu" |
63 | 63 | |
... | ... | @@ -66,7 +66,7 @@ Feature: search communities |
66 | 66 | | identifier | name | |
67 | 67 | | luwac | Linux Users Without a Clue | |
68 | 68 | When I go to the search communities page |
69 | - And I fill in "query" with "Linux Clue" | |
69 | + And I fill in "search-input" with "Linux Clue" | |
70 | 70 | And I press "Search" |
71 | 71 | Then I should see "Linux Users Without a Clue" within "#search-results" |
72 | 72 | |
... | ... | @@ -83,7 +83,7 @@ Feature: search communities |
83 | 83 | | noos-dev | Noosfero Developers | software-livre | |
84 | 84 | | facebook | Facebook Developers | big-brother | |
85 | 85 | When I go to the search communities page |
86 | - And I fill in "query" with "Developers" | |
86 | + And I fill in "search-input" with "Developers" | |
87 | 87 | And I press "Search" |
88 | 88 | And I follow "Software Livre" within "#facets-menu" |
89 | 89 | Then I should see "Noosfero Developers" within "#search-results" |
... | ... | @@ -106,10 +106,10 @@ Feature: search communities |
106 | 106 | | rails-dev | Rails Developers | other-category | |
107 | 107 | | rails-usr | Rails Users | software-livre | |
108 | 108 | When I go to the search communities page |
109 | - And I fill in "query" with "Developers" | |
109 | + And I fill in "search-input" with "Developers" | |
110 | 110 | And I press "Search" |
111 | 111 | And I follow "Software Livre" within "#facets-menu" |
112 | - And I fill in "query" with "Rails" | |
112 | + And I fill in "search-input" with "Rails" | |
113 | 113 | And I press "Search" |
114 | 114 | Then I should see "Rails Users" within "#search-results" |
115 | 115 | And I should not see "Rails Developers" | ... | ... |
features/search_contents.feature
... | ... | @@ -26,7 +26,7 @@ Feature: search contents |
26 | 26 | Then I should see "whales and dolphins" within ".search-text-article-item" |
27 | 27 | And I should see "whales and dolphins" within ".only-one-result-box" |
28 | 28 | And I should not see "bees and butterflies" |
29 | - And I should see content inside ".icon-content-textile-article" | |
29 | + And The page should contain ".icon-content-textile-article" | |
30 | 30 | When I follow "whales and dolphins" |
31 | 31 | Then I should be on article "whales and dolphins" |
32 | 32 | |
... | ... | @@ -155,19 +155,19 @@ Feature: search contents |
155 | 155 | |
156 | 156 | Scenario: link to author on search results |
157 | 157 | When I go to the search articles page |
158 | - And I fill in "query" with "whales" | |
158 | + And I fill in "search-input" with "whales" | |
159 | 159 | And I press "Search" |
160 | 160 | Then I should see "Author" within ".search-article-author" |
161 | 161 | Then I should see "Joao Silva" within ".search-article-author-name" |
162 | 162 | When I follow "Joao Silva" |
163 | - Then I should be on Joao Silva's profile | |
163 | + Then I should be on joaosilva's profile | |
164 | 164 | |
165 | 165 | Scenario: show clean description excerpt on search results |
166 | 166 | Given the following articles |
167 | 167 | | owner | name | body | |
168 | 168 | | joaosilva | Herreninsel | The island <b>Herreninsel</b>, with an area of 238 hectares, is the biggest of the three main islands of the Chiemsee, a lake in the state of Bavaria, Germany. Together with the islands of Fraueninsel and Krautinsel it forms the municipality of Chiemsee. | |
169 | 169 | When I go to the search articles page |
170 | - And I fill in "query" with "island" | |
170 | + And I fill in "search-input" with "island" | |
171 | 171 | And I press "Search" |
172 | 172 | Then I should see "Description" within ".search-article-description" |
173 | 173 | And I should see "The island Herreninsel, with" within ".search-article-description" |
... | ... | @@ -178,7 +178,7 @@ Feature: search contents |
178 | 178 | | owner | name | body | |
179 | 179 | | joaosilva | Herreninsel | | |
180 | 180 | When I go to the search articles page |
181 | - And I fill in "query" with "Herreninsel" | |
181 | + And I fill in "search-input" with "Herreninsel" | |
182 | 182 | And I press "Search" |
183 | 183 | Then I should see "None" within ".search-article-description" |
184 | 184 | |
... | ... | @@ -188,7 +188,7 @@ Feature: search contents |
188 | 188 | | bees and butterflies | Hymenoptera | |
189 | 189 | | bees and butterflies | Lepidoptera | |
190 | 190 | When I go to the search articles page |
191 | - And I fill in "query" with "bees" | |
191 | + And I fill in "search-input" with "bees" | |
192 | 192 | And I press "Search" |
193 | 193 | Then I should see "Tags" within ".search-article-tags" |
194 | 194 | And I should see "Hymenoptera" within ".search-article-tags" |
... | ... | @@ -198,7 +198,7 @@ Feature: search contents |
198 | 198 | |
199 | 199 | Scenario: show empty tags in search results |
200 | 200 | When I go to the search articles page |
201 | - And I fill in "query" with "dolphins" | |
201 | + And I fill in "search-input" with "dolphins" | |
202 | 202 | And I press "Search" |
203 | 203 | Then I should see "None" within ".search-article-tags" |
204 | 204 | |
... | ... | @@ -210,14 +210,14 @@ Feature: search contents |
210 | 210 | | owner | name | body | category | |
211 | 211 | | joaosilva | Sergei Sorokin | Retired ice hockey player | soviet | |
212 | 212 | When I go to the search articles page |
213 | - And I fill in "query" with "hockey" | |
213 | + And I fill in "search-input" with "hockey" | |
214 | 214 | And I press "Search" |
215 | 215 | Then I should see "Categories" within ".search-article-categories" |
216 | 216 | And I should see "Soviet" within ".search-article-category" |
217 | 217 | |
218 | 218 | Scenario: show empty categories on search results |
219 | 219 | When I go to the search articles page |
220 | - And I fill in "query" with "whales" | |
220 | + And I fill in "search-input" with "whales" | |
221 | 221 | And I press "Search" |
222 | 222 | Then I should see "whales and dolphins" |
223 | 223 | And I should see "None" within ".search-article-categories-container" |
... | ... | @@ -243,7 +243,7 @@ Feature: search contents |
243 | 243 | | owner | name | body | category | |
244 | 244 | | joaosilva | using noosfero | noosfero is a great CMS | software-livre | |
245 | 245 | When I go to the search articles page |
246 | - And I fill in "query" with "Software" | |
246 | + And I fill in "search-input" with "Software" | |
247 | 247 | And I press "Search" |
248 | 248 | Then I should see "using noosfero" within "#search-results" |
249 | 249 | And I should not see "bees and butterflies" |
... | ... | @@ -255,7 +255,7 @@ Feature: search contents |
255 | 255 | | joaosilva | JSilva blog | |
256 | 256 | When I search contents for "JSilva" |
257 | 257 | Then I should see "JSilva blog" within ".search-result-title" |
258 | - And I should see content inside ".icon-content-blog" | |
258 | + And The page should contain ".icon-content-blog" | |
259 | 259 | |
260 | 260 | Scenario: show and link last posts on blog search results |
261 | 261 | Given the following blogs |
... | ... | @@ -286,7 +286,7 @@ Feature: search contents |
286 | 286 | |
287 | 287 | Scenario: see default facets when searching |
288 | 288 | When I go to the search articles page |
289 | - And I fill in "query" with "bees" | |
289 | + And I fill in "search-input" with "bees" | |
290 | 290 | And I press "Search" |
291 | 291 | Then I should see "Type" within "#facets-menu" |
292 | 292 | And I should see "Published date" within "#facets-menu" |
... | ... | @@ -295,7 +295,7 @@ Feature: search contents |
295 | 295 | |
296 | 296 | Scenario: find enterprises without exact query |
297 | 297 | When I go to the search articles page |
298 | - And I fill in "query" with "article bees" | |
298 | + And I fill in "search-input" with "article bees" | |
299 | 299 | And I press "Search" |
300 | 300 | Then I should see "bees and butterflies" within "#search-results" |
301 | 301 | |
... | ... | @@ -309,7 +309,7 @@ Feature: search contents |
309 | 309 | | joaosilva | noosfero and debian | this is an article about noosfero and debian | software-livre | |
310 | 310 | | joaosilva | facebook and 1984 | this is an article about facebook and 1984 | big-brother | |
311 | 311 | When I go to the search articles page |
312 | - And I fill in "query" with "this is an article" | |
312 | + And I fill in "search-input" with "this is an article" | |
313 | 313 | And I press "Search" |
314 | 314 | # Then show me the page |
315 | 315 | And I follow "Software Livre" within "#facets-menu" |
... | ... | @@ -329,10 +329,10 @@ Feature: search contents |
329 | 329 | | joaosilva | facebook and 1984 | this is an article about facebook and 1984 | big-brother | |
330 | 330 | | joaosilva | facebook defense | facebook is not so bad | software-livre | |
331 | 331 | When I go to the search articles page |
332 | - And I fill in "query" with "this is an article" | |
332 | + And I fill in "search-input" with "this is an article" | |
333 | 333 | And I press "Search" |
334 | 334 | And I follow "Software Livre" within "#facets-menu" |
335 | - And I fill in "query" with "facebook" | |
335 | + And I fill in "search-input" with "facebook" | |
336 | 336 | And I press "Search" |
337 | 337 | Then I should see "facebook defense" within "#search-results" |
338 | 338 | And I should not see "1984" | ... | ... |
features/search_enterprises.feature
... | ... | @@ -14,6 +14,7 @@ Feature: search enterprises |
14 | 14 | | Temáticas | |
15 | 15 | |
16 | 16 | Scenario: show recent enterprises on index |
17 | + Given there are no pending jobs | |
17 | 18 | When I go to the search enterprises page |
18 | 19 | Then I should see "Shoes shop" within "#search-results" |
19 | 20 | And I should see Shoes shop's profile image |
... | ... | @@ -26,7 +27,7 @@ Feature: search enterprises |
26 | 27 | |
27 | 28 | Scenario: simple search for enterprise |
28 | 29 | When I go to the search enterprises page |
29 | - And I fill in "query" with "shoes" | |
30 | + And I fill in "search-input" with "shoes" | |
30 | 31 | And I press "Search" |
31 | 32 | Then I should see "Shoes shop" within ".only-one-result-box" |
32 | 33 | And I should see Shoes shop's profile image |
... | ... | @@ -36,7 +37,7 @@ Feature: search enterprises |
36 | 37 | Scenario: link to enterprise homepage on search results |
37 | 38 | Given I search enterprises for "shoes" |
38 | 39 | When I follow "Shoes shop" |
39 | - Then I should be on Shoes shop's profile | |
40 | + Then I should be on shop1's profile | |
40 | 41 | |
41 | 42 | Scenario: show clean enterprise homepage on search results |
42 | 43 | Given the following articles |
... | ... | @@ -56,13 +57,13 @@ Feature: search enterprises |
56 | 57 | |
57 | 58 | Scenario: see default facets when searching |
58 | 59 | When I go to the search enterprises page |
59 | - And I fill in "query" with "shoes" | |
60 | + And I fill in "search-input" with "shoes" | |
60 | 61 | And I press "Search" |
61 | 62 | Then I should see "City" within "#facets-menu" |
62 | 63 | |
63 | 64 | Scenario: see category facets when searching |
64 | 65 | When I go to the search enterprises page |
65 | - And I fill in "query" with "shoes" | |
66 | + And I fill in "search-input" with "shoes" | |
66 | 67 | And I press "Search" |
67 | 68 | Then I should see "Temáticas" within "#facets-menu" |
68 | 69 | |
... | ... | @@ -74,7 +75,7 @@ Feature: search enterprises |
74 | 75 | | identifier | name | region | |
75 | 76 | | art-pp | Artesanato PP | Pres. Prudente | |
76 | 77 | When I go to the search enterprises page |
77 | - And I fill in "query" with "Artesanato" | |
78 | + And I fill in "search-input" with "Artesanato" | |
78 | 79 | And I press "Search" |
79 | 80 | Then I should see "Pres. Prudente" within "#facet-menu-f_region" |
80 | 81 | And I should see ", SP" within "#facet-menu-f_region" |
... | ... | @@ -89,7 +90,7 @@ Feature: search enterprises |
89 | 90 | | identifier | name | region | |
90 | 91 | | art-pp | Artesanato PP | Pres. Prudente | |
91 | 92 | When I go to the search enterprises page |
92 | - And I fill in "query" with "Prudente" | |
93 | + And I fill in "search-input" with "Prudente" | |
93 | 94 | And I press "Search" |
94 | 95 | Then I should see "Artesanato PP" within "#search-results" |
95 | 96 | |
... | ... | @@ -101,7 +102,7 @@ Feature: search enterprises |
101 | 102 | | identifier | name | category | |
102 | 103 | | noosfero | Noosfero | software-livre | |
103 | 104 | When I go to the search enterprises page |
104 | - And I fill in "query" with "software" | |
105 | + And I fill in "search-input" with "software" | |
105 | 106 | And I press "Search" |
106 | 107 | Then I should see "Noosfero" within "#search-results" |
107 | 108 | And I should see "Software Livre" within ".search-enterprise-category" |
... | ... | @@ -123,7 +124,7 @@ Feature: search enterprises |
123 | 124 | | identifier | name | |
124 | 125 | | noosfero | Noosfero Developers Association | |
125 | 126 | When I go to the search enterprises page |
126 | - And I fill in "query" with "Noosfero Association" | |
127 | + And I fill in "search-input" with "Noosfero Association" | |
127 | 128 | And I press "Search" |
128 | 129 | Then I should see "Noosfero Developers Association" within "#search-results" |
129 | 130 | |
... | ... | @@ -136,7 +137,7 @@ Feature: search enterprises |
136 | 137 | | noosfero | Noosfero Developers | software-livre | |
137 | 138 | | facebook | Facebook Developers | | |
138 | 139 | When I go to the search enterprises page |
139 | - And I fill in "query" with "Developers" | |
140 | + And I fill in "search-input" with "Developers" | |
140 | 141 | And I press "Search" |
141 | 142 | And I follow "Software Livre" within "#facets-menu" |
142 | 143 | Then I should see "Noosfero Developers" within "#search-results" |
... | ... | @@ -155,10 +156,10 @@ Feature: search enterprises |
155 | 156 | | rails-dev | Rails Developers | | |
156 | 157 | | rails-usr | Rails Users | software-livre | |
157 | 158 | When I go to the search enterprises page |
158 | - And I fill in "query" with "Developers" | |
159 | + And I fill in "search-input" with "Developers" | |
159 | 160 | And I press "Search" |
160 | 161 | And I follow "Software Livre" within "#facets-menu" |
161 | - And I fill in "query" with "Rails" | |
162 | + And I fill in "search-input" with "Rails" | |
162 | 163 | And I press "Search" |
163 | 164 | Then I should see "Rails Users" within "#search-results" |
164 | 165 | And I should not see "Rails Developers" | ... | ... |
features/search_people.feature
... | ... | @@ -17,7 +17,7 @@ Feature: search people |
17 | 17 | |
18 | 18 | Scenario: simple search for person |
19 | 19 | When I go to the search people page |
20 | - And I fill in "query" with "Silva" | |
20 | + And I fill in "search-input" with "Silva" | |
21 | 21 | And I press "Search" |
22 | 22 | Then I should see "Joao Silva" within "#search-results" |
23 | 23 | And I should see "Joao Silva" within ".only-one-result-box" |
... | ... | @@ -32,7 +32,7 @@ Feature: search people |
32 | 32 | | name | |
33 | 33 | | Temáticas | |
34 | 34 | When I go to the search people page |
35 | - And I fill in "query" with "joao" | |
35 | + And I fill in "search-input" with "joao" | |
36 | 36 | And I press "Search" |
37 | 37 | Then I should see "Temáticas" within "#facets-menu" |
38 | 38 | |
... | ... | @@ -44,7 +44,7 @@ Feature: search people |
44 | 44 | | login | name | category | |
45 | 45 | | linus | Linus Torvalds | software-livre | |
46 | 46 | When I go to the search people page |
47 | - And I fill in "query" with "software livre" | |
47 | + And I fill in "search-input" with "software livre" | |
48 | 48 | And I press "Search" |
49 | 49 | Then I should see "Linus Torvalds" within "#search-results" |
50 | 50 | And I should not see "Joao Silva" |
... | ... | @@ -55,7 +55,7 @@ Feature: search people |
55 | 55 | | login | name | |
56 | 56 | | jsilva | Joao Adalberto de Oliveira Silva | |
57 | 57 | When I go to the search people page |
58 | - And I fill in "query" with "Adalberto Silva" | |
58 | + And I fill in "search-input" with "Adalberto Silva" | |
59 | 59 | And I press "Search" |
60 | 60 | Then I should see "Joao Adalberto de Oliveira Silva" within "#search-results" |
61 | 61 | |
... | ... | @@ -71,7 +71,7 @@ Feature: search people |
71 | 71 | | linus | Linus Torvalds | software-livre | |
72 | 72 | | other | Other Linus | | |
73 | 73 | When I go to the search people page |
74 | - And I fill in "query" with "Linus" | |
74 | + And I fill in "search-input" with "Linus" | |
75 | 75 | And I press "Search" |
76 | 76 | And I follow "Software Livre" within "#facets-menu" |
77 | 77 | Then I should see "Linus Torvalds" within "#search-results" |
... | ... | @@ -93,10 +93,10 @@ Feature: search people |
93 | 93 | | rilin | Richard Linus | | |
94 | 94 | | stall | Richard Stallman | software-livre | |
95 | 95 | When I go to the search people page |
96 | - And I fill in "query" with "Linus" | |
96 | + And I fill in "search-input" with "Linus" | |
97 | 97 | And I press "Search" |
98 | 98 | And I follow "Software Livre" within "#facets-menu" |
99 | - And I fill in "query" with "Richard" | |
99 | + And I fill in "search-input" with "Richard" | |
100 | 100 | And I press "Search" |
101 | 101 | Then I should see "Richard Stallman" within "#search-results" |
102 | 102 | And I should not see "Richard Linus" | ... | ... |
features/search_products.feature
... | ... | @@ -21,14 +21,18 @@ Feature: search products |
21 | 21 | When I go to the search products page |
22 | 22 | Then I should see "wikis consultancy" within "#search-results" |
23 | 23 | And I should see "social networks consultancy" within "#search-results" |
24 | - And I should not see content inside "div.pagination" | |
25 | - And I should not see content inside "#facets-menu" | |
24 | + | |
25 | + Scenario: not show pagination and facets on recent products | |
26 | + When I go to the search products page | |
27 | + Then The page should not contain "div.pagination" | |
28 | + And The page should not contain "#facets-menu" | |
26 | 29 | |
27 | 30 | Scenario: show empty search results |
28 | 31 | When I search products for "something unrelated" |
29 | 32 | Then I should see "None" within ".search-results-type-empty" |
30 | 33 | |
31 | 34 | Scenario: simple search for product |
35 | + Given there are no pending jobs | |
32 | 36 | When I search products for "wikis" |
33 | 37 | Then I should see "wikis consultancy" within "#search-results" |
34 | 38 | And I should see "wikis consultancy" within ".only-one-result-box" |
... | ... | @@ -38,7 +42,7 @@ Feature: search products |
38 | 42 | |
39 | 43 | Scenario: see default facets when searching |
40 | 44 | When I go to the search products page |
41 | - And I fill in "query" with "wikis" | |
45 | + And I fill in "search-input" with "wikis" | |
42 | 46 | And I press "Search" |
43 | 47 | Then I should see "Related products" within "#facets-menu" |
44 | 48 | Then I should see "City" within "#facets-menu" |
... | ... | @@ -49,7 +53,7 @@ Feature: search products |
49 | 53 | | product | category | solidary | |
50 | 54 | | wikis consultancy | development | true | |
51 | 55 | When I go to the search products page |
52 | - And I fill in "query" with "wikis" | |
56 | + And I fill in "search-input" with "wikis" | |
53 | 57 | And I press "Search" |
54 | 58 | Then I should see "100%" within "div.search-product-ecosol-percentage-icon-100" |
55 | 59 | |
... | ... | @@ -59,7 +63,7 @@ Feature: search products |
59 | 63 | | wikis consultancy | development | true | |
60 | 64 | | wikis consultancy | development | false | |
61 | 65 | When I go to the search products page |
62 | - And I fill in "query" with "wikis" | |
66 | + And I fill in "search-input" with "wikis" | |
63 | 67 | And I press "Search" |
64 | 68 | Then I should see "50%" within "div.search-product-ecosol-percentage-icon-50" |
65 | 69 | |
... | ... | @@ -71,7 +75,7 @@ Feature: search products |
71 | 75 | | wikis consultancy | development | true | |
72 | 76 | | wikis consultancy | development | false | |
73 | 77 | When I go to the search products page |
74 | - And I fill in "query" with "wikis" | |
78 | + And I fill in "search-input" with "wikis" | |
75 | 79 | And I press "Search" |
76 | 80 | Then I should see "75%" within "div.search-product-ecosol-percentage-icon-75" |
77 | 81 | |
... | ... | @@ -83,7 +87,7 @@ Feature: search products |
83 | 87 | | wikis consultancy | development | false | |
84 | 88 | | wikis consultancy | development | false | |
85 | 89 | When I go to the search products page |
86 | - And I fill in "query" with "wikis" | |
90 | + And I fill in "search-input" with "wikis" | |
87 | 91 | And I press "Search" |
88 | 92 | Then I should see "25%" within "div.search-product-ecosol-percentage-icon-25" |
89 | 93 | |
... | ... | @@ -92,7 +96,7 @@ Feature: search products |
92 | 96 | | owner | category | name | price | img | |
93 | 97 | | colivre-ent | development | noosfero | 12.34 | noosfero-network | |
94 | 98 | When I go to the search products page |
95 | - And I fill in "query" with "noosfero" | |
99 | + And I fill in "search-input" with "noosfero" | |
96 | 100 | And I press "Search" |
97 | 101 | Then I should not see "No image" |
98 | 102 | And I should see "Zoom in" within "a.zoomify-image" |
... | ... | @@ -105,7 +109,7 @@ Feature: search products |
105 | 109 | | owner | name | category | |
106 | 110 | | colivre-ent | Noosfero | software-livre | |
107 | 111 | When I go to the search products page |
108 | - And I fill in "query" with "software livre" | |
112 | + And I fill in "search-input" with "software livre" | |
109 | 113 | And I press "Search" |
110 | 114 | Then I should see "Noosfero" within "#search-results" |
111 | 115 | And I should not see "wikis consultancy" |
... | ... | @@ -125,7 +129,7 @@ Feature: search products |
125 | 129 | | owner | name | category | |
126 | 130 | | art-pp | Arte em Madeira | solidaria | |
127 | 131 | When I go to the search products page |
128 | - And I fill in "query" with "Madeira" | |
132 | + And I fill in "search-input" with "Madeira" | |
129 | 133 | And I press "Search" |
130 | 134 | Then I should see "Pres. Prudente" within "#facet-menu-f_region" |
131 | 135 | And I should see ", SP" within "#facet-menu-f_region" |
... | ... | @@ -145,7 +149,7 @@ Feature: search products |
145 | 149 | | owner | name | category | |
146 | 150 | | art-pp | Arte em Madeira | solidaria | |
147 | 151 | When I go to the search products page |
148 | - And I fill in "query" with "Prudente" | |
152 | + And I fill in "search-input" with "Prudente" | |
149 | 153 | And I press "Search" |
150 | 154 | Then I should see "Arte em Madeira" within "#search-results" |
151 | 155 | |
... | ... | @@ -157,7 +161,7 @@ Feature: search products |
157 | 161 | | owner | name | category | |
158 | 162 | | colivre-ent | Noosfero Social Network Platform | software-livre | |
159 | 163 | When I go to the search products page |
160 | - And I fill in "query" with "Noosfero Network" | |
164 | + And I fill in "search-input" with "Noosfero Network" | |
161 | 165 | And I press "Search" |
162 | 166 | Then I should see "Noosfero Social Network Platform" within "#search-results" |
163 | 167 | |
... | ... | @@ -177,7 +181,7 @@ Feature: search products |
177 | 181 | | colivre-ent | Noosfero Network | software-livre | |
178 | 182 | | fb | Facebook Network | big-brother | |
179 | 183 | When I go to the search products page |
180 | - And I fill in "query" with "Network" | |
184 | + And I fill in "search-input" with "Network" | |
181 | 185 | And I press "Search" |
182 | 186 | And I follow "Software Livre" within "#facets-menu" |
183 | 187 | Then I should see "Noosfero Network" within "#search-results" |
... | ... | @@ -206,10 +210,10 @@ Feature: search products |
206 | 210 | | other | Other open | software-livre | |
207 | 211 | | other | Other closed | big-brother | |
208 | 212 | When I go to the search products page |
209 | - And I fill in "query" with "Network" | |
213 | + And I fill in "search-input" with "Network" | |
210 | 214 | And I press "Search" |
211 | 215 | And I follow "Software Livre" within "#facets-menu" |
212 | - And I fill in "query" with "Other" | |
216 | + And I fill in "search-input" with "Other" | |
213 | 217 | And I press "Search" |
214 | 218 | Then I should see "Other open" within "#search-results" |
215 | 219 | And I should not see "Other closed" |
... | ... | @@ -217,4 +221,4 @@ Feature: search products |
217 | 221 | Scenario: don't search when products are disabled in environment |
218 | 222 | Given feature "disable_asset_products" is enabled on environment |
219 | 223 | When I go to the search products page |
220 | - Then I should not see content inside "#search-results" | |
224 | + Then I should see "There is no such page" within "#not-found" | ... | ... |
features/send_email_to_environment_members.feature
... | ... | @@ -15,25 +15,28 @@ Feature: send emails to environment members users |
15 | 15 | When I go to /admin/users/send_mail |
16 | 16 | Then I should see "Access denied" |
17 | 17 | |
18 | + @selenium-fixme | |
18 | 19 | Scenario: Send e-mail to members |
19 | 20 | Given I am logged in as admin |
20 | 21 | When I follow "Administration" |
21 | 22 | And I follow "Users" |
22 | 23 | And I follow "Send e-mail to users" |
23 | 24 | And I fill in "Subject" with "Hello, user!" |
24 | - And I fill in "body" with "We have some news" | |
25 | + And I fill in "Body" with "We have some news" | |
25 | 26 | When I press "Send" |
26 | 27 | Then I should be on /admin/users |
27 | 28 | |
29 | + @selenium-fixme | |
28 | 30 | Scenario: Not send e-mail to members if subject is blank |
29 | 31 | Given I am logged in as admin |
30 | 32 | When I follow "Administration" |
31 | 33 | And I follow "Users" |
32 | 34 | And I follow "Send e-mail to users" |
33 | - And I fill in "body" with "We have some news" | |
35 | + And I fill in "Body" with "We have some news" | |
34 | 36 | When I press "Send" |
35 | 37 | Then I should be on /admin/users/send_mail |
36 | 38 | |
39 | + @selenium | |
37 | 40 | Scenario: Not send e-mail to members if body is blank |
38 | 41 | Given I am logged in as admin |
39 | 42 | When I follow "Administration" |
... | ... | @@ -43,6 +46,7 @@ Feature: send emails to environment members users |
43 | 46 | When I press "Send" |
44 | 47 | Then I should be on /admin/users/send_mail |
45 | 48 | |
49 | + @selenium | |
46 | 50 | Scenario: Cancel creation of mailing |
47 | 51 | Given I am logged in as admin |
48 | 52 | When I follow "Administration" | ... | ... |
features/send_email_to_organization_members.feature
... | ... | @@ -33,7 +33,7 @@ Feature: send emails to organization members |
33 | 33 | And I go to Sample Community's members management |
34 | 34 | And I follow "Send e-mail to members" |
35 | 35 | And I fill in "Subject" with "Hello, member!" |
36 | - And I fill in "body" with "We have some news" | |
36 | + And I fill in "Body" with "We have some news" | |
37 | 37 | When I press "Send" |
38 | 38 | Then I should be on Sample Community's members management |
39 | 39 | |
... | ... | @@ -41,7 +41,7 @@ Feature: send emails to organization members |
41 | 41 | Given I am logged in as "joaosilva" |
42 | 42 | And I go to Sample Community's members management |
43 | 43 | And I follow "Send e-mail to members" |
44 | - And I fill in "body" with "We have some news" | |
44 | + And I fill in "Body" with "We have some news" | |
45 | 45 | When I press "Send" |
46 | 46 | Then I should be on /profile/sample-community/send_mail |
47 | 47 | |
... | ... | @@ -68,19 +68,19 @@ Feature: send emails to organization members |
68 | 68 | Scenario: Show button "Send e-Mail to members" of community to an moderator |
69 | 69 | Given I am logged in as "jose" |
70 | 70 | When I go to Sample Community's members page |
71 | - Then I should see "Send e-mail to members" link | |
71 | + Then I should see "Send e-mail to members" | |
72 | 72 | |
73 | 73 | Scenario: Not show button "Send e-Mail to members" if user has no right permission |
74 | 74 | Given I am logged in as "manoel" |
75 | 75 | When I go to Sample Community's members page |
76 | - Then I should not see "Send e-mail to members" link | |
76 | + Then I should not see "Send e-mail to members" | |
77 | 77 | |
78 | 78 | Scenario: Redirect back to profile members page after send mail |
79 | 79 | Given I am logged in as "jose" |
80 | 80 | When I go to Sample Community's members page |
81 | 81 | And I follow "Send e-mail to members" |
82 | 82 | And I fill in "Subject" with "Hello, member!" |
83 | - And I fill in "body" with "We have some news" | |
83 | + And I fill in "Body" with "We have some news" | |
84 | 84 | When I press "Send" |
85 | 85 | Then I should be on Sample Community's members page |
86 | 86 | ... | ... |
features/session_and_cookies_handling.feature
... | ... | @@ -4,6 +4,7 @@ Feature: session and cookies handling |
4 | 4 | I want Noosfero to manage well it usage of sessions and cookies |
5 | 5 | So that we can use HTTP caching effectively |
6 | 6 | |
7 | + @fixme | |
7 | 8 | Scenario: home page, logged in |
8 | 9 | Given the following users |
9 | 10 | | login | |
... | ... | @@ -16,10 +17,12 @@ Feature: session and cookies handling |
16 | 17 | When I go to the homepage |
17 | 18 | Then there must be no cookies |
18 | 19 | |
20 | + @fixme | |
19 | 21 | Scenario: user_data, not logged in |
20 | 22 | When I make a AJAX request to the user data path |
21 | 23 | Then there must be no cookies |
22 | 24 | |
25 | + @fixme | |
23 | 26 | Scenario: user_data, logged in |
24 | 27 | Given I am logged in as admin |
25 | 28 | When I make a AJAX request to the user data path | ... | ... |
features/signup.feature
... | ... | @@ -16,13 +16,12 @@ Feature: signup |
16 | 16 | | Full name | José da Silva | |
17 | 17 | And wait for the captcha signup time |
18 | 18 | And I press "Create my account" |
19 | - Then I should not be logged in | |
20 | - And I should receive an e-mail on josesilva@example.com | |
19 | + Then I should receive an e-mail on josesilva@example.com | |
21 | 20 | When I go to login page |
22 | 21 | And I fill in "Username" with "josesilva" |
23 | 22 | And I fill in "Password" with "secret" |
24 | 23 | And I press "Log in" |
25 | - Then I should not be logged in | |
24 | + Then I should not be logged in as "josesilva" | |
26 | 25 | When José da Silva's account is activated |
27 | 26 | And I go to login page |
28 | 27 | And I fill in "Username" with "josesilva" |
... | ... | @@ -36,7 +35,7 @@ Feature: signup |
36 | 35 | | joaosilva | Joao Silva | |
37 | 36 | Given I am logged in as "joaosilva" |
38 | 37 | And I go to signup page |
39 | - Then I should be on Joao Silva's control panel | |
38 | + Then I should be on joaosilva's control panel | |
40 | 39 | |
41 | 40 | @selenium |
42 | 41 | Scenario: user cannot register without a name |
... | ... | @@ -56,7 +55,7 @@ Feature: signup |
56 | 55 | | login | name | |
57 | 56 | | joaosilva | Joao Silva | |
58 | 57 | Given I am logged in as "joaosilva" |
59 | - And I am on Joao Silva's control panel | |
58 | + And I am on joaosilva's control panel | |
60 | 59 | And I follow "Edit Profile" |
61 | 60 | And I fill in "Name" with "" |
62 | 61 | When I press "Save" | ... | ... |
features/step_definitions/create_community_steps.rb
1 | 1 | include DatesHelper |
2 | 2 | |
3 | 3 | Given /^I create community "(.+)"$/ do |community| |
4 | - Given 'I go to the Control panel' | |
4 | + Given %{I go to admin_user's control panel} | |
5 | 5 | click_link('Manage my groups') |
6 | 6 | click_link('Create a new community') |
7 | 7 | fill_in("Name", :with => community) |
... | ... | @@ -10,7 +10,7 @@ end |
10 | 10 | |
11 | 11 | Given /^I approve community "(.+)"$/ do |community| |
12 | 12 | task = CreateCommunity.all.select {|c| c.name == community}.first |
13 | - Given 'I go to the Control panel' | |
13 | + Given %{I go to admin_user's control panel} | |
14 | 14 | click_link('Process requests') |
15 | 15 | choose("decision-finish-#{task.id}") |
16 | 16 | click_button('Apply!') |
... | ... | @@ -18,7 +18,7 @@ end |
18 | 18 | |
19 | 19 | Given /^I reject community "(.+)"$/ do |community| |
20 | 20 | task = CreateCommunity.all.select {|c| c.name == community}.first |
21 | - Given 'I go to the Control panel' | |
21 | + Given %{I go to admin_user's control panel} | |
22 | 22 | click_link('Process requests') |
23 | 23 | choose("decision-cancel-#{task.id}") |
24 | 24 | click_button('Apply!') |
... | ... | @@ -27,5 +27,5 @@ end |
27 | 27 | Then /^I should see "([^\"]*)"'s creation date$/ do |community| |
28 | 28 | com = Community.find_by_name community |
29 | 29 | text = "Created at: #{show_date(com.created_at)}" |
30 | - response.should contain(text) | |
30 | + has_content?(text) | |
31 | 31 | end | ... | ... |
... | ... | @@ -0,0 +1,46 @@ |
1 | +Then /^"([^"]*)" should not be visible within "([^"]*)"$/ do |text, selector| | |
2 | + if page.has_content?(text) | |
3 | + page.should have_no_css(selector, :text => text, :visible => false) | |
4 | + end | |
5 | +end | |
6 | + | |
7 | +Then /^"([^"]*)" should be visible within "([^"]*)"$/ do |text, selector| | |
8 | + if page.has_content?(text) | |
9 | + page.should have_css(selector, :text => text, :visible => false) | |
10 | + end | |
11 | +end | |
12 | + | |
13 | +Then /^I should see "([^"]*)" link$/ do |text| | |
14 | + page.should have_css('a', :text => text) | |
15 | +end | |
16 | + | |
17 | +Then /^I should not see "([^"]*)" link$/ do |text| | |
18 | + page.should have_no_css('a', :text => text) | |
19 | +end | |
20 | + | |
21 | +When /^I should see "([^\"]+)" linking to "([^\"]+)"$/ do |text, href| | |
22 | + page.should have_xpath("//a", :href => /#{href}/) | |
23 | +end | |
24 | + | |
25 | +Then /^the "([^"]*)" button should be disabled$/ do |selector| | |
26 | + field = find(selector) | |
27 | + field['disabled'].should be_true | |
28 | +end | |
29 | + | |
30 | +Then /^the "([^"]*)" button should be enabled$/ do |selector| | |
31 | + field = find(selector) | |
32 | + field['disabled'].should_not be_true | |
33 | +end | |
34 | + | |
35 | +When /^I reload and wait for the page$/ do | |
36 | + raise "Why why need this? Remove!" | |
37 | + visit page.driver.browser.current_url | |
38 | +end | |
39 | + | |
40 | +When /^I leave the "([^\"]+)" field$/ do |selector| | |
41 | + page.execute_script "jQuery('#{selector}').trigger('blur')" | |
42 | +end | |
43 | + | |
44 | +When /^I confirm the browser dialog$/ do | |
45 | + page.driver.browser.switch_to.alert.accept | |
46 | +end | ... | ... |
features/step_definitions/custom_webrat_steps.rb
... | ... | @@ -1,48 +0,0 @@ |
1 | -When /^I should see "([^\"]+)" link$/ do |text| | |
2 | - if response.class.to_s == 'Webrat::SeleniumResponse' | |
3 | - response.selenium.is_element_present("css=a:contains('#{text}')") | |
4 | - else | |
5 | - response.should have_selector("a:contains('#{text}')") | |
6 | - end | |
7 | -end | |
8 | - | |
9 | -When /^I should not see "([^\"]+)" link$/ do |text| | |
10 | - response.should_not have_selector("a:contains('#{text}')") | |
11 | -end | |
12 | - | |
13 | -When /^I should see "([^\"]+)" linking to "([^\"]+)"$/ do |text, href| | |
14 | - response.should have_selector("a:contains('#{text}')") | |
15 | - response.should have_selector("a[href='#{href}']") | |
16 | -end | |
17 | - | |
18 | -Then /^I should be exactly on (.+)$/ do |page_name| | |
19 | - URI.parse(current_url).request_uri.should == path_to(page_name) | |
20 | -end | |
21 | - | |
22 | -Then /^I should be moved to anchor "([^\"]+)"$/ do |anchor| | |
23 | - URI.parse(current_url).fragment.should == anchor | |
24 | -end | |
25 | - | |
26 | -When /^I select "([^\"]*)"$/ do |value| | |
27 | - select(value) | |
28 | -end | |
29 | - | |
30 | -When /^I fill in the following within "([^\"]*)":$/ do |parent, fields| | |
31 | - fields.rows_hash.each do |name, value| | |
32 | - When %{I fill in "#{name}" with "#{value}" within "#{parent}"} | |
33 | - end | |
34 | -end | |
35 | - | |
36 | -When /^I fill in "([^\"]*)" with "([^\"]*)" within "([^\"]*)"$/ do |field, value, parent| | |
37 | - within(parent) do |content| | |
38 | - content.fill_in(field, :with => value) | |
39 | - end | |
40 | -end | |
41 | - | |
42 | -When /^I should see content inside "([^\"]+)"$/ do |selector| | |
43 | - response.should have_selector(selector) | |
44 | -end | |
45 | - | |
46 | -When /^I should not see content inside "([^\"]+)"$/ do |selector| | |
47 | - response.should_not have_selector(selector) | |
48 | -end |
features/step_definitions/http_caching_steps.rb
1 | 1 | Then /^the response should be valid for (.+) minutes$/ do |n| |
2 | - response.headers['Cache-Control'].split(/,\s*/).should include("max-age=#{n.to_i * 60}") | |
2 | + page.response_headers['Cache-Control'].split(/,\s*/).should include("max-age=#{n.to_i * 60}") | |
3 | 3 | end |
4 | 4 | |
5 | 5 | Then /^the cache should be public/ do |
6 | - response.headers['Cache-Control'].split(/,\s*/).should include("public") | |
6 | + page.response_headers['Cache-Control'].split(/,\s*/).should include("public") | |
7 | 7 | end |
8 | 8 | |
9 | 9 | Then /^there must be no cache at all$/ do |
10 | - parts = response.headers['Cache-Control'].split(/,\s*/) | |
10 | + parts = page.response_headers['Cache-Control'].split(/,\s*/) | |
11 | 11 | parts.should include('must-revalidate') |
12 | 12 | parts.should include('max-age=0') |
13 | 13 | end | ... | ... |
features/step_definitions/internationalization_steps.rb
1 | +# -*- coding: utf-8 -*- | |
1 | 2 | def language_to_code(name) |
2 | 3 | { |
3 | 4 | 'Brazilian Portuguese' => 'pt-br', |
... | ... | @@ -35,11 +36,11 @@ Given /^a user accessed in (.*) before$/ do |lang| |
35 | 36 | end |
36 | 37 | |
37 | 38 | Given /^my browser prefers (.*)$/ do |lang| |
38 | - header 'Accept-Language', language_to_code(lang) | |
39 | + page.driver.header 'Accept-Language', language_to_code(lang) | |
39 | 40 | end |
40 | 41 | |
41 | 42 | Then /^the site should be in (.*)$/ do |lang| |
42 | - response.should have_selector("html[lang=#{language_to_code(lang)}]") | |
43 | - response.body.should match(/<strong>#{native_name(lang)}<\/strong>/) | |
43 | + page.should have_selector("html[lang=#{language_to_code(lang)}]") | |
44 | + page.body.should match(/<strong>#{native_name(lang)}<\/strong>/) | |
44 | 45 | end |
45 | 46 | ... | ... |
features/step_definitions/invitation_steps.rb
... | ... | @@ -9,7 +9,6 @@ Given /^I invite email "(.+)" to join community "(.+)"$/ do |email, community| |
9 | 9 | end |
10 | 10 | |
11 | 11 | Given /^I invite email "(.+)" to be my friend$/ do |email| |
12 | - Given "I go to the Control panel" | |
13 | 12 | click_link('Manage friends') |
14 | 13 | click_link('Invite people from my e-mail contacts') |
15 | 14 | click_button('Next') |
... | ... | @@ -17,9 +16,3 @@ Given /^I invite email "(.+)" to be my friend$/ do |email| |
17 | 16 | fill_in('mail_template', :with => 'Follow this link <url>') |
18 | 17 | click_button("Invite my friends!") |
19 | 18 | end |
20 | - | |
21 | -Given /^there are no pending jobs$/ do | |
22 | - silence_stream(STDOUT) do | |
23 | - Delayed::Worker.new.work_off | |
24 | - end | |
25 | -end | ... | ... |
features/step_definitions/noosfero_steps.rb
1 | -def selenium_driver? | |
2 | - self.class.to_s == 'Webrat::SeleniumSession' | |
3 | -end | |
4 | - | |
5 | 1 | Given /^the following users?$/ do |table| |
6 | 2 | # table is a Cucumber::Ast::Table |
7 | 3 | table.hashes.each do |item| |
... | ... | @@ -289,17 +285,25 @@ Given /^the following price details?$/ do |table| |
289 | 285 | end |
290 | 286 | |
291 | 287 | Given /^I am logged in as "(.+)"$/ do |username| |
292 | - visit('/account/logout') | |
293 | - visit('/account/login') | |
294 | - fill_in("Username", :with => username) | |
295 | - fill_in("Password", :with => '123456') | |
296 | - click_button("Log in") | |
297 | - # FIXME selenium do not wait page load sometimes | |
298 | - if selenium_driver? | |
299 | - selenium.wait_for_page | |
300 | - end | |
301 | - Then "I should be logged in as \"#{username}\"" | |
302 | - @current_user = username | |
288 | + Given %{I go to logout page} | |
289 | + And %{I go to login page} | |
290 | + And %{I fill in "Username" with "#{username}"} | |
291 | + And %{I fill in "Password" with "123456"} | |
292 | + When %{I press "Log in"} | |
293 | + # FIXME: | |
294 | + # deveria apenas verificar que esta no myprofile do usuario | |
295 | + # nao conseguir fazer funcionar sem essa reduntancia no capybara | |
296 | + # acho que e algum problema com o http_referer | |
297 | + # olhar account_controller#store_location | |
298 | + And %{I go to #{username}'s control panel} | |
299 | + Then %{I should be on #{username}'s control panel} | |
300 | +end | |
301 | + | |
302 | +Given /^"([^"]*)" is environment admin$/ do |person| | |
303 | + user = Profile.find_by_name(person) | |
304 | + e = Environment.default | |
305 | + | |
306 | + e.add_admin(user) | |
303 | 307 | end |
304 | 308 | |
305 | 309 | Given /^I am logged in as admin$/ do |
... | ... | @@ -312,10 +316,6 @@ Given /^I am logged in as admin$/ do |
312 | 316 | fill_in("Username", :with => user.login) |
313 | 317 | fill_in("Password", :with => '123456') |
314 | 318 | click_button("Log in") |
315 | - # FIXME selenium do not wait page load sometimes | |
316 | - if selenium_driver? | |
317 | - selenium.wait_for_page | |
318 | - end | |
319 | 319 | end |
320 | 320 | |
321 | 321 | Given /^I am not logged in$/ do |
... | ... | @@ -421,12 +421,16 @@ Given /^enterprise "([^\"]*)" is disabled$/ do |enterprise_name| |
421 | 421 | enterprise.save |
422 | 422 | end |
423 | 423 | |
424 | -Then /^The page title should contain "(.*)"$/ do |text| | |
425 | - if response.class.to_s == 'Webrat::SeleniumResponse' | |
426 | - response.selenium.text('css=title').should include(text) | |
427 | - else | |
428 | - response.should have_selector("title:contains('#{text}')") | |
429 | - end | |
424 | +Then /^the page title should be "(.*)"$/ do |text| | |
425 | + Then %{I should see "#{text}" within "title"} | |
426 | +end | |
427 | + | |
428 | +Then /^The page should contain "(.*)"$/ do |selector| | |
429 | + page.should have_css("#{selector}") | |
430 | +end | |
431 | + | |
432 | +Then /^The page should not contain "(.*)"$/ do |selector| | |
433 | + page.should have_no_css("#{selector}") | |
430 | 434 | end |
431 | 435 | |
432 | 436 | Given /^the mailbox is empty$/ do |
... | ... | @@ -458,12 +462,14 @@ Given /^the following environment configuration$/ do |table| |
458 | 462 | env.save |
459 | 463 | end |
460 | 464 | |
461 | -Then /^I should be logged in as "(.+)"$/ do |login| | |
462 | - User.find(session[:user]).login.should == login | |
465 | +Then /^I should be logged in as "(.+)"$/ do |username| | |
466 | + When %{I go to #{username}'s control panel} | |
467 | + Then %{I should be on #{username}'s control panel} | |
463 | 468 | end |
464 | 469 | |
465 | -Then /^I should not be logged in$/ do | |
466 | - session[:user].nil? | |
470 | +Then /^I should not be logged in as "(.+)"$/ do |username| | |
471 | + When %{I go to #{username}'s control panel} | |
472 | + Then %{I should be on login page} | |
467 | 473 | end |
468 | 474 | |
469 | 475 | Given /^the profile "(.+)" has no blocks$/ do |profile| |
... | ... | @@ -586,11 +592,6 @@ Then /^I should be taken to "([^\"]*)" product page$/ do |product_name| |
586 | 592 | end |
587 | 593 | end |
588 | 594 | |
589 | -When /^I reload and wait for the page$/ do | |
590 | - response.selenium.refresh | |
591 | - selenium.wait_for_page | |
592 | -end | |
593 | - | |
594 | 595 | Given /^the following enterprise homepages?$/ do |table| |
595 | 596 | # table is a Cucumber::Ast::Table |
596 | 597 | table.hashes.each do |item| |
... | ... | @@ -602,7 +603,9 @@ Given /^the following enterprise homepages?$/ do |table| |
602 | 603 | end |
603 | 604 | |
604 | 605 | And /^I want to add "([^\"]*)" as cost$/ do |string| |
605 | - selenium.answer_on_next_prompt(string) | |
606 | + prompt = page.driver.browser.switch_to.alert | |
607 | + prompt.send_keys(string) | |
608 | + prompt.accept | |
606 | 609 | end |
607 | 610 | |
608 | 611 | Given /^([^\s]+) (enabled|disabled) translation redirection in (?:his|her) profile$/ do |
... | ... | @@ -658,44 +661,42 @@ end |
658 | 661 | |
659 | 662 | When /^I search ([^\"]*) for "([^\"]*)"$/ do |asset, query| |
660 | 663 | When %{I go to the search #{asset} page} |
661 | - And %{I fill in "query" with "#{query}"} | |
664 | + And %{I fill in "search-input" with "#{query}"} | |
662 | 665 | And %{I press "Search"} |
663 | 666 | end |
664 | 667 | |
665 | 668 | Then /^I should see ([^\"]*)'s product image$/ do |product_name| |
666 | 669 | p = Product.find_by_name product_name |
667 | - path = url_for(p.enterprise.public_profile_url.merge(:controller => 'manage_products', :action => 'show', :id => p, :only_path => true)) | |
668 | - response.should have_selector("div[class~=\"zoomable-image\"] a[href=\"http://#{path}\"]") | |
670 | + path = url_for(p.enterprise.public_profile_url.merge(:controller => 'manage_products', :action => 'show', :id => p)) | |
671 | + | |
672 | + with_scope('.zoomable-image') do | |
673 | + page.should have_xpath("a[@href=\"#{path}\"][@class='search-image-pic']") | |
674 | + end | |
669 | 675 | end |
670 | 676 | |
671 | 677 | Then /^I should not see ([^\"]*)'s product image$/ do |product_name| |
672 | 678 | p = Product.find_by_name product_name |
673 | - path = url_for(p.enterprise.public_profile_url.merge(:controller => 'manage_products', :action => 'show', :id => p, :only_path => true)) | |
674 | - response.should_not have_selector("div[class~=\"zoomable-image\"] a[href=\"http://#{path}\"]") | |
679 | + path = url_for(p.enterprise.public_profile_url.merge(:controller => 'manage_products', :action => 'show', :id => p)) | |
680 | + | |
681 | + with_scope('.zoomable-image') do | |
682 | + page.should have_no_xpath("a[@href=\"#{path}\"][@class='search-image-pic']") | |
683 | + end | |
675 | 684 | end |
676 | 685 | |
677 | 686 | Then /^I should see ([^\"]*)'s profile image$/ do |name| |
678 | - response.should have_selector("img[alt=\"#{name}\"]") | |
687 | + page.should have_xpath("//img[@alt=\"#{name}\"]") | |
679 | 688 | end |
680 | 689 | |
681 | 690 | Then /^I should not see ([^\"]*)'s profile image$/ do |name| |
682 | - response.should_not have_selector("img[alt=\"#{name}\"]") | |
683 | -end | |
684 | - | |
685 | -Then /^I should see ([^\"]*)'s content image$/ do |name| | |
686 | - response.should have_selector("img[alt=\"#{name}\"]") | |
687 | -end | |
688 | - | |
689 | -Then /^I should not see ([^\"]*)'s content image$/ do |name| | |
690 | - response.should_not have_selector("img[alt=\"#{name}\"]") | |
691 | + page.should have_no_xpath("//img[@alt=\"#{name}\"]") | |
691 | 692 | end |
692 | 693 | |
693 | 694 | Then /^I should see ([^\"]*)'s community image$/ do |name| |
694 | - response.should have_selector("img[alt=\"#{name}\"]") | |
695 | + page.should have_xpath("//img[@alt=\"#{name}\"]") | |
695 | 696 | end |
696 | 697 | |
697 | 698 | Then /^I should not see ([^\"]*)'s community image$/ do |name| |
698 | - response.should_not have_selector("img[alt=\"#{name}\"]") | |
699 | + page.should have_no_xpath("//img[@alt=\"#{name}\"]") | |
699 | 700 | end |
700 | 701 | |
701 | 702 | Given /^the article "([^\"]*)" is updated by "([^\"]*)"$/ do |article, person| |
... | ... | @@ -754,3 +755,9 @@ When /^wait for the captcha signup time$/ do |
754 | 755 | environment = Environment.default |
755 | 756 | sleep environment.min_signup_delay + 1 |
756 | 757 | end |
758 | + | |
759 | +Given /^there are no pending jobs$/ do | |
760 | + silence_stream(STDOUT) do | |
761 | + Delayed::Worker.new.work_off | |
762 | + end | |
763 | +end | ... | ... |
features/step_definitions/selenium_steps.rb
... | ... | @@ -1,133 +0,0 @@ |
1 | -require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths")) | |
2 | - | |
3 | -def string_to_element_locator(selector) | |
4 | - if selector.gsub!(/^\./, '') | |
5 | - "css=[class='#{selector}']" | |
6 | - elsif selector.gsub!(/^value[.=]/, '') | |
7 | - "xpath=//input[@value='#{selector}']" | |
8 | - elsif selector.gsub!(/^option=/, '') | |
9 | - "xpath=//option[@value='#{selector}']" | |
10 | - elsif selector.gsub!(/^#/, '') | |
11 | - "css=[id='#{selector}']" | |
12 | - elsif selector.gsub!(/^content=/, '') | |
13 | - "xpath=//*[.='#{selector}']" | |
14 | - elsif selector.gsub!(/^li=/, '') | |
15 | - "xpath=//li[contains(.,'#{selector}')]" | |
16 | - else | |
17 | - selector | |
18 | - end | |
19 | -end | |
20 | - | |
21 | -Then /^the "([^\"]*)" should be visible$/ do |selector| | |
22 | - (selenium.is_element_present(string_to_element_locator(selector)) && selenium.is_visible(string_to_element_locator(selector))).should be_true | |
23 | -end | |
24 | -Then /^the content "([^\"]*)" should be visible$/ do |selector| | |
25 | - selenium.is_visible(string_to_element_locator("content=#{selector}")).should be_true | |
26 | -end | |
27 | - | |
28 | -Then /^the "([^\"]*)" should not be visible$/ do |selector| | |
29 | - (selenium.is_element_present(string_to_element_locator(selector)) && selenium.is_visible(string_to_element_locator(selector))).should be_false | |
30 | -end | |
31 | -Then /^the content "([^\"]*)" should not be visible$/ do |selector| | |
32 | - selenium.is_visible(string_to_element_locator("content=#{selector}")).should be_false | |
33 | -end | |
34 | - | |
35 | -When /^I click "([^\"]*)"$/ do |selector| | |
36 | - selenium.click(string_to_element_locator(selector)) | |
37 | -end | |
38 | - | |
39 | -Then /^the "([^\"]*)" button should not be enabled$/ do |text| | |
40 | - selenium.is_editable(string_to_element_locator(text)).should be_false | |
41 | -end | |
42 | - | |
43 | -Then /^the "([^\"]*)" button should be enabled$/ do |text| | |
44 | - selenium.is_editable(string_to_element_locator("value.#{text}")).should be_true | |
45 | -end | |
46 | - | |
47 | -Then /^I should see "([^\"]*)" above of "([^\"]*)"$/ do |above, below| | |
48 | - above_position = selenium.get_element_position_top(string_to_element_locator("li=#{above}")) | |
49 | - below_position = selenium.get_element_position_top(string_to_element_locator("li=#{below}")) | |
50 | - above_position.to_i.should < below_position.to_i | |
51 | -end | |
52 | - | |
53 | -When /^I drag "([^\"]*)" to "([^\"]*)"$/ do |from, to| | |
54 | - selenium.drag_and_drop_to_object(string_to_element_locator("li=#{from}"), string_to_element_locator("li=#{to}")) | |
55 | - selenium.wait_for_ajax | |
56 | -end | |
57 | - | |
58 | -When /^I select "([^\"]*)" and wait for (jquery)$/ do |value, framework| | |
59 | - select(value) | |
60 | - # FIXME ugly hack to make selenium tests waiting to render page | |
61 | - # "select(value, :wait_for => :ajax)" did not effect | |
62 | - selenium.wait_for(:wait_for => :ajax, :javascript_framework => framework) | |
63 | -end | |
64 | - | |
65 | -When /^I select window "([^\"]*)"$/ do |selector| | |
66 | - selenium.select_window(selector) | |
67 | -end | |
68 | - | |
69 | -When /^I fill in "([^\"]*)" within "([^\"]*)" with "([^\"]*)"$/ do |field_label, parent_class, value| | |
70 | - selenium.type("xpath=//*[contains(@class, '#{parent_class}')]//*[@id=//label[contains(., '#{field_label}')]/@for]", value) | |
71 | -end | |
72 | - | |
73 | -When /^I press "([^\"]*)" within "([^\"]*)"$/ do |button_value, selector| | |
74 | - selenium.click("css=#{selector} input[value=#{button_value}]") | |
75 | - selenium.wait_for_page_to_load(10000) | |
76 | -end | |
77 | - | |
78 | -Then /^there should be ([1-9][0-9]*) "([^\"]*)" within "([^\"]*)"$/ do |number, child_class, parent_class| | |
79 | - # Using xpath is the only way to count | |
80 | - response.selenium.get_xpath_count("//*[contains(@class,'#{parent_class}')]//*[contains(@class,'#{child_class}')]").to_i.should be(number.to_i) | |
81 | -end | |
82 | - | |
83 | -Then /^"([^\"]*)" should be (left|right) aligned$/ do |element_class, align| | |
84 | - # Using xpath is the only way to count | |
85 | - response.selenium.get_xpath_count("//*[contains(@class,'#{element_class}') and contains(@style,'float: #{align}')]").to_i.should be(1) | |
86 | -end | |
87 | - | |
88 | -When /^I confirm$/ do | |
89 | - selenium.get_confirmation | |
90 | -end | |
91 | - | |
92 | -When /^I type "([^\"]*)" in TinyMCE field "([^\"]*)"$/ do |value, field_id| | |
93 | - response.selenium.type("dom=document.getElementById('#{field_id}_ifr').contentDocument.body", value) | |
94 | -end | |
95 | - | |
96 | -When /^I refresh the page$/ do | |
97 | - response.selenium.refresh | |
98 | -end | |
99 | - | |
100 | -When /^I click on the logo$/ do | |
101 | - selenium.click("css=h1#site-title a") | |
102 | - selenium.wait_for_page_to_load(10000) | |
103 | -end | |
104 | - | |
105 | -When /^I open (.*)$/ do |url| | |
106 | - selenium.open(URI.join(response.selenium.get_location, url)) | |
107 | -end | |
108 | - | |
109 | -Then /^the page title should be "([^"]+)"$/ do |text| | |
110 | - selenium.get_text("//title").should == text | |
111 | -end | |
112 | - | |
113 | -#### Noosfero specific steps #### | |
114 | - | |
115 | -Then /^the select for category "([^\"]*)" should be visible$/ do |name| | |
116 | - sleep 2 # FIXME horrible hack to wait categories selection scolling to right | |
117 | - category = Category.find_by_name(name) | |
118 | - selenium.is_visible(string_to_element_locator("option=#{category.id}")).should be_true | |
119 | -end | |
120 | - | |
121 | -When /^I follow "([^\"]*)" and sleep ([^\"]*) seconds?$/ do |link, time| | |
122 | - click_link(link) | |
123 | - sleep time.to_i | |
124 | -end | |
125 | - | |
126 | -When /^I follow "([^\"]*)" and wait for jquery$/ do |link| | |
127 | - click_link(link) | |
128 | - selenium.wait_for(:wait_for => :ajax, :javascript_framework => framework) | |
129 | -end | |
130 | - | |
131 | -When /^I leave the "([^\"]+)" field$/ do |field| | |
132 | - selenium.fire_event("css=#{field}", "blur") | |
133 | -end |
... | ... | @@ -0,0 +1,219 @@ |
1 | +# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril. | |
2 | +# It is recommended to regenerate this file in the future when you upgrade to a | |
3 | +# newer version of cucumber-rails. Consider adding your own code to a new file | |
4 | +# instead of editing this one. Cucumber will automatically load all features/**/*.rb | |
5 | +# files. | |
6 | + | |
7 | + | |
8 | +require 'uri' | |
9 | +require 'cgi' | |
10 | +require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths")) | |
11 | + | |
12 | +module WithinHelpers | |
13 | + def with_scope(locator) | |
14 | + locator ? within(locator) { yield } : yield | |
15 | + end | |
16 | +end | |
17 | +World(WithinHelpers) | |
18 | + | |
19 | +Given /^(?:|I )am on (.+)$/ do |page_name| | |
20 | + visit path_to(page_name) | |
21 | +end | |
22 | + | |
23 | +When /^(?:|I )go to (.+)$/ do |page_name| | |
24 | + visit path_to(page_name) | |
25 | +end | |
26 | + | |
27 | +When /^(?:|I )press "([^"]*)"(?: within "([^"]*)")?$/ do |button, selector| | |
28 | + with_scope(selector) do | |
29 | + click_button(button) | |
30 | + end | |
31 | +end | |
32 | + | |
33 | +When /^(?:|I )follow "([^"]*)"(?: within "([^"]*)")?$/ do |link, selector| | |
34 | + with_scope(selector) do | |
35 | + click_link(link) | |
36 | + end | |
37 | +end | |
38 | + | |
39 | +When /^(?:|I )fill in "([^"]*)" with "([^"]*)"(?: within "([^"]*)")?$/ do |field, value, selector| | |
40 | + with_scope(selector) do | |
41 | + fill_in(field, :with => value) | |
42 | + end | |
43 | +end | |
44 | + | |
45 | +When /^(?:|I )fill in "([^"]*)" for "([^"]*)"(?: within "([^"]*)")?$/ do |value, field, selector| | |
46 | + with_scope(selector) do | |
47 | + fill_in(field, :with => value) | |
48 | + end | |
49 | +end | |
50 | + | |
51 | +# Use this to fill in an entire form with data from a table. Example: | |
52 | +# | |
53 | +# When I fill in the following: | |
54 | +# | Account Number | 5002 | | |
55 | +# | Expiry date | 2009-11-01 | | |
56 | +# | Note | Nice guy | | |
57 | +# | Wants Email? | | | |
58 | +# | |
59 | +# TODO: Add support for checkbox, select og option | |
60 | +# based on naming conventions. | |
61 | +# | |
62 | +When /^(?:|I )fill in the following(?: within "([^"]*)")?:$/ do |selector, fields| | |
63 | + with_scope(selector) do | |
64 | + fields.rows_hash.each do |name, value| | |
65 | + When %{I fill in "#{name}" with "#{value}"} | |
66 | + end | |
67 | + end | |
68 | +end | |
69 | + | |
70 | +When /^(?:|I )select "([^"]*)" from "([^"]*)"(?: within "([^"]*)")?$/ do |value, field, selector| | |
71 | + with_scope(selector) do | |
72 | + select(value, :from => field) | |
73 | + end | |
74 | +end | |
75 | + | |
76 | +When /^(?:|I )check "([^"]*)"(?: within "([^"]*)")?$/ do |field, selector| | |
77 | + with_scope(selector) do | |
78 | + check(field) | |
79 | + end | |
80 | +end | |
81 | + | |
82 | +When /^(?:|I )uncheck "([^"]*)"(?: within "([^"]*)")?$/ do |field, selector| | |
83 | + with_scope(selector) do | |
84 | + uncheck(field) | |
85 | + end | |
86 | +end | |
87 | + | |
88 | +When /^(?:|I )choose "([^"]*)"(?: within "([^"]*)")?$/ do |field, selector| | |
89 | + with_scope(selector) do | |
90 | + choose(field) | |
91 | + end | |
92 | +end | |
93 | + | |
94 | +When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"(?: within "([^"]*)")?$/ do |path, field, selector| | |
95 | + with_scope(selector) do | |
96 | + attach_file(field, path) | |
97 | + end | |
98 | +end | |
99 | + | |
100 | +Then /^(?:|I )should see JSON:$/ do |expected_json| | |
101 | + require 'json' | |
102 | + expected = JSON.pretty_generate(JSON.parse(expected_json)) | |
103 | + actual = JSON.pretty_generate(JSON.parse(response.body)) | |
104 | + expected.should == actual | |
105 | +end | |
106 | + | |
107 | +Then /^(?:|I )should see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector| | |
108 | + with_scope(selector) do | |
109 | + if page.respond_to? :should | |
110 | + page.should have_content(text) | |
111 | + else | |
112 | + assert page.has_content?(text) | |
113 | + end | |
114 | + end | |
115 | +end | |
116 | + | |
117 | +Then /^(?:|I )should see \/([^\/]*)\/(?: within "([^"]*)")?$/ do |regexp, selector| | |
118 | + regexp = Regexp.new(regexp) | |
119 | + with_scope(selector) do | |
120 | + if page.respond_to? :should | |
121 | + page.should have_xpath('//*', :text => regexp) | |
122 | + else | |
123 | + assert page.has_xpath?('//*', :text => regexp) | |
124 | + end | |
125 | + end | |
126 | +end | |
127 | + | |
128 | +Then /^(?:|I )should not see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector| | |
129 | + with_scope(selector) do | |
130 | + if page.respond_to? :should | |
131 | + page.should have_no_content(text) | |
132 | + else | |
133 | + assert page.has_no_content?(text) | |
134 | + end | |
135 | + end | |
136 | +end | |
137 | + | |
138 | +Then /^(?:|I )should not see \/([^\/]*)\/(?: within "([^"]*)")?$/ do |regexp, selector| | |
139 | + regexp = Regexp.new(regexp) | |
140 | + with_scope(selector) do | |
141 | + if page.respond_to? :should | |
142 | + page.should have_no_xpath('//*', :text => regexp) | |
143 | + else | |
144 | + assert page.has_no_xpath?('//*', :text => regexp) | |
145 | + end | |
146 | + end | |
147 | +end | |
148 | + | |
149 | +Then /^the "([^"]*)" field(?: within "([^"]*)")? should contain "([^"]*)"$/ do |field, selector, value| | |
150 | + with_scope(selector) do | |
151 | + field = find_field(field) | |
152 | + field_value = (field.tag_name == 'textarea') ? field.text : field.value | |
153 | + if field_value.respond_to? :should | |
154 | + field_value.should =~ /#{value}/ | |
155 | + else | |
156 | + assert_match(/#{value}/, field_value) | |
157 | + end | |
158 | + end | |
159 | +end | |
160 | + | |
161 | +Then /^the "([^"]*)" field(?: within "([^"]*)")? should not contain "([^"]*)"$/ do |field, selector, value| | |
162 | + with_scope(selector) do | |
163 | + field = find_field(field) | |
164 | + field_value = (field.tag_name == 'textarea') ? field.text : field.value | |
165 | + if field_value.respond_to? :should_not | |
166 | + field_value.should_not =~ /#{value}/ | |
167 | + else | |
168 | + assert_no_match(/#{value}/, field_value) | |
169 | + end | |
170 | + end | |
171 | +end | |
172 | + | |
173 | +Then /^the "([^"]*)" checkbox(?: within "([^"]*)")? should be checked$/ do |label, selector| | |
174 | + with_scope(selector) do | |
175 | + field_checked = find_field(label)['checked'] | |
176 | + if field_checked.respond_to? :should | |
177 | + field_checked.should be_true | |
178 | + else | |
179 | + assert field_checked | |
180 | + end | |
181 | + end | |
182 | +end | |
183 | + | |
184 | +Then /^the "([^"]*)" checkbox(?: within "([^"]*)")? should not be checked$/ do |label, selector| | |
185 | + with_scope(selector) do | |
186 | + field_checked = find_field(label)['checked'] | |
187 | + if field_checked.respond_to? :should | |
188 | + field_checked.should be_false | |
189 | + else | |
190 | + assert !field_checked | |
191 | + end | |
192 | + end | |
193 | +end | |
194 | + | |
195 | +Then /^(?:|I )should be on (.+)$/ do |page_name| | |
196 | + current_path = URI.parse(current_url).path | |
197 | + if current_path.respond_to? :should | |
198 | + current_path.should == path_to(page_name) | |
199 | + else | |
200 | + assert_equal path_to(page_name), current_path | |
201 | + end | |
202 | +end | |
203 | + | |
204 | +Then /^(?:|I )should have the following query string:$/ do |expected_pairs| | |
205 | + query = URI.parse(current_url).query | |
206 | + actual_params = query ? CGI.parse(query) : {} | |
207 | + expected_params = {} | |
208 | + expected_pairs.rows_hash.each_pair{|k,v| expected_params[k] = v.split(',')} | |
209 | + | |
210 | + if actual_params.respond_to? :should | |
211 | + actual_params.should == expected_params | |
212 | + else | |
213 | + assert_equal expected_params, actual_params | |
214 | + end | |
215 | +end | |
216 | + | |
217 | +Then /^show me the page$/ do | |
218 | + save_and_open_page | |
219 | +end | ... | ... |
features/step_definitions/webrat_steps.rb
... | ... | @@ -1,239 +0,0 @@ |
1 | -# IMPORTANT: This file was generated by Cucumber 0.4.0 | |
2 | -# Edit at your own peril - it's recommended to regenerate this file | |
3 | -# in the future when you upgrade to a newer version of Cucumber. | |
4 | -# Consider adding your own code to a new file instead of editing this one. | |
5 | - | |
6 | -require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths")) | |
7 | - | |
8 | -# Commonly used webrat steps | |
9 | -# http://github.com/brynary/webrat | |
10 | - | |
11 | -Given /^I am on (.+)$/ do |page_name| | |
12 | - visit path_to(page_name) | |
13 | -end | |
14 | - | |
15 | -When /^I go to (.+)$/ do |page_name| | |
16 | - visit path_to(page_name) | |
17 | -end | |
18 | - | |
19 | -When /^I visit "([^\"]*)" and wait$/ do |page_name| | |
20 | - visit path_to(page_name) | |
21 | - selenium.wait_for_page_to_load(10000) | |
22 | -# selenium.wait_for_page | |
23 | -end | |
24 | - | |
25 | -When /^I press "([^\"]*)"$/ do |button| | |
26 | - click_button(button) | |
27 | -end | |
28 | - | |
29 | -When /^I press "([^\"]*)" and wait$/ do |button| | |
30 | - click_button(button) | |
31 | - selenium.wait_for_page_to_load(10000) | |
32 | -end | |
33 | - | |
34 | -When /^I follow "([^\"]*)"$/ do |link| | |
35 | - click_link(link) | |
36 | -end | |
37 | - | |
38 | -When /^I follow "([^\"]*)" and wait$/ do |link| | |
39 | - click_link(link) | |
40 | - selenium.wait_for_page_to_load(10000) | |
41 | -end | |
42 | - | |
43 | -When /^I follow "([^\"]*)" and wait until "([^\"]*)" is present$/ do |link, element| | |
44 | - click_link(link) | |
45 | - selenium.wait_for_element(string_to_element_locator(element)) | |
46 | -end | |
47 | - | |
48 | -When /^I follow "([^\"]*)" within "([^\"]*)"$/ do |link, parent| | |
49 | - click_link_within(parent, link) | |
50 | -end | |
51 | - | |
52 | -When /^I follow "([^\"]*)" within "([^\"]*)" and wait$/ do |link, parent| | |
53 | - click_link_within(parent, link) | |
54 | - selenium.wait_for_page_to_load(10000) | |
55 | -end | |
56 | - | |
57 | -When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value| | |
58 | - if response.class.to_s == 'Webrat::SeleniumResponse' | |
59 | - response.selenium.type("//*[@id=//label[contains(., '#{field}')]/@for]", value) | |
60 | - else | |
61 | - fill_in(field, :with => value) | |
62 | - end | |
63 | -end | |
64 | - | |
65 | -When /^I fill in "([^\"]*)" for "([^\"]*)"$/ do |value, field| | |
66 | - fill_in(field, :with => value) | |
67 | -end | |
68 | - | |
69 | -# Use this to fill in an entire form with data from a table. Example: | |
70 | -# | |
71 | -# When I fill in the following: | |
72 | -# | Account Number | 5002 | | |
73 | -# | Expiry date | 2009-11-01 | | |
74 | -# | Note | Nice guy | | |
75 | -# | Wants Email? | | | |
76 | -# | |
77 | -# TODO: Add support for checkbox, select og option | |
78 | -# based on naming conventions. | |
79 | -# | |
80 | -When /^I fill in the following:$/ do |fields| | |
81 | - fields.rows_hash.each do |name, value| | |
82 | - When %{I fill in "#{name}" with "#{value}"} | |
83 | - end | |
84 | -end | |
85 | - | |
86 | -When /^I select "([^\"]*)" from "([^\"]*)"$/ do |value, field| | |
87 | - if response.class.to_s == 'Webrat::SeleniumResponse' | |
88 | - response.selenium.select("//*[@id=//label[contains(., '#{field}')]/@for]", value) | |
89 | - else | |
90 | - select(value, :from => field) | |
91 | - end | |
92 | -end | |
93 | - | |
94 | -# Use this step in conjunction with Rail's datetime_select helper. For example: | |
95 | -# When I select "December 25, 2008 10:00" as the date and time | |
96 | -When /^I select "([^\"]*)" as the date and time$/ do |time| | |
97 | - select_datetime(time) | |
98 | -end | |
99 | - | |
100 | -# Use this step when using multiple datetime_select helpers on a page or | |
101 | -# you want to specify which datetime to select. Given the following view: | |
102 | -# <%= f.label :preferred %><br /> | |
103 | -# <%= f.datetime_select :preferred %> | |
104 | -# <%= f.label :alternative %><br /> | |
105 | -# <%= f.datetime_select :alternative %> | |
106 | -# The following steps would fill out the form: | |
107 | -# When I select "November 23, 2004 11:20" as the "Preferred" date and time | |
108 | -# And I select "November 25, 2004 10:30" as the "Alternative" date and time | |
109 | -When /^I select "([^\"]*)" as the "([^\"]*)" date and time$/ do |datetime, datetime_label| | |
110 | - select_datetime(datetime, :from => datetime_label) | |
111 | -end | |
112 | - | |
113 | -# Use this step in conjunction with Rail's time_select helper. For example: | |
114 | -# When I select "2:20PM" as the time | |
115 | -# Note: Rail's default time helper provides 24-hour time-- not 12 hour time. Webrat | |
116 | -# will convert the 2:20PM to 14:20 and then select it. | |
117 | -When /^I select "([^\"]*)" as the time$/ do |time| | |
118 | - select_time(time) | |
119 | -end | |
120 | - | |
121 | -# Use this step when using multiple time_select helpers on a page or you want to | |
122 | -# specify the name of the time on the form. For example: | |
123 | -# When I select "7:30AM" as the "Gym" time | |
124 | -When /^I select "([^\"]*)" as the "([^\"]*)" time$/ do |time, time_label| | |
125 | - select_time(time, :from => time_label) | |
126 | -end | |
127 | - | |
128 | -# Use this step in conjunction with Rail's date_select helper. For example: | |
129 | -# When I select "February 20, 1981" as the date | |
130 | -When /^I select "([^\"]*)" as the date$/ do |date| | |
131 | - select_date(date) | |
132 | -end | |
133 | - | |
134 | -# Use this step when using multiple date_select helpers on one page or | |
135 | -# you want to specify the name of the date on the form. For example: | |
136 | -# When I select "April 26, 1982" as the "Date of Birth" date | |
137 | -When /^I select "([^\"]*)" as the "([^\"]*)" date$/ do |date, date_label| | |
138 | - select_date(date, :from => date_label) | |
139 | -end | |
140 | - | |
141 | -When /^I check "([^\"]*)"$/ do |field| | |
142 | - check(field) | |
143 | -end | |
144 | - | |
145 | -When /^I uncheck "([^\"]*)"$/ do |field| | |
146 | - uncheck(field) | |
147 | -end | |
148 | - | |
149 | -When /^I choose "([^\"]*)"$/ do |field| | |
150 | - choose(field) | |
151 | -end | |
152 | - | |
153 | -When /^I attach the file at "([^\"]*)" to "([^\"]*)"$/ do |path, field| | |
154 | - attach_file(field, path) | |
155 | -end | |
156 | - | |
157 | -Then /^I should see "([^\"]*)"$/ do |text| | |
158 | - response.should contain(text) | |
159 | -end | |
160 | - | |
161 | -Then /^I should see "([^\"]*)" within "([^\"]*)"$/ do |text, selector| | |
162 | - if response.class.to_s == 'Webrat::SeleniumResponse' | |
163 | - response.selenium.text('css=' + selector).should include(text) | |
164 | - else | |
165 | - within(selector) do |content| | |
166 | - content.should contain(text) | |
167 | - end | |
168 | - end | |
169 | -end | |
170 | - | |
171 | -Then /^I should see \/([^\/]*)\/$/ do |regexp| | |
172 | - regexp = Regexp.new(regexp) | |
173 | - response.should contain(regexp) | |
174 | -end | |
175 | - | |
176 | -Then /^I should see \/([^\/]*)\/ within "([^\"]*)"$/ do |regexp, selector| | |
177 | - within(selector) do |content| | |
178 | - regexp = Regexp.new(regexp) | |
179 | - content.should contain(regexp) | |
180 | - end | |
181 | -end | |
182 | - | |
183 | -Then /^I should not see "([^\"]*)"$/ do |text| | |
184 | - response.should_not contain(text) | |
185 | -end | |
186 | - | |
187 | -Then /^I should not see "([^\"]*)" within "([^\"]*)"$/ do |text, selector| | |
188 | - if response.class.to_s == 'Webrat::SeleniumResponse' | |
189 | - response.selenium.text('css=' + selector).should_not include(text) | |
190 | - else | |
191 | - within(selector) do |content| | |
192 | - content.should_not contain(text) | |
193 | - end | |
194 | - end | |
195 | -end | |
196 | - | |
197 | -Then /^I should not see \/([^\/]*)\/$/ do |regexp| | |
198 | - regexp = Regexp.new(regexp) | |
199 | - response.should_not contain(regexp) | |
200 | -end | |
201 | - | |
202 | -Then /^I should not see \/([^\/]*)\/ within "([^\"]*)"$/ do |regexp, selector| | |
203 | - within(selector) do |content| | |
204 | - regexp = Regexp.new(regexp) | |
205 | - content.should_not contain(regexp) | |
206 | - end | |
207 | -end | |
208 | - | |
209 | -Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value| | |
210 | - if response.class.to_s == 'Webrat::SeleniumResponse' | |
211 | - response.selenium.get_value("//*[@id=//label[contains(., '#{field}')]/@for]").should match(value) | |
212 | - else | |
213 | - field_labeled(field).value.should =~ /#{value}/ | |
214 | - end | |
215 | -end | |
216 | - | |
217 | -Then /^the "([^\"]*)" field should not contain "([^\"]*)"$/ do |field, value| | |
218 | - field_labeled(field).value.should_not =~ /#{value}/ | |
219 | -end | |
220 | - | |
221 | -Then /^the "([^\"]*)" checkbox should be checked$/ do |label| | |
222 | - field_labeled(label).should be_checked | |
223 | -end | |
224 | - | |
225 | -Then /^the "([^\"]*)" checkbox should not be checked$/ do |label| | |
226 | - field_labeled(label).should_not be_checked | |
227 | -end | |
228 | - | |
229 | -Then /^I should be on (.+)$/ do |page_name| | |
230 | - if response.class.to_s == 'Webrat::SeleniumResponse' | |
231 | - URI.parse(response.selenium.get_location).path.should == path_to(page_name) | |
232 | - else | |
233 | - URI.parse(current_url).path.should == path_to(page_name) | |
234 | - end | |
235 | -end | |
236 | - | |
237 | -Then /^show me the page$/ do | |
238 | - save_and_open_page | |
239 | -end |
features/suggest_article.feature
... | ... | @@ -17,15 +17,15 @@ Feature: suggest article |
17 | 17 | | target | article_name | article_body | name | email | |
18 | 18 | | sample-community | A suggested article | this is an article about whales | jose | jose@example.org | |
19 | 19 | When I am logged in as "joaosilva" |
20 | - And I go to Sample Community's control panel | |
20 | + And I go to sample-community's control panel | |
21 | 21 | And I follow "Process requests" |
22 | 22 | And I should see "suggested the publication of the article" |
23 | 23 | Then I should see "Highlight this article" within ".task_box" |
24 | 24 | |
25 | - @selenium | |
25 | + @selenium-fixme | |
26 | 26 | Scenario: an article is suggested and the admin approve it |
27 | 27 | Given I am on Sample Community's blog |
28 | - And I follow "Suggest an article" and wait | |
28 | + And I follow "Suggest an article" | |
29 | 29 | And I fill in "Title" with "Suggestion" |
30 | 30 | And I fill in "Your name" with "Some Guy" |
31 | 31 | And I fill in "Email" with "someguy@somewhere.com" | ... | ... |
features/support/env.rb
1 | -# IMPORTANT: This file was generated by Cucumber 0.4.0 | |
2 | -# Edit at your own peril - it's recommended to regenerate this file | |
3 | -# in the future when you upgrade to a newer version of Cucumber. | |
4 | -# Consider adding your own code to a new file instead of editing this one. | |
1 | +# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril. | |
2 | +# It is recommended to regenerate this file in the future when you upgrade to a | |
3 | +# newer version of cucumber-rails. Consider adding your own code to a new file | |
4 | +# instead of editing this one. Cucumber will automatically load all features/**/*.rb | |
5 | +# files. | |
5 | 6 | |
6 | -# Sets up the Rails environment for Cucumber | |
7 | 7 | ENV["RAILS_ENV"] ||= "cucumber" |
8 | - | |
9 | -# Start/stop Solr | |
10 | -if not $cucumber_env_loaded | |
11 | - abort unless system 'rake solr:start' | |
12 | - at_exit { system 'rake solr:stop' } | |
13 | - $cucumber_env_loaded = true | |
14 | -end | |
8 | +abort unless system 'rake -s solr:start' | |
9 | +at_exit { system 'rake -s solr:stop' } | |
15 | 10 | |
16 | 11 | require File.expand_path(File.dirname(__FILE__) + '/../../config/environment') |
17 | -require 'cucumber/rails/world' | |
18 | - | |
19 | -# If you set this to true, each scenario will run in a database transaction. | |
20 | -# You can still turn off transactions on a per-scenario basis, simply tagging | |
21 | -# a feature or scenario with the @no-txn tag. | |
22 | -# | |
23 | -# If you set this to false, transactions will be off for all scenarios, | |
24 | -# regardless of whether you use @no-txn or not. | |
25 | -# | |
26 | -# Beware that turning transactions off will leave data in your database | |
27 | -# after each scenario, which can lead to hard-to-debug failures in | |
28 | -# subsequent scenarios. If you do this, we recommend you create a Before | |
29 | -# block that will explicitly put your database in a known state. | |
30 | -Cucumber::Rails::World.use_transactional_fixtures = true | |
31 | 12 | |
32 | -# If you set this to false, any error raised from within your app will bubble | |
13 | +require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support | |
14 | +require 'cucumber/rails/world' | |
15 | +require 'cucumber/rails/active_record' | |
16 | +require 'cucumber/web/tableish' | |
17 | + | |
18 | +require 'capybara/rails' | |
19 | +require 'capybara/cucumber' | |
20 | +require 'capybara/session' | |
21 | +# require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript | |
22 | +# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In | |
23 | +# order to ease the transition to Capybara we set the default here. If you'd | |
24 | +# prefer to use XPath just remove this line and adjust any selectors in your | |
25 | +# steps to use the XPath syntax. | |
26 | +Capybara.default_selector = :css | |
27 | + | |
28 | +# If you set this to false, any error raised from within your app will bubble | |
33 | 29 | # up to your step definition and out to cucumber unless you catch it somewhere |
34 | 30 | # on the way. You can make Rails rescue errors and render error pages on a |
35 | 31 | # per-scenario basis by tagging a scenario or feature with the @allow-rescue tag. |
... | ... | @@ -40,16 +36,25 @@ Cucumber::Rails::World.use_transactional_fixtures = true |
40 | 36 | # of your scenarios, as this makes it hard to discover errors in your application. |
41 | 37 | ActionController::Base.allow_rescue = false |
42 | 38 | |
43 | -require 'cucumber' | |
44 | -# Comment out the next line if you don't want Cucumber Unicode support | |
45 | -require 'cucumber/formatter/unicode' | |
46 | -require 'cucumber/webrat/element_locator' # Lets you do table.diff!(element_at('#my_table_or_dl_or_ul_or_ol').to_table) | |
47 | -require 'cucumber/rails/rspec' | |
48 | - | |
49 | -require 'webrat' | |
50 | -require 'webrat/core/matchers' | |
51 | -Webrat.configure do |config| | |
52 | - config.mode = :rails | |
53 | - config.open_error_files = false # Set to true if you want error pages to pop up in the browser | |
39 | +# If you set this to true, each scenario will run in a database transaction. | |
40 | +# You can still turn off transactions on a per-scenario basis, simply tagging | |
41 | +# a feature or scenario with the @no-txn tag. If you are using Capybara, | |
42 | +# tagging with @culerity or @javascript will also turn transactions off. | |
43 | +# | |
44 | +# If you set this to false, transactions will be off for all scenarios, | |
45 | +# regardless of whether you use @no-txn or not. | |
46 | +# | |
47 | +# Beware that turning transactions off will leave data in your database | |
48 | +# after each scenario, which can lead to hard-to-debug failures in | |
49 | +# subsequent scenarios. If you do this, we recommend you create a Before | |
50 | +# block that will explicitly put your database in a known state. | |
51 | +Cucumber::Rails::World.use_transactional_fixtures = true | |
52 | +# How to clean your database when transactions are turned off. See | |
53 | +# http://github.com/bmabey/database_cleaner for more info. | |
54 | + | |
55 | +Before do | |
56 | + Fixtures.reset_cache | |
57 | + fixtures_folder = File.join(RAILS_ROOT, 'test', 'fixtures') | |
58 | + fixtures = ['environments', 'roles'] | |
59 | + Fixtures.create_fixtures(fixtures_folder, fixtures) | |
54 | 60 | end |
55 | - | ... | ... |
features/support/fixtures.rb
features/support/paths.rb
... | ... | @@ -3,7 +3,7 @@ module NavigationHelpers |
3 | 3 | # |
4 | 4 | # When /^I go to (.+)$/ do |page_name| |
5 | 5 | # |
6 | - # step definition in webrat_steps.rb | |
6 | + # step definition in web_steps.rb | |
7 | 7 | # |
8 | 8 | def path_to(page_name) |
9 | 9 | case page_name |
... | ... | @@ -11,6 +11,12 @@ module NavigationHelpers |
11 | 11 | when /the homepage/ |
12 | 12 | '/' |
13 | 13 | |
14 | + # Add more mappings here. | |
15 | + # Here is an example that pulls values out of the Regexp: | |
16 | + # | |
17 | + # when /^(.*)'s profile page$/i | |
18 | + # user_profile_path(User.find_by_login($1)) | |
19 | + | |
14 | 20 | when /^\// |
15 | 21 | page_name |
16 | 22 | |
... | ... | @@ -31,7 +37,7 @@ module NavigationHelpers |
31 | 37 | "/myprofile/#{$2}/profile_design/edit/#{block.id}" |
32 | 38 | |
33 | 39 | when /^(.*)'s homepage$/ |
34 | - '/%s' % Profile.find_by_name($1).identifier | |
40 | + '/' + $1 | |
35 | 41 | |
36 | 42 | when /^(.*)'s blog$/ |
37 | 43 | '/%s/blog' % Profile.find_by_name($1).identifier |
... | ... | @@ -40,13 +46,10 @@ module NavigationHelpers |
40 | 46 | '/myprofile/%s/cms/new?type=%s' % [Profile.find_by_name($1).identifier,$2] |
41 | 47 | |
42 | 48 | when /^(.*)'s sitemap/ |
43 | - '/profile/%s/sitemap' % Profile.find_by_name($1).identifier | |
49 | + '/profile/%s/sitemap' % $1 | |
44 | 50 | |
45 | 51 | when /^(.*)'s profile$/ |
46 | - '/profile/%s' % Profile.find_by_name($1).identifier | |
47 | - | |
48 | - when /^the profile$/ | |
49 | - '/profile/%s' % User.find_by_id(session[:user]).login | |
52 | + '/profile/' + $1 | |
50 | 53 | |
51 | 54 | when /^(.*)'s join page/ |
52 | 55 | '/profile/%s/join' % Profile.find_by_name($1).identifier |
... | ... | @@ -54,20 +57,17 @@ module NavigationHelpers |
54 | 57 | when /^(.*)'s leave page/ |
55 | 58 | '/profile/%s/leave' % Profile.find_by_name($1).identifier |
56 | 59 | |
57 | - when /^(.*)'s profile editor$/ | |
58 | - "myprofile/manuel/profile_editor/edit" | |
59 | - | |
60 | 60 | when /^login page$/ |
61 | 61 | '/account/login' |
62 | 62 | |
63 | + when /^logout page$/ | |
64 | + '/account/logout' | |
65 | + | |
63 | 66 | when /^signup page$/ |
64 | 67 | '/account/signup' |
65 | 68 | |
66 | 69 | when /^(.*)'s control panel$/ |
67 | - '/myprofile/%s' % Profile.find_by_name($1).identifier | |
68 | - | |
69 | - when /^the Control panel$/ | |
70 | - '/myprofile/%s' % User.find_by_id(session[:user]).login | |
70 | + '/myprofile/' + $1 | |
71 | 71 | |
72 | 72 | when /the environment control panel/ |
73 | 73 | '/admin' |
... | ... | @@ -79,7 +79,7 @@ module NavigationHelpers |
79 | 79 | '/search/%s' % $1 |
80 | 80 | |
81 | 81 | when /^(.+)'s cms/ |
82 | - '/myprofile/%s/cms' % Profile.find_by_name($1).identifier | |
82 | + '/myprofile/%s/cms' % $1 | |
83 | 83 | |
84 | 84 | when /^"(.+)" edit page/ |
85 | 85 | article = Article.find_by_name($1) |
... | ... | @@ -89,7 +89,7 @@ module NavigationHelpers |
89 | 89 | '/myprofile/%s/profile_members' % Profile.find_by_name($1).identifier |
90 | 90 | |
91 | 91 | when /^(.+)'s new product page/ |
92 | - '/myprofile/%s/manage_products/new' % Profile.find_by_name($1).identifier | |
92 | + '/myprofile/%s/manage_products/new' % $1 | |
93 | 93 | |
94 | 94 | when /^(.+)'s page of product (.*)$/ |
95 | 95 | enterprise = Profile.find_by_name($1) |
... | ... | @@ -97,7 +97,7 @@ module NavigationHelpers |
97 | 97 | '/myprofile/%s/manage_products/show/%s' % [enterprise.identifier, product.id] |
98 | 98 | |
99 | 99 | when /^(.*)'s products page$/ |
100 | - '/catalog/%s' % Profile.find_by_name($1).identifier | |
100 | + '/catalog/%s' % $1 | |
101 | 101 | |
102 | 102 | when /^chat$/ |
103 | 103 | '/chat' |
... | ... | @@ -111,15 +111,15 @@ module NavigationHelpers |
111 | 111 | when /^(.+)'s members page/ |
112 | 112 | '/profile/%s/members' % Profile.find_by_name($1).identifier |
113 | 113 | |
114 | - # Add more mappings here. | |
115 | - # Here is a more fancy example: | |
116 | - # | |
117 | - # when /^(.*)'s profile page$/i | |
118 | - # user_profile_path(User.find_by_login($1)) | |
119 | - | |
120 | 114 | else |
121 | - raise "Can't find mapping from \"#{page_name}\" to a path.\n" + | |
122 | - "Now, go and add a mapping in #{__FILE__}" | |
115 | + begin | |
116 | + page_name =~ /the (.*) page/ | |
117 | + path_components = $1.split(/\s+/) | |
118 | + self.send(path_components.push('path').join('_').to_sym) | |
119 | + rescue Object => e | |
120 | + raise "Can't find mapping from \"#{page_name}\" to a path.\n" + | |
121 | + "Now, go and add a mapping in #{__FILE__}" | |
122 | + end | |
123 | 123 | end |
124 | 124 | end |
125 | 125 | end | ... | ... |
features/support/selenium.rb
1 | -Webrat.configure do |config| | |
2 | - config.mode = :selenium | |
3 | - config.application_environment = :cucumber | |
4 | - config.selenium_browser_startup_timeout = 30000 | |
5 | -end | |
1 | +require 'database_cleaner' | |
2 | +require 'database_cleaner/cucumber' | |
6 | 3 | |
7 | 4 | Cucumber::Rails::World.use_transactional_fixtures = false |
8 | 5 | |
9 | -require 'database_cleaner' | |
10 | -require 'database_cleaner/cucumber' | |
6 | +Capybara.default_driver = :selenium | |
7 | +Capybara.register_driver :selenium do |app| | |
8 | + Capybara::Selenium::Driver.new(app, :browser => :firefox) | |
9 | +end | |
11 | 10 | |
11 | +# FIXME: 'DELETE FROM ...' is being ran 3x - see cucumber.log | |
12 | 12 | DatabaseCleaner.clean_with :truncation |
13 | 13 | DatabaseCleaner.strategy = :truncation |
14 | 14 | |
15 | 15 | Before do |
16 | - Fixtures.reset_cache | |
17 | - fixtures_folder = File.join(RAILS_ROOT, 'test', 'fixtures') | |
18 | - fixtures = ['environments', 'roles'] | |
19 | - Fixtures.create_fixtures(fixtures_folder, fixtures) | |
20 | - ENV['LANG'] = 'C' | |
21 | 16 | DatabaseCleaner.start |
22 | 17 | end |
23 | 18 | |
19 | +Before('@ignore-hidden-elements') do | |
20 | + Capybara.ignore_hidden_elements = true | |
21 | +end | |
22 | + | |
23 | +Capybara.default_wait_time = 30 | |
24 | + | |
24 | 25 | After do |
25 | - sleep 2 | |
26 | 26 | DatabaseCleaner.clean |
27 | 27 | end |
28 | + | |
29 | +World(Capybara) | ... | ... |
features/support/version_check.rb
... | ... | @@ -1,29 +0,0 @@ |
1 | -if Cucumber::VERSION::STRING != '0.4.0' | |
2 | -warning = <<-WARNING | |
3 | -(::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) | |
4 | - | |
5 | - (::) R O T T E N C U C U M B E R A L E R T (::) | |
6 | - | |
7 | -Your #{__FILE__.gsub(/version_check.rb$/, 'env.rb')} file was generated with Cucumber 0.4.0, | |
8 | -but you seem to be running Cucumber #{Cucumber::VERSION::STRING}. If you're running an older | |
9 | -version than #{Cucumber::VERSION::STRING}, just upgrade your gem. If you're running a newer | |
10 | -version than #{Cucumber::VERSION::STRING} you should: | |
11 | - | |
12 | - 1) Read http://wiki.github.com/aslakhellesoy/cucumber/upgrading | |
13 | - | |
14 | - 2) Regenerate your cucumber environment with the following command: | |
15 | - | |
16 | - ruby script/generate cucumber | |
17 | - | |
18 | -If you get prompted to replace a file, hit 'd' to see the difference. | |
19 | -When you're sure you have captured any personal edits, confirm that you | |
20 | -want to overwrite #{__FILE__.gsub(/version_check.rb$/, 'env.rb')} by pressing 'y'. Then reapply any | |
21 | -personal changes that may have been overwritten. | |
22 | - | |
23 | -This message will then self destruct. | |
24 | - | |
25 | -(::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) | |
26 | -WARNING | |
27 | -warn(warning) | |
28 | -at_exit {warn(warning)} | |
29 | -end | |
30 | 0 | \ No newline at end of file |
features/unblock_button.feature
... | ... | @@ -15,7 +15,7 @@ Feature: unblock button |
15 | 15 | Scenario: the environment administrator unblocks a blocked enterprise |
16 | 16 | Given I am logged in as admin |
17 | 17 | And enterprise "Sample Enterprise" is blocked |
18 | - And I am on Sample Enterprise's homepage | |
18 | + And I am on sample-enterprise's homepage | |
19 | 19 | When I follow "Unblock" |
20 | 20 | Then I should not see "Unblock" |
21 | 21 | |
... | ... | @@ -25,10 +25,10 @@ Feature: unblock button |
25 | 25 | | joaosilva | Joao Silva | |
26 | 26 | And I am logged in as "joaosilva" |
27 | 27 | And enterprise "Sample Enterprise" is blocked |
28 | - When I am on Sample Enterprise's homepage | |
28 | + When I am on sample-enterprise's homepage | |
29 | 29 | Then I should not see "Unblock" |
30 | 30 | |
31 | 31 | Scenario: a not blocked enterprise should not show "Unblock" button |
32 | 32 | Given I am logged in as admin |
33 | - When I am on Sample Enterprise's homepage | |
33 | + When I am on sample-enterprise's homepage | |
34 | 34 | Then I should not see "Unblock" | ... | ... |
features/upload_files.feature
... | ... | @@ -16,7 +16,7 @@ Feature: upload files |
16 | 16 | And the following galleries |
17 | 17 | | owner | name | |
18 | 18 | | sample-community | Gallery test | |
19 | - And I go to Sample Community's profile | |
19 | + And I go to sample-community's profile | |
20 | 20 | And I follow "0 pictures" |
21 | 21 | And I should see "Upload files" |
22 | 22 | |
... | ... | @@ -28,7 +28,7 @@ Feature: upload files |
28 | 28 | And the following galleries |
29 | 29 | | owner | name | |
30 | 30 | | sample-enterprise | Gallery test | |
31 | - And I go to Sample Enterprise's profile | |
31 | + And I go to sample-enterprise's profile | |
32 | 32 | And I follow "0 pictures" |
33 | 33 | And I should see "Upload files" |
34 | 34 | ... | ... |
lib/noosfero.rb
1 | +# -*- coding: utf-8 -*- | |
1 | 2 | require 'fast_gettext' |
2 | 3 | |
3 | 4 | module Noosfero |
... | ... | @@ -78,13 +79,14 @@ module Noosfero |
78 | 79 | end |
79 | 80 | |
80 | 81 | def self.url_options |
81 | - if ENV['RAILS_ENV'] == 'development' | |
82 | + case ENV['RAILS_ENV'] | |
83 | + when 'development' | |
82 | 84 | development_url_options |
83 | - elsif ENV['RAILS_ENV'] == 'cucumber' | |
84 | - Webrat.configuration.mode == :rails ? { :host => '' } : { :port => Webrat.configuration.application_port } | |
85 | - else | |
86 | - {} | |
87 | - end | |
85 | + when 'cucumber' | |
86 | + if Capybara.current_driver == :selenium | |
87 | + { :host => Capybara.current_session.driver.rack_server.host, :port => Capybara.current_session.driver.rack_server.port } | |
88 | + end | |
89 | + end || { } | |
88 | 90 | end |
89 | 91 | |
90 | 92 | def self.development_url_options | ... | ... |
lib/tasks/cucumber.rake
1 | -# This file was generated by | |
2 | -$LOAD_PATH.unshift(RAILS_ROOT + '/vendor/plugins/cucumber/lib') if File.directory?(RAILS_ROOT + '/vendor/plugins/cucumber/lib') | |
1 | +# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril. | |
2 | +# It is recommended to regenerate this file in the future when you upgrade to a | |
3 | +# newer version of cucumber-rails. Consider adding your own code to a new file | |
4 | +# instead of editing this one. Cucumber will automatically load all features/**/*.rb | |
5 | +# files. | |
3 | 6 | |
4 | -unless ARGV.any? {|a| a =~ /^gems/} | |
7 | + | |
8 | +unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:* tasks | |
9 | + | |
10 | +vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first | |
11 | +$LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil? | |
5 | 12 | |
6 | 13 | begin |
7 | 14 | require 'cucumber/rake/task' |
8 | 15 | |
9 | - # Use vendored cucumber binary if possible. If it's not vendored, | |
10 | - # Cucumber::Rake::Task will automatically use installed gem's cucumber binary | |
11 | - vendored_cucumber_binary = Dir["#{RAILS_ROOT}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first | |
12 | - | |
13 | 16 | namespace :cucumber do |
14 | 17 | Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t| |
15 | - t.binary = vendored_cucumber_binary | |
18 | + t.binary = vendored_cucumber_bin # If nil, the gem's binary is used. | |
16 | 19 | t.fork = true # You may get faster startup if you set this to false |
17 | - t.cucumber_opts = "--color --tags ~@wip --strict --format #{ENV['CUCUMBER_FORMAT'] || 'progress'}" | |
20 | + t.profile = 'default' | |
18 | 21 | end |
19 | 22 | |
20 | 23 | Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t| |
21 | - t.binary = vendored_cucumber_binary | |
24 | + t.binary = vendored_cucumber_bin | |
22 | 25 | t.fork = true # You may get faster startup if you set this to false |
23 | - t.cucumber_opts = "--color --tags @wip:2 --wip --format #{ENV['CUCUMBER_FORMAT'] || 'progress'}" | |
26 | + t.profile = 'wip' | |
24 | 27 | end |
25 | 28 | |
26 | - Cucumber::Rake::Task.new({:selenium => 'db:test:prepare'}, 'Run features with selenium') do |t| | |
27 | - t.binary = vendored_cucumber_binary | |
29 | + Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t| | |
30 | + t.binary = vendored_cucumber_bin | |
28 | 31 | t.fork = true # You may get faster startup if you set this to false |
29 | - t.cucumber_opts = "--color -p selenium --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}" | |
32 | + t.profile = 'rerun' | |
30 | 33 | end |
31 | 34 | |
32 | 35 | desc 'Run all features' |
33 | 36 | task :all => [:ok, :wip] |
34 | 37 | end |
35 | 38 | desc 'Alias for cucumber:ok' |
36 | - task :cucumber => ['cucumber:ok'] | |
39 | + task :cucumber => 'cucumber:ok' | |
40 | + | |
41 | + task :default => :cucumber | |
37 | 42 | |
38 | 43 | task :features => :cucumber do |
39 | 44 | STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***" | ... | ... |
lib/tasks/plugins_tests.rake
... | ... | @@ -31,7 +31,7 @@ def run_cucumber(name, profile, files_glob) |
31 | 31 | if files.empty? |
32 | 32 | puts "I: no tests to run #{name}" |
33 | 33 | else |
34 | - sh 'xvfb-run', 'ruby', '-S', 'cucumber', '--profile', profile, '--format', ENV['CUCUMBER_FORMAT'] || 'progress' , *features | |
34 | + sh 'xvfb-run', 'ruby', '-S', 'cucumber', '--profile', profile.to_s, '--format', ENV['CUCUMBER_FORMAT'] || 'progress' , *files | |
35 | 35 | end |
36 | 36 | end |
37 | 37 | |
... | ... | @@ -42,14 +42,16 @@ def plugin_test_task(name, plugin, files_glob) |
42 | 42 | end |
43 | 43 | end |
44 | 44 | |
45 | -def plugin_cucumber_task(plugin, files_glob) | |
46 | - task :cucumber => 'db:test:plugins:prepare' do |t| | |
45 | +def plugin_cucumber_task(name, plugin, files_glob) | |
46 | + desc "Run #{name} tests for #{plugin_name(plugin)}" | |
47 | + task name => 'db:test:plugins:prepare' do |t| | |
47 | 48 | run_cucumber t.name, :default, files_glob |
48 | 49 | end |
49 | 50 | end |
50 | 51 | |
51 | -def plugin_selenium_task(plugin, files_glob) | |
52 | - task :selenium => 'db:test:plugins:prepare' do |t| | |
52 | +def plugin_selenium_task(name, plugin, files_glob) | |
53 | + desc "Run #{name} tests for #{plugin_name(plugin)}" | |
54 | + task name => 'db:test:plugins:prepare' do |t| | |
53 | 55 | run_cucumber t.name, :selenium, files_glob |
54 | 56 | end |
55 | 57 | end |
... | ... | @@ -79,11 +81,11 @@ namespace :test do |
79 | 81 | plugin_test_task :units, plugin, "plugins/#{plugin}/test/unit/**/*.rb" |
80 | 82 | plugin_test_task :functionals, plugin, "plugins/#{plugin}/test/functional/**/*.rb" |
81 | 83 | plugin_test_task :integration, plugin, "plugins/#{plugin}/test/integration/**/*.rb" |
82 | - plugin_cucumber_task plugin, "plugins/#{plugin}/features/**/*.feature" | |
83 | - plugin_selenium_task plugin, "plugins/#{plugin}/features/**/*.feature" | |
84 | + plugin_cucumber_task :cucumber, plugin, "plugins/#{plugin}/test/features/**/*.feature" | |
85 | + plugin_selenium_task :selenium, plugin, "plugins/#{plugin}/test/features/**/*.feature" | |
84 | 86 | end |
85 | 87 | |
86 | - test_sequence_task(plugin, plugin, "#{plugin}:units", "#{plugin}:functionals", "#{plugin}:integration", "#{plugin}:cucumber", "#{plugin}:selenium") # FIXME missing cucumber and selenium | |
88 | + test_sequence_task(plugin, plugin, "#{plugin}:units", "#{plugin}:functionals", "#{plugin}:integration", "#{plugin}:cucumber", "#{plugin}:selenium") | |
87 | 89 | end |
88 | 90 | |
89 | 91 | { :units => :unit , :functionals => :functional , :integration => :integration }.each do |taskname,folder| |
... | ... | @@ -93,11 +95,11 @@ namespace :test do |
93 | 95 | end |
94 | 96 | |
95 | 97 | task :cucumber => 'db:test:plugins:prepare' do |t| |
96 | - run_cucumber t.name, :default, "plugins/{#{enabled_plugins.join(',')}}/features/**/*.features" | |
98 | + run_cucumber t.name, :default, "plugins/{#{enabled_plugins.join(',')}}/test/features/**/*.features" | |
97 | 99 | end |
98 | 100 | |
99 | 101 | task :selenium => 'db:test:plugins:prepare' do |t| |
100 | - run_cucumber t.name, :selenium, "plugins/{#{enabled_plugins.join(',')}}/features/**/*.features" | |
102 | + run_cucumber t.name, :selenium, "plugins/{#{enabled_plugins.join(',')}}/test/features/**/*.features" | |
101 | 103 | end |
102 | 104 | |
103 | 105 | task :temp_enable_all_plugins do | ... | ... |
script/cucumber
1 | 1 | #!/usr/bin/env ruby |
2 | 2 | |
3 | -vendored_cucumber_binary = Dir[File.join(File.dirname(__FILE__), | |
4 | - '..', | |
5 | - 'vendor', | |
6 | - '{gems,plugins}', | |
7 | - 'cucumber*', | |
8 | - 'bin', | |
9 | - 'cucumber')].first | |
10 | - | |
11 | -if vendored_cucumber_binary | |
12 | - load File.expand_path(vendored_cucumber_binary) | |
3 | +vendored_cucumber_bin = Dir["#{File.dirname(__FILE__)}/../vendor/{gems,plugins}/cucumber*/bin/cucumber"].first | |
4 | +if vendored_cucumber_bin | |
5 | + load File.expand_path(vendored_cucumber_bin) | |
13 | 6 | else |
14 | 7 | require 'rubygems' unless ENV['NO_RUBYGEMS'] |
15 | 8 | require 'cucumber' | ... | ... |