Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2018-10-02 12:45:48 +0300
committerRémy Coutable <remy@rymai.me>2018-10-02 13:11:44 +0300
commit182966312f88be877d290dd5606a8ab38efaf05c (patch)
tree417c2d2171c6ea815b7701d344697e79cc6eaa9e
parent7287fd09e264ad5b8efceab4b1919c92769856b9 (diff)
[QA] Improve admin hashed-storage settings
This was introduced by https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/7371 for which no QA was run, even though QA files were changed. This is a follow-up to https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/7531. Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--app/views/admin/application_settings/_repository_storage.html.haml4
-rw-r--r--app/views/admin/application_settings/repository.html.haml2
-rw-r--r--app/views/admin/application_settings/show.html.haml2
-rw-r--r--app/views/layouts/nav/sidebar/_admin.html.haml8
-rw-r--r--qa/qa.rb7
-rw-r--r--qa/qa/page/admin/settings/component/repository_storage.rb26
-rw-r--r--qa/qa/page/admin/settings/main.rb21
-rw-r--r--qa/qa/page/admin/settings/repository.rb23
-rw-r--r--qa/qa/page/admin/settings/repository_storage.rb23
-rw-r--r--qa/qa/page/base.rb8
-rw-r--r--qa/qa/page/menu/admin.rb36
-rw-r--r--qa/spec/page/validator_spec.rb2
12 files changed, 104 insertions, 58 deletions
diff --git a/app/views/admin/application_settings/_repository_storage.html.haml b/app/views/admin/application_settings/_repository_storage.html.haml
index 4523332493b..908b30cc3ce 100644
--- a/app/views/admin/application_settings/_repository_storage.html.haml
+++ b/app/views/admin/application_settings/_repository_storage.html.haml
@@ -5,7 +5,7 @@
.sub-section
.form-group
.form-check
- = f.check_box :hashed_storage_enabled, class: 'form-check-input'
+ = f.check_box :hashed_storage_enabled, class: 'form-check-input qa-hashed-storage-checkbox'
= f.label :hashed_storage_enabled, class: 'form-check-label' do
Use hashed storage paths for newly created and renamed projects
.form-text.text-muted
@@ -48,4 +48,4 @@
.form-text.text-muted
= circuitbreaker_failure_reset_time_help_text
- = f.submit 'Save changes', class: "btn btn-success"
+ = f.submit 'Save changes', class: "btn btn-success qa-save-changes-button"
diff --git a/app/views/admin/application_settings/repository.html.haml b/app/views/admin/application_settings/repository.html.haml
index d8029e0c54a..be13138a764 100644
--- a/app/views/admin/application_settings/repository.html.haml
+++ b/app/views/admin/application_settings/repository.html.haml
@@ -13,7 +13,7 @@
.settings-content
= render partial: 'repository_mirrors_form'
-%section.settings.as-repository-storage.no-animate#js-repository-storage-settings{ class: ('expanded' if expanded_by_default?) }
+%section.settings.qa-repository-storage-settings.as-repository-storage.no-animate#js-repository-storage-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Repository storage')
diff --git a/app/views/admin/application_settings/show.html.haml b/app/views/admin/application_settings/show.html.haml
index e2043183a97..52731f97062 100644
--- a/app/views/admin/application_settings/show.html.haml
+++ b/app/views/admin/application_settings/show.html.haml
@@ -46,7 +46,7 @@
.settings-content
= render 'signin'
-%section.qa-terms-settings.settings.as-terms.no-animate#js-terms-settings{ class: ('expanded' if expanded_by_default?) }
+%section.settings.as-terms.no-animate#js-terms-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Terms of Service and Privacy Policy')
diff --git a/app/views/layouts/nav/sidebar/_admin.html.haml b/app/views/layouts/nav/sidebar/_admin.html.haml
index f912a32ee1a..5f15ba87729 100644
--- a/app/views/layouts/nav/sidebar/_admin.html.haml
+++ b/app/views/layouts/nav/sidebar/_admin.html.haml
@@ -1,4 +1,4 @@
-.nav-sidebar{ class: ("sidebar-collapsed-desktop" if collapsed_sidebar?) }
+.nav-sidebar.qa-admin-sidebar{ class: ("sidebar-collapsed-desktop" if collapsed_sidebar?) }
.nav-sidebar-inner-scroll
.context-header
= link_to admin_root_path, title: _('Admin Overview') do
@@ -197,10 +197,10 @@
= link_to admin_application_settings_path do
.nav-icon-container
= sprite_icon('settings')
- %span.nav-item-name
+ %span.nav-item-name.qa-admin-settings-item
= _('Settings')
- %ul.sidebar-sub-level-items
+ %ul.sidebar-sub-level-items.qa-admin-sidebar-submenu
= nav_link(controller: :application_settings, html_options: { class: "fly-out-top-item" } ) do
= link_to admin_application_settings_path do
%strong.fly-out-top-item-name
@@ -215,7 +215,7 @@
%span
= _('Integrations')
= nav_link(path: 'application_settings#repository') do
- = link_to repository_admin_application_settings_path, title: _('Repository') do
+ = link_to repository_admin_application_settings_path, title: _('Repository'), class: 'qa-admin-settings-repository-item' do
%span
= _('Repository')
- if template_exists?('admin/application_settings/templates')
diff --git a/qa/qa.rb b/qa/qa.rb
index 952084085d5..227d4424b09 100644
--- a/qa/qa.rb
+++ b/qa/qa.rb
@@ -236,8 +236,11 @@ module QA
module Admin
module Settings
- autoload :RepositoryStorage, 'qa/page/admin/settings/repository_storage'
- autoload :Main, 'qa/page/admin/settings/main'
+ autoload :Repository, 'qa/page/admin/settings/repository'
+
+ module Component
+ autoload :RepositoryStorage, 'qa/page/admin/settings/component/repository_storage'
+ end
end
end
diff --git a/qa/qa/page/admin/settings/component/repository_storage.rb b/qa/qa/page/admin/settings/component/repository_storage.rb
new file mode 100644
index 00000000000..2ed0cd73aa3
--- /dev/null
+++ b/qa/qa/page/admin/settings/component/repository_storage.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Admin
+ module Settings
+ module Component
+ class RepositoryStorage < Page::Base
+ view 'app/views/admin/application_settings/_repository_storage.html.haml' do
+ element :hashed_storage_checkbox
+ element :save_changes_button
+ end
+
+ def enable_hashed_storage
+ check_element :hashed_storage_checkbox
+ end
+
+ def save_settings
+ click_element :save_changes_button
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/admin/settings/main.rb b/qa/qa/page/admin/settings/main.rb
deleted file mode 100644
index 73034ffe0d8..00000000000
--- a/qa/qa/page/admin/settings/main.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-module QA
- module Page
- module Admin
- module Settings
- class Main < Page::Base
- include QA::Page::Settings::Common
-
- view 'app/views/admin/application_settings/show.html.haml' do
- element :terms_settings
- end
-
- def expand_repository_storage(&block)
- expand_section(:terms_settings) do
- RepositoryStorage.perform(&block)
- end
- end
- end
- end
- end
- end
-end
diff --git a/qa/qa/page/admin/settings/repository.rb b/qa/qa/page/admin/settings/repository.rb
new file mode 100644
index 00000000000..b7f1deb21bd
--- /dev/null
+++ b/qa/qa/page/admin/settings/repository.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Admin
+ module Settings
+ class Repository < Page::Base
+ include QA::Page::Settings::Common
+
+ view 'app/views/admin/application_settings/repository.html.haml' do
+ element :repository_storage_settings
+ end
+
+ def expand_repository_storage(&block)
+ expand_section(:repository_storage_settings) do
+ Component::RepositoryStorage.perform(&block)
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/admin/settings/repository_storage.rb b/qa/qa/page/admin/settings/repository_storage.rb
deleted file mode 100644
index 68dd23a41e1..00000000000
--- a/qa/qa/page/admin/settings/repository_storage.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-module QA
- module Page
- module Admin
- module Settings
- class RepositoryStorage < Page::Base
- view 'app/views/admin/application_settings/_repository_storage.html.haml' do
- element :submit, "submit 'Save changes'"
- element :hashed_storage,
- 'Use hashed storage paths for newly created and renamed projects'
- end
-
- def enable_hashed_storage
- check 'Use hashed storage paths for newly created and renamed projects'
- end
-
- def save_settings
- click_button 'Save changes'
- end
- end
- end
- end
- end
-end
diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb
index a87536671c6..142707521df 100644
--- a/qa/qa/page/base.rb
+++ b/qa/qa/page/base.rb
@@ -68,6 +68,10 @@ module QA
all(element_selector_css(name))
end
+ def check_element(name)
+ find_element(name).set(true)
+ end
+
def click_element(name)
find_element(name).click
end
@@ -86,6 +90,10 @@ module QA
end
end
+ def scroll_to_element(name, *args)
+ scroll_to(element_selector_css(name), *args)
+ end
+
def element_selector_css(name)
Page::Element.new(name).selector_css
end
diff --git a/qa/qa/page/menu/admin.rb b/qa/qa/page/menu/admin.rb
index 573b98f7386..bf05a912bc6 100644
--- a/qa/qa/page/menu/admin.rb
+++ b/qa/qa/page/menu/admin.rb
@@ -3,11 +3,41 @@ module QA
module Menu
class Admin < Page::Base
view 'app/views/layouts/nav/sidebar/_admin.html.haml' do
- element :settings, "_('Settings')"
+ element :admin_sidebar
+ element :admin_sidebar_submenu
+ element :admin_settings_item
+ element :admin_settings_repository_item
end
- def go_to_settings
- click_link 'Settings'
+ def go_to_repository_settings
+ hover_settings do
+ within_submenu do
+ click_element :admin_settings_repository_item
+ end
+ end
+ end
+
+ private
+
+ def hover_settings
+ within_sidebar do
+ scroll_to_element(:admin_settings_item)
+ find_element(:admin_settings_item).hover
+
+ yield
+ end
+ end
+
+ def within_sidebar
+ within_element(:admin_sidebar) do
+ yield
+ end
+ end
+
+ def within_submenu
+ within_element(:admin_sidebar_submenu) do
+ yield
+ end
end
end
end
diff --git a/qa/spec/page/validator_spec.rb b/qa/spec/page/validator_spec.rb
index 55957649904..0ae6e66d767 100644
--- a/qa/spec/page/validator_spec.rb
+++ b/qa/spec/page/validator_spec.rb
@@ -30,7 +30,7 @@ describe QA::Page::Validator do
let(:view) { spy('view') }
before do
- allow(QA::Page::Admin::Settings::Main)
+ allow(QA::Page::Admin::Settings::Repository)
.to receive(:views).and_return([view])
end