summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2017-07-23 12:35:32 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2017-07-23 12:35:32 +0000
commit530eef96033bf1474157bbc9c7739ff8dc7e2ae4 (patch)
treeeb4df8a4644addb29bcb34a9de4ad58ff702e42a /test
parentb25b4762046adf99809ce609529d16dd22e2a1b4 (diff)
downloadredmine-530eef96033bf1474157bbc9c7739ff8dc7e2ae4.tar.gz
redmine-530eef96033bf1474157bbc9c7739ff8dc7e2ae4.zip
Converts UI tests to system tests (#23630).
git-svn-id: http://svn.redmine.org/redmine/trunk@16864 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test')
-rw-r--r--test/application_system_test_case.rb78
-rw-r--r--test/system/base.rb109
-rw-r--r--test/system/issues_test.rb (renamed from test/system/issues_test_ui.rb)4
-rw-r--r--test/system/my_page_test.rb (renamed from test/system/my_page_test_ui.rb)4
-rw-r--r--test/system/quick_jump_test.rb (renamed from test/system/quick_jump_test_ui.rb)4
-rw-r--r--test/system/sudo_mode_test.rb (renamed from test/system/sudo_mode_test_ui.rb)4
-rw-r--r--test/system/timelog_test.rb (renamed from test/system/timelog_test_ui.rb)10
7 files changed, 92 insertions, 121 deletions
diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb
new file mode 100644
index 000000000..63b17f639
--- /dev/null
+++ b/test/application_system_test_case.rb
@@ -0,0 +1,78 @@
+# Redmine - project management software
+# Copyright (C) 2006-2017 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+require File.expand_path('../test_helper', __FILE__)
+
+class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
+ DOWNLOADS_PATH = File.expand_path(File.join(Rails.root, 'tmp', 'downloads'))
+
+ driven_by :selenium, using: :chrome, screen_size: [1024, 900], options: {
+ desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome(
+ 'chromeOptions' => {
+ 'prefs' => {
+ 'download.default_directory' => DOWNLOADS_PATH,
+ 'download.prompt_for_download' => false,
+ 'plugins.plugins_disabled' => ["Chrome PDF Viewer"]
+ }
+ }
+ )
+ }
+
+ setup do
+ clear_downloaded_files
+ Setting.delete_all
+ Setting.clear_cache
+ end
+
+ teardown do
+ Setting.delete_all
+ Setting.clear_cache
+ end
+
+ # Should not depend on locale since Redmine displays login page
+ # using default browser locale which depend on system locale for "real" browsers drivers
+ def log_user(login, password)
+ visit '/my/page'
+ assert_equal '/login', current_path
+ within('#login-form form') do
+ fill_in 'username', :with => login
+ fill_in 'password', :with => password
+ find('input[name=login]').click
+ end
+ assert_equal '/my/page', current_path
+ end
+
+ def clear_downloaded_files
+ FileUtils.rm downloaded_files
+ end
+
+ def downloaded_files
+ Dir.glob("#{DOWNLOADS_PATH}/*").reject {|f| f=~/crdownload$/}
+ end
+
+ # Returns the path of the download file
+ def downloaded_file
+ Timeout.timeout(5) do
+ while downloaded_files.empty?
+ sleep 0.2
+ end
+ end
+ downloaded_files.first
+ end
+end
+
+FileUtils.mkdir_p ApplicationSystemTestCase::DOWNLOADS_PATH
diff --git a/test/system/base.rb b/test/system/base.rb
deleted file mode 100644
index d4ecff985..000000000
--- a/test/system/base.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-# Redmine - project management software
-# Copyright (C) 2006-2017 Jean-Philippe Lang
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-require File.expand_path('../../test_helper', __FILE__)
-require 'capybara/rails'
-require 'fileutils'
-require 'timeout'
-
-module Redmine
- module UiTest
- module Downloads
- DOWNLOADS_PATH = File.expand_path(File.join(Rails.root, 'tmp', 'downloads'))
-
- def clear_downloaded_files
- FileUtils.rm downloaded_files
- end
-
- def downloaded_files
- Dir.glob("#{DOWNLOADS_PATH}/*").reject {|f| f=~/crdownload$/}
- end
-
- def downloaded_file
- Timeout.timeout(5) do
- while downloaded_files.empty?
- sleep 0.2
- end
- end
- downloaded_files.first
- end
- end
- end
-end
-
-FileUtils.mkdir_p Redmine::UiTest::Downloads::DOWNLOADS_PATH
-
-Capybara.register_driver :chrome do |app|
- Capybara::Selenium::Driver.new(app,
- :browser => :chrome,
- :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(
- 'chromeOptions' => {
- 'args' => [ "--window-size=1024,900" ],
- 'prefs' => {
- 'download.default_directory' => Redmine::UiTest::Downloads::DOWNLOADS_PATH,
- 'download.prompt_for_download' => false,
- 'plugins.plugins_disabled' => ["Chrome PDF Viewer"]
- }
- }
- )
- )
-end
-Capybara.default_driver = :chrome
-
-# default: 2
-Capybara.default_wait_time = 2
-
-module Redmine
- module UiTest
- # Base class for UI tests
- class Base < ActionDispatch::IntegrationTest
- include Capybara::DSL
- include Redmine::UiTest::Downloads
-
- # Stop ActiveRecord from wrapping tests in transactions
- # Transactional fixtures do not work with Selenium tests, because Capybara
- # uses a separate server thread, which the transactions would be hidden
- self.use_transactional_tests = false
-
- # Should not depend on locale since Redmine displays login page
- # using default browser locale which depend on system locale for "real" browsers drivers
- def log_user(login, password)
- visit '/my/page'
- assert_equal '/login', current_path
- within('#login-form form') do
- fill_in 'username', :with => login
- fill_in 'password', :with => password
- find('input[name=login]').click
- end
- assert_equal '/my/page', current_path
- end
-
- setup do
- clear_downloaded_files
- Setting.delete_all
- Setting.clear_cache
- end
-
- teardown do
- Capybara.reset_sessions! # Forget the (simulated) browser state
- Capybara.use_default_driver # Revert Capybara.current_driver to Capybara.default_driver
- Setting.delete_all
- Setting.clear_cache
- end
- end
- end
-end
diff --git a/test/system/issues_test_ui.rb b/test/system/issues_test.rb
index 39fa8e7b6..c174ff7a3 100644
--- a/test/system/issues_test_ui.rb
+++ b/test/system/issues_test.rb
@@ -15,9 +15,9 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-require File.expand_path('../base', __FILE__)
+require File.expand_path('../../application_system_test_case', __FILE__)
-class Redmine::UiTest::IssuesTest < Redmine::UiTest::Base
+class IssuesTest < ApplicationSystemTestCase
fixtures :projects, :users, :email_addresses, :roles, :members, :member_roles,
:trackers, :projects_trackers, :enabled_modules, :issue_statuses, :issues,
:enumerations, :custom_fields, :custom_values, :custom_fields_trackers,
diff --git a/test/system/my_page_test_ui.rb b/test/system/my_page_test.rb
index 588f851c3..ab3f943b1 100644
--- a/test/system/my_page_test_ui.rb
+++ b/test/system/my_page_test.rb
@@ -15,9 +15,9 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-require File.expand_path('../base', __FILE__)
+require File.expand_path('../../application_system_test_case', __FILE__)
-class Redmine::UiTest::MyPageTest < Redmine::UiTest::Base
+class MyPageTest < ApplicationSystemTestCase
fixtures :projects, :users, :email_addresses, :roles, :members, :member_roles,
:trackers, :projects_trackers, :enabled_modules, :issue_statuses, :issues,
:enumerations, :custom_fields, :custom_values, :custom_fields_trackers,
diff --git a/test/system/quick_jump_test_ui.rb b/test/system/quick_jump_test.rb
index 7ac3e727c..5831faf86 100644
--- a/test/system/quick_jump_test_ui.rb
+++ b/test/system/quick_jump_test.rb
@@ -17,9 +17,9 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-require File.expand_path('../base', __FILE__)
+require File.expand_path('../../application_system_test_case', __FILE__)
-class Redmine::UiTest::QuickJumpTest < Redmine::UiTest::Base
+class QuickJumpTest < ApplicationSystemTestCase
fixtures :projects, :users, :email_addresses, :roles, :members, :member_roles,
:trackers, :projects_trackers, :enabled_modules, :issue_statuses, :issues,
:enumerations, :custom_fields, :custom_values, :custom_fields_trackers,
diff --git a/test/system/sudo_mode_test_ui.rb b/test/system/sudo_mode_test.rb
index dd3a45463..4d7e11bce 100644
--- a/test/system/sudo_mode_test_ui.rb
+++ b/test/system/sudo_mode_test.rb
@@ -15,9 +15,9 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-require File.expand_path('../base', __FILE__)
+require File.expand_path('../../application_system_test_case', __FILE__)
-class Redmine::UiTest::SudoModeTest < Redmine::UiTest::Base
+class SudoModeTest < ApplicationSystemTestCase
fixtures :users, :email_addresses
def setup
diff --git a/test/system/timelog_test_ui.rb b/test/system/timelog_test.rb
index 3341a136b..e1acd0f51 100644
--- a/test/system/timelog_test_ui.rb
+++ b/test/system/timelog_test.rb
@@ -17,9 +17,11 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-require File.expand_path('../base', __FILE__)
+require File.expand_path('../../application_system_test_case', __FILE__)
-class Redmine::UiTest::TimelogTest < Redmine::UiTest::Base
+Capybara.default_max_wait_time = 2
+
+class TimelogTest < ApplicationSystemTestCase
fixtures :projects, :users, :email_addresses, :roles, :members, :member_roles,
:trackers, :projects_trackers, :enabled_modules, :issue_statuses, :issues,
:enumerations, :custom_fields, :custom_values, :custom_fields_trackers,
@@ -85,10 +87,10 @@ class Redmine::UiTest::TimelogTest < Redmine::UiTest::Base
visit '/settings?tab=timelog'
# Remove a column
select 'Comment', :from => 'Selected Columns'
- click_on "←"
+ click_on "←"
# Add a column
select 'Tracker', :from => 'Available Columns'
- click_on "→"
+ click_on "→"
click_on 'Save'
# Display the list with updated settings