diff options
-rw-r--r-- | app/views/profiles/keys/_key_details.html.haml | 2 | ||||
-rw-r--r-- | qa/qa.rb | 2 | ||||
-rw-r--r-- | qa/qa/page/assertions.rb | 15 | ||||
-rw-r--r-- | qa/qa/page/base.rb | 5 | ||||
-rw-r--r-- | qa/qa/page/profile/ssh_key.rb | 17 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb | 22 |
6 files changed, 55 insertions, 8 deletions
diff --git a/app/views/profiles/keys/_key_details.html.haml b/app/views/profiles/keys/_key_details.html.haml index 0ef01dec493..df9908f7bb3 100644 --- a/app/views/profiles/keys/_key_details.html.haml +++ b/app/views/profiles/keys/_key_details.html.haml @@ -19,7 +19,7 @@ = form_errors(@key, type: 'key') unless @key.valid? %p %span.light= _('Fingerprint:') - %code.key-fingerprint= @key.fingerprint + %code.key-fingerprint{ data: { qa_selector: 'key_fingerprint_code' }}= @key.fingerprint %pre.well-pre = @key.key .col-md-12 @@ -126,6 +126,7 @@ module QA # Needed to execute click-driven-only black-box tests. # module Page + autoload :Assertions, 'qa/page/assertions' autoload :Base, 'qa/page/base' autoload :View, 'qa/page/view' autoload :Element, 'qa/page/element' @@ -268,6 +269,7 @@ module QA autoload :Menu, 'qa/page/profile/menu' autoload :PersonalAccessTokens, 'qa/page/profile/personal_access_tokens' autoload :SSHKeys, 'qa/page/profile/ssh_keys' + autoload :SSHKey, 'qa/page/profile/ssh_key' end module Issuable diff --git a/qa/qa/page/assertions.rb b/qa/qa/page/assertions.rb new file mode 100644 index 00000000000..f6ecf0cb061 --- /dev/null +++ b/qa/qa/page/assertions.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'capybara/dsl' + +module QA + module Page + module Assertions + include Capybara::DSL + + def assert_no_content(text) + assert_no_text(text) + end + end + end +end diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb index 45496c6b245..fab2017379c 100644 --- a/qa/qa/page/base.rb +++ b/qa/qa/page/base.rb @@ -8,6 +8,7 @@ module QA prepend Support::Page::Logging if Runtime::Env.debug? include Capybara::DSL include Scenario::Actable + include Assertions extend Validatable extend SingleForwardable @@ -69,6 +70,10 @@ module QA page.evaluate_script('xhr.status') == 200 end + def element_text(name) + find_element(name).text + end + def find_element(name, **kwargs) find(element_selector_css(name), kwargs) end diff --git a/qa/qa/page/profile/ssh_key.rb b/qa/qa/page/profile/ssh_key.rb new file mode 100644 index 00000000000..62db892588b --- /dev/null +++ b/qa/qa/page/profile/ssh_key.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module QA + module Page + module Profile + class SSHKey < Page::Base + view 'app/views/profiles/keys/_key_details.html.haml' do + element :key_fingerprint_code + end + + def fingerprint + element_text(:key_fingerprint_code) + end + end + end + end +end diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb index a0251e1c385..191b6dd8001 100644 --- a/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb @@ -8,6 +8,17 @@ module QA let(:key_title) { "key for ssh tests #{Time.now.to_f}" } + after do + Page::Main::Menu.perform(&:click_settings_link) + Page::Profile::Menu.perform(&:click_ssh_keys) + + Page::Profile::SSHKeys.perform do |ssh_keys| + ssh_keys.remove_key(key_title) + + ssh_keys.assert_no_content(key_title) + end + end + it 'user adds an ssh key and pushes code to the repository' do Runtime::Browser.visit(:gitlab, Page::Main::Login) Page::Main::Login.perform(&:sign_in_using_credentials) @@ -16,6 +27,10 @@ module QA resource.title = key_title end + Page::Profile::SSHKey.perform do |sshkey| + expect(sshkey.fingerprint).to eq(key.fingerprint) + end + project_push = Resource::Repository::ProjectPush.fabricate! do |push| push.ssh_key = key push.file_name = 'README.md' @@ -27,13 +42,6 @@ module QA expect(page).to have_content('README.md') expect(page).to have_content('Test Use SSH Key') - - Page::Main::Menu.perform(&:click_settings_link) - Page::Profile::Menu.perform(&:click_ssh_keys) - - Page::Profile::SSHKeys.perform do |ssh_keys| - ssh_keys.remove_key(key_title) - end end end end |