diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2018-03-20 01:54:27 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2018-03-21 19:39:11 +0800 |
commit | 4bccc6a58c4365dba79820683200d8f78cf00d15 (patch) | |
tree | 2b469a69486c5f2c6551507ad8ec6230abbf8f83 | |
parent | 3c3bc4992087e255e7913ee789a53b91884cbd6b (diff) | |
download | gitlab-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.rb | 90 | ||||
-rw-r--r-- | qa/qa/specs/features/project/deploy_key_clone_spec.rb | 15 |
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 } |