summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Gemfile7
-rw-r--r--doc/RUNNING_TESTS2
-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
9 files changed, 97 insertions, 125 deletions
diff --git a/Gemfile b/Gemfile
index f4715148d..6b40111f5 100644
--- a/Gemfile
+++ b/Gemfile
@@ -86,9 +86,10 @@ group :test do
gem "rails-dom-testing"
gem "mocha"
gem "simplecov", "~> 0.14.1", :require => false
- # For running UI tests
- gem "capybara"
- gem "selenium-webdriver", "~> 2.53.4"
+ # For running system tests
+ gem 'puma', '~> 3.7'
+ gem "capybara", '~> 2.13'
+ gem "selenium-webdriver"
end
local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
diff --git a/doc/RUNNING_TESTS b/doc/RUNNING_TESTS
index 91a534aa0..edd39be4e 100644
--- a/doc/RUNNING_TESTS
+++ b/doc/RUNNING_TESTS
@@ -70,4 +70,4 @@ You need to have ChromeDriver installed and available in your PATH:
https://sites.google.com/a/chromium.org/chromedriver/
Capybara tests can be run with:
-`rake test:ui`
+`rails test:system`
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