Commit 70b7cf35 authored by Rémy Coutable's avatar Rémy Coutable

[QA] Ensure groups filtering does not happen before the groups list is loaded

Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent 97ee68b1
......@@ -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"
......
.groups-empty-state
.groups-empty-state.qa-groups-empty-state
= custom_icon("icon_empty_groups")
.text-content
......
......@@ -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
......
......@@ -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
......
# 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
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)
......
......@@ -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
......
......@@ -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)
......
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