summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2018-03-20 01:54:27 +0800
committerLin Jen-Shin <godfat@godfat.org>2018-03-21 19:39:11 +0800
commit4bccc6a58c4365dba79820683200d8f78cf00d15 (patch)
tree2b469a69486c5f2c6551507ad8ec6230abbf8f83
parent3c3bc4992087e255e7913ee789a53b91884cbd6b (diff)
downloadgitlab-ce-qa-add-more-key-tests.tar.gz
Test odd and high bits (9876) for RSAqa-add-more-key-tests
We also extend read_timeout if we're testing high bits
-rw-r--r--qa/qa/runtime/browser.rb90
-rw-r--r--qa/qa/specs/features/project/deploy_key_clone_spec.rb15
2 files changed, 61 insertions, 44 deletions
diff --git a/qa/qa/runtime/browser.rb b/qa/qa/runtime/browser.rb
index a12d95683af..523e372f220 100644
--- a/qa/qa/runtime/browser.rb
+++ b/qa/qa/runtime/browser.rb
@@ -34,51 +34,18 @@ module QA
def self.configure!
return if Capybara.drivers.include?(:chrome)
- Capybara.register_driver :chrome do |app|
- capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
- # This enables access to logs with `page.driver.manage.get_log(:browser)`
- loggingPrefs: {
- browser: "ALL",
- client: "ALL",
- driver: "ALL",
- server: "ALL"
- }
- )
-
- options = Selenium::WebDriver::Chrome::Options.new
- options.add_argument("window-size=1240,1680")
-
- # Chrome won't work properly in a Docker container in sandbox mode
- options.add_argument("no-sandbox")
-
- # Run headless by default unless CHROME_HEADLESS is false
- if QA::Runtime::Env.chrome_headless?
- options.add_argument("headless")
-
- # Chrome documentation says this flag is needed for now
- # https://developers.google.com/web/updates/2017/04/headless-chrome#cli
- options.add_argument("disable-gpu")
- end
+ register_driver(:chrome, &method(:new_capybara_driver))
- # Disable /dev/shm use in CI. See https://gitlab.com/gitlab-org/gitlab-ee/issues/4252
- options.add_argument("disable-dev-shm-usage") if QA::Runtime::Env.running_in_ci?
+ register_driver(:chrome_slow_page) do |app|
+ http_client = Selenium::WebDriver::Remote::Http::Default.new
+ http_client.read_timeout = 180
- Capybara::Selenium::Driver.new(
- app,
- browser: :chrome,
- desired_capabilities: capabilities,
- options: options
- )
+ new_capybara_driver(app, http_client: http_client)
end
# Keep only the screenshots generated from the last failing test suite
Capybara::Screenshot.prune_strategy = :keep_last_run
- # From https://github.com/mattheworiordan/capybara-screenshot/issues/84#issuecomment-41219326
- Capybara::Screenshot.register_driver(:chrome) do |driver, path|
- driver.browser.save_screenshot(path)
- end
-
Capybara.configure do |config|
config.default_driver = :chrome
config.javascript_driver = :chrome
@@ -88,6 +55,53 @@ module QA
end
end
+ def self.register_driver(name, &block)
+ Capybara.register_driver(name, &block)
+
+ # From https://github.com/mattheworiordan/capybara-screenshot/issues/84#issuecomment-41219326
+ Capybara::Screenshot.register_driver(name) do |driver, path|
+ driver.browser.save_screenshot(path)
+ end
+ end
+
+ def self.new_capybara_driver(app, **args)
+ capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
+ # This enables access to logs with `page.driver.manage.get_log(:browser)`
+ loggingPrefs: {
+ browser: "ALL",
+ client: "ALL",
+ driver: "ALL",
+ server: "ALL"
+ }
+ )
+
+ options = Selenium::WebDriver::Chrome::Options.new
+ options.add_argument("window-size=1240,1680")
+
+ # Chrome won't work properly in a Docker container in sandbox mode
+ options.add_argument("no-sandbox")
+
+ # Run headless by default unless CHROME_HEADLESS is false
+ if QA::Runtime::Env.chrome_headless?
+ options.add_argument("headless")
+
+ # Chrome documentation says this flag is needed for now
+ # https://developers.google.com/web/updates/2017/04/headless-chrome#cli
+ options.add_argument("disable-gpu")
+ end
+
+ # Disable /dev/shm use in CI. See https://gitlab.com/gitlab-org/gitlab-ee/issues/4252
+ options.add_argument("disable-dev-shm-usage") if QA::Runtime::Env.running_in_ci?
+
+ Capybara::Selenium::Driver.new(
+ app,
+ browser: :chrome,
+ desired_capabilities: capabilities,
+ options: options,
+ **args
+ )
+ end
+
class Session
include Capybara::DSL
diff --git a/qa/qa/specs/features/project/deploy_key_clone_spec.rb b/qa/qa/specs/features/project/deploy_key_clone_spec.rb
index 424a8e18257..88b490dad85 100644
--- a/qa/qa/specs/features/project/deploy_key_clone_spec.rb
+++ b/qa/qa/specs/features/project/deploy_key_clone_spec.rb
@@ -15,17 +15,20 @@ module QA
end
keys = [
- Runtime::Key::RSA.new(2048),
- Runtime::Key::RSA.new(4096),
- Runtime::Key::RSA.new(8192),
- Runtime::Key::ECDSA.new(256),
- Runtime::Key::ECDSA.new(384),
+ Runtime::Key::RSA.new(9876),
Runtime::Key::ECDSA.new(521),
Runtime::Key::ED25519.new
]
keys.each do |key|
- scenario "user sets up a deploy key with #{key.name}(#{key.bits}) to clone code using pipelines" do
+ driver =
+ if key.bits >= 8192
+ :chrome_slow_page
+ else
+ :chrome
+ end
+
+ scenario "user sets up a deploy key with #{key.name}(#{key.bits}) to clone code using pipelines", driver: driver do
Runtime::Browser.visit(:gitlab, Page::Main::Login)
Page::Main::Login.act { sign_in_using_credentials }