Commit f6097cbf authored by Grzegorz Bizon's avatar Grzegorz Bizon

Merge branch...

Merge branch '50974-qa-group-filtering-fails-when-filter-text-field-is-filled-before-the-group-list-is-fully-loaded-leading-to-path-has-already-been-taken-error-qa-tries-to-create-a-bew-subgroup-qa' into 'master'

Resolve "[QA] Group filtering fails when filter text field is filled before the group list is fully loaded leading to "Path has already been taken" error QA tries to create a bew subgroup"

Closes #50974

See merge request gitlab-org/gitlab-ce!21475
parents 464b0de1 70b7cf35
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
</script> </script>
<template> <template>
<div class="groups-list-tree-container"> <div class="groups-list-tree-container qa-groups-list-tree-container">
<div <div
v-if="searchEmpty" v-if="searchEmpty"
class="has-no-search-results" class="has-no-search-results"
......
.groups-empty-state .groups-empty-state.qa-groups-empty-state
= custom_icon("icon_empty_groups") = custom_icon("icon_empty_groups")
.text-content .text-content
......
...@@ -250,6 +250,7 @@ module QA ...@@ -250,6 +250,7 @@ module QA
module Component module Component
autoload :ClonePanel, 'qa/page/component/clone_panel' autoload :ClonePanel, 'qa/page/component/clone_panel'
autoload :Dropzone, 'qa/page/component/dropzone' autoload :Dropzone, 'qa/page/component/dropzone'
autoload :GroupsFilter, 'qa/page/component/groups_filter'
autoload :Select2, 'qa/page/component/select2' autoload :Select2, 'qa/page/component/select2'
end end
end end
......
...@@ -2,7 +2,7 @@ module QA ...@@ -2,7 +2,7 @@ module QA
module Factory module Factory
module Resource module Resource
class Group < Factory::Base class Group < Factory::Base
attr_writer :path, :description attr_accessor :path, :description
dependency Factory::Resource::Sandbox, as: :sandbox dependency Factory::Resource::Sandbox, as: :sandbox
...@@ -14,17 +14,23 @@ module QA ...@@ -14,17 +14,23 @@ module QA
def fabricate! def fabricate!
sandbox.visit! sandbox.visit!
Page::Group::Show.perform do |page| Page::Group::Show.perform do |group_show|
if page.has_subgroup?(@path) if group_show.has_subgroup?(path)
page.go_to_subgroup(@path) group_show.go_to_subgroup(path)
else else
page.go_to_new_subgroup group_show.go_to_new_subgroup
Page::Group::New.perform do |group| Page::Group::New.perform do |group_new|
group.set_path(@path) group_new.set_path(path)
group.set_description(@description) group_new.set_description(description)
group.set_visibility('Public') group_new.set_visibility('Public')
group.create group_new.create
end
# Ensure that the group was actually created
group_show.wait(time: 1) do
group_show.has_text?(path) &&
group_show.has_new_project_or_subgroup_dropdown?
end end
end end
end end
......
# frozen_string_literal: true
module QA
module Page
module Component
module GroupsFilter
def self.included(base)
base.view 'app/views/shared/groups/_search_form.html.haml' do
element :groups_filter, 'search_field_tag :filter'
element :groups_filter_placeholder, 'Filter by name...'
end
base.view 'app/views/shared/groups/_empty_state.html.haml' do
element :groups_empty_state
end
base.view 'app/assets/javascripts/groups/components/groups.vue' do
element :groups_list_tree_container
end
end
private
def filter_by_name(name)
wait(reload: false) do
page.has_css?(element_selector_css(:groups_empty_state)) ||
page.has_css?(element_selector_css(:groups_list_tree_container))
end
fill_in 'Filter by name...', with: name
end
end
end
end
end
...@@ -2,19 +2,12 @@ module QA ...@@ -2,19 +2,12 @@ module QA
module Page module Page
module Dashboard module Dashboard
class Groups < Page::Base class Groups < Page::Base
view 'app/views/shared/groups/_search_form.html.haml' do include Page::Component::GroupsFilter
element :groups_filter, 'search_field_tag :filter'
element :groups_filter_placeholder, 'Filter by name...'
end
view 'app/views/dashboard/_groups_head.html.haml' do view 'app/views/dashboard/_groups_head.html.haml' do
element :new_group_button, 'link_to _("New group")' element :new_group_button, 'link_to _("New group")'
end end
def filter_by_name(name)
fill_in 'Filter by name...', with: name
end
def has_group?(name) def has_group?(name)
filter_by_name(name) filter_by_name(name)
......
...@@ -3,6 +3,7 @@ module QA ...@@ -3,6 +3,7 @@ module QA
module Dashboard module Dashboard
class Projects < Page::Base class Projects < Page::Base
view 'app/views/dashboard/projects/index.html.haml' view 'app/views/dashboard/projects/index.html.haml'
view 'app/views/shared/projects/_search_form.html.haml' do view 'app/views/shared/projects/_search_form.html.haml' do
element :form_filter_by_name, /form_tag.+id: 'project-filter-form'/ element :form_filter_by_name, /form_tag.+id: 'project-filter-form'/
end end
...@@ -13,6 +14,8 @@ module QA ...@@ -13,6 +14,8 @@ module QA
find_link(text: name).click find_link(text: name).click
end end
private
def filter_by_name(name) def filter_by_name(name)
page.within('form#project-filter-form') do page.within('form#project-filter-form') do
fill_in :name, with: name fill_in :name, with: name
......
...@@ -2,6 +2,8 @@ module QA ...@@ -2,6 +2,8 @@ module QA
module Page module Page
module Group module Group
class Show < Page::Base class Show < Page::Base
include Page::Component::GroupsFilter
view 'app/views/groups/show.html.haml' do view 'app/views/groups/show.html.haml' do
element :new_project_or_subgroup_dropdown, '.new-project-subgroup' element :new_project_or_subgroup_dropdown, '.new-project-subgroup'
element :new_project_or_subgroup_dropdown_toggle, '.dropdown-toggle' element :new_project_or_subgroup_dropdown_toggle, '.dropdown-toggle'
...@@ -21,8 +23,8 @@ module QA ...@@ -21,8 +23,8 @@ module QA
click_link name click_link name
end end
def filter_by_name(name) def has_new_project_or_subgroup_dropdown?
fill_in 'Filter by name...', with: name page.has_css?(element_selector_css(:new_project_or_subgroup_dropdown))
end end
def has_subgroup?(name) def has_subgroup?(name)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment