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
This commit is contained in:
Grzegorz Bizon 2018-09-05 14:05:14 +00:00
commit f6097cbfaa
8 changed files with 62 additions and 22 deletions

View file

@ -37,7 +37,7 @@
</script>
<template>
<div class="groups-list-tree-container">
<div class="groups-list-tree-container qa-groups-list-tree-container">
<div
v-if="searchEmpty"
class="has-no-search-results"

View file

@ -1,4 +1,4 @@
.groups-empty-state
.groups-empty-state.qa-groups-empty-state
= custom_icon("icon_empty_groups")
.text-content

View file

@ -250,6 +250,7 @@ module QA
module Component
autoload :ClonePanel, 'qa/page/component/clone_panel'
autoload :Dropzone, 'qa/page/component/dropzone'
autoload :GroupsFilter, 'qa/page/component/groups_filter'
autoload :Select2, 'qa/page/component/select2'
end
end

View file

@ -2,7 +2,7 @@ module QA
module Factory
module Resource
class Group < Factory::Base
attr_writer :path, :description
attr_accessor :path, :description
dependency Factory::Resource::Sandbox, as: :sandbox
@ -14,17 +14,23 @@ module QA
def fabricate!
sandbox.visit!
Page::Group::Show.perform do |page|
if page.has_subgroup?(@path)
page.go_to_subgroup(@path)
Page::Group::Show.perform do |group_show|
if group_show.has_subgroup?(path)
group_show.go_to_subgroup(path)
else
page.go_to_new_subgroup
group_show.go_to_new_subgroup
Page::Group::New.perform do |group|
group.set_path(@path)
group.set_description(@description)
group.set_visibility('Public')
group.create
Page::Group::New.perform do |group_new|
group_new.set_path(path)
group_new.set_description(description)
group_new.set_visibility('Public')
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

View file

@ -0,0 +1,35 @@
# 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

View file

@ -2,19 +2,12 @@ module QA
module Page
module Dashboard
class Groups < Page::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
include Page::Component::GroupsFilter
view 'app/views/dashboard/_groups_head.html.haml' do
element :new_group_button, 'link_to _("New group")'
end
def filter_by_name(name)
fill_in 'Filter by name...', with: name
end
def has_group?(name)
filter_by_name(name)

View file

@ -3,6 +3,7 @@ module QA
module Dashboard
class Projects < Page::Base
view 'app/views/dashboard/projects/index.html.haml'
view 'app/views/shared/projects/_search_form.html.haml' do
element :form_filter_by_name, /form_tag.+id: 'project-filter-form'/
end
@ -13,6 +14,8 @@ module QA
find_link(text: name).click
end
private
def filter_by_name(name)
page.within('form#project-filter-form') do
fill_in :name, with: name

View file

@ -2,6 +2,8 @@ module QA
module Page
module Group
class Show < Page::Base
include Page::Component::GroupsFilter
view 'app/views/groups/show.html.haml' do
element :new_project_or_subgroup_dropdown, '.new-project-subgroup'
element :new_project_or_subgroup_dropdown_toggle, '.dropdown-toggle'
@ -21,8 +23,8 @@ module QA
click_link name
end
def filter_by_name(name)
fill_in 'Filter by name...', with: name
def has_new_project_or_subgroup_dropdown?
page.has_css?(element_selector_css(:new_project_or_subgroup_dropdown))
end
def has_subgroup?(name)