diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2017-07-23 12:35:32 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2017-07-23 12:35:32 +0000 |
commit | 530eef96033bf1474157bbc9c7739ff8dc7e2ae4 (patch) | |
tree | eb4df8a4644addb29bcb34a9de4ad58ff702e42a /test | |
parent | b25b4762046adf99809ce609529d16dd22e2a1b4 (diff) | |
download | redmine-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.rb | 78 | ||||
-rw-r--r-- | test/system/base.rb | 109 | ||||
-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 |