aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2017-02-19 17:49:21 -0500
committereileencodes <eileencodes@gmail.com>2017-02-20 15:07:35 -0500
commit161cf89e134267f9b579f493ca19b12c30d5fd36 (patch)
treeab2228eedae038b15d7684ebf872adf227c75501
parent983275eb7c01eaeba5798a422514f4d9d6b74786 (diff)
downloadrails-161cf89e134267f9b579f493ca19b12c30d5fd36.tar.gz
rails-161cf89e134267f9b579f493ca19b12c30d5fd36.tar.bz2
rails-161cf89e134267f9b579f493ca19b12c30d5fd36.zip
Fix default host in setup, move teardown to helper file
* Override integration test default host Integration tests automatically set the default host to 'http://example.com'. This works fine for integration tests because they are not real browser sessions, but doesn't work fine for system tests because they are real browser sessions. We can override this by setting the `host!` in `before_setup. The `Capybara.always_include_port` will allow the test to look at `127.0.0.1:port capybara picks` and properly redirect the test. Any application can override this by setting the `host!` in their system test helper. Generally though, applications are going to be using localhost. In this commit I also moved the setup and teardown into their own module for tidiness. * Move teardown settings into system test case These configuration options can be put into the system test case file instead of the generated system tests helper file. This is an implementation detail and therefore shouldn't be generated with the template.
-rw-r--r--actionpack/lib/action_dispatch/system_test_case.rb2
-rw-r--r--actionpack/lib/action_dispatch/system_testing/server.rb9
-rw-r--r--actionpack/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb20
-rw-r--r--actionpack/test/dispatch/system_testing/server_test.rb9
-rw-r--r--railties/lib/rails/generators/rails/app/templates/test/system_test_helper.rb5
-rw-r--r--railties/lib/rails/generators/rails/plugin/templates/test/system_test_helper.rb5
-rw-r--r--railties/lib/rails/generators/test_unit/system/templates/system_test_helper.rb5
7 files changed, 39 insertions, 16 deletions
diff --git a/actionpack/lib/action_dispatch/system_test_case.rb b/actionpack/lib/action_dispatch/system_test_case.rb
index 850f101ca8..91cbc1180c 100644
--- a/actionpack/lib/action_dispatch/system_test_case.rb
+++ b/actionpack/lib/action_dispatch/system_test_case.rb
@@ -4,6 +4,7 @@ require "action_dispatch/system_testing/driver"
require "action_dispatch/system_testing/server"
require "action_dispatch/system_testing/browser"
require "action_dispatch/system_testing/test_helpers/screenshot_helper"
+require "action_dispatch/system_testing/test_helpers/setup_and_teardown"
module ActionDispatch
class SystemTestCase < IntegrationTest
@@ -92,6 +93,7 @@ module ActionDispatch
# and Rails, any driver that is supported by Capybara is supported by system
# tests as long as you include the required gems and files.
include Capybara::DSL
+ include SystemTesting::TestHelpers::SetupAndTeardown
include SystemTesting::TestHelpers::ScreenshotHelper
def self.start_application # :nodoc:
diff --git a/actionpack/lib/action_dispatch/system_testing/server.rb b/actionpack/lib/action_dispatch/system_testing/server.rb
index 62ba07736b..4a214ef713 100644
--- a/actionpack/lib/action_dispatch/system_testing/server.rb
+++ b/actionpack/lib/action_dispatch/system_testing/server.rb
@@ -16,8 +16,17 @@ module ActionDispatch
end
def setup
+ set_server
+ set_port
+ end
+
+ def set_server
Capybara.server = :rails_puma
end
+
+ def set_port
+ Capybara.always_include_port = true
+ end
end
end
end
diff --git a/actionpack/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb b/actionpack/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb
new file mode 100644
index 0000000000..491559eedf
--- /dev/null
+++ b/actionpack/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb
@@ -0,0 +1,20 @@
+module ActionDispatch
+ module SystemTesting
+ module TestHelpers
+ module SetupAndTeardown # :nodoc:
+ DEFAULT_HOST = "127.0.0.1"
+
+ def before_setup
+ host! DEFAULT_HOST
+ super
+ end
+
+ def after_teardown
+ super
+ take_failed_screenshot
+ Capybara.reset_sessions!
+ end
+ end
+ end
+ end
+end
diff --git a/actionpack/test/dispatch/system_testing/server_test.rb b/actionpack/test/dispatch/system_testing/server_test.rb
index 66842f4ea9..10412d6367 100644
--- a/actionpack/test/dispatch/system_testing/server_test.rb
+++ b/actionpack/test/dispatch/system_testing/server_test.rb
@@ -3,8 +3,15 @@ require "capybara/dsl"
require "action_dispatch/system_testing/server"
class ServerTest < ActiveSupport::TestCase
+ setup do
+ ActionDispatch::SystemTesting::Server.new.run
+ end
+
test "initializing the server port" do
- server = ActionDispatch::SystemTesting::Server.new.run
assert_includes Capybara.servers, :rails_puma
end
+
+ test "port is always included" do
+ assert Capybara.always_include_port, "expected Capybara.always_include_port to be true"
+ end
end
diff --git a/railties/lib/rails/generators/rails/app/templates/test/system_test_helper.rb b/railties/lib/rails/generators/rails/app/templates/test/system_test_helper.rb
index 440689b503..d19212abd5 100644
--- a/railties/lib/rails/generators/rails/app/templates/test/system_test_helper.rb
+++ b/railties/lib/rails/generators/rails/app/templates/test/system_test_helper.rb
@@ -2,9 +2,4 @@ require "test_helper"
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
-
- teardown do
- take_failed_screenshot
- Capybara.reset_sessions!
- end
end
diff --git a/railties/lib/rails/generators/rails/plugin/templates/test/system_test_helper.rb b/railties/lib/rails/generators/rails/plugin/templates/test/system_test_helper.rb
index 440689b503..d19212abd5 100644
--- a/railties/lib/rails/generators/rails/plugin/templates/test/system_test_helper.rb
+++ b/railties/lib/rails/generators/rails/plugin/templates/test/system_test_helper.rb
@@ -2,9 +2,4 @@ require "test_helper"
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
-
- teardown do
- take_failed_screenshot
- Capybara.reset_sessions!
- end
end
diff --git a/railties/lib/rails/generators/test_unit/system/templates/system_test_helper.rb b/railties/lib/rails/generators/test_unit/system/templates/system_test_helper.rb
index 440689b503..d19212abd5 100644
--- a/railties/lib/rails/generators/test_unit/system/templates/system_test_helper.rb
+++ b/railties/lib/rails/generators/test_unit/system/templates/system_test_helper.rb
@@ -2,9 +2,4 @@ require "test_helper"
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
-
- teardown do
- take_failed_screenshot
- Capybara.reset_sessions!
- end
end