diff --git a/app/assets/javascripts/boards/components/board_content_sidebar.vue b/app/assets/javascripts/boards/components/board_content_sidebar.vue index 16a8a9d253fd7870db499474ccad933baa0c701c..35e308cfe757427627a4fbdc923a51a7716cfd04 100644 --- a/app/assets/javascripts/boards/components/board_content_sidebar.vue +++ b/app/assets/javascripts/boards/components/board_content_sidebar.vue @@ -117,7 +117,6 @@ export default { :issuable-type="issuableType" class="gl-mt-5" data-testid="iteration-edit" - data-qa-selector="iteration_container" /> </template> <template v-else> @@ -129,7 +128,6 @@ export default { :issuable-type="issuableType" class="gl-mt-5" data-testid="iteration-edit" - data-qa-selector="iteration_container" /> </template> </div> diff --git a/app/assets/javascripts/sidebar/components/sidebar_dropdown_widget.vue b/app/assets/javascripts/sidebar/components/sidebar_dropdown_widget.vue index c80ccc928b3c17fd915ca8c269e963369c5bec9e..719ea6cd2ac393d3b84f7a9ee624677f42b86f68 100644 --- a/app/assets/javascripts/sidebar/components/sidebar_dropdown_widget.vue +++ b/app/assets/javascripts/sidebar/components/sidebar_dropdown_widget.vue @@ -300,7 +300,11 @@ export default { :attributeUrl="attributeUrl" :currentAttribute="currentAttribute" > - <gl-link class="gl-text-gray-900! gl-font-weight-bold" :href="attributeUrl"> + <gl-link + class="gl-text-gray-900! gl-font-weight-bold" + :href="attributeUrl" + :data-qa-selector="`${issuableAttribute}_link`" + > {{ attributeTitle }} </gl-link> </slot> diff --git a/app/views/shared/issuable/_sidebar.html.haml b/app/views/shared/issuable/_sidebar.html.haml index 416c788603a1f3d3b647ca41e7240cc496132b78..2395daf276d76429713afe14416bd50b3ebe4f92 100644 --- a/app/views/shared/issuable/_sidebar.html.haml +++ b/app/views/shared/issuable/_sidebar.html.haml @@ -61,7 +61,7 @@ = dropdown_tag('Milestone', options: { title: _('Assign milestone'), toggle_class: 'js-milestone-select js-extra-options', filter: true, dropdown_class: 'dropdown-menu-selectable', placeholder: _('Search milestones'), data: { show_no: true, field_name: "#{issuable_type}[milestone_id]", project_id: issuable_sidebar[:project_id], issuable_id: issuable_sidebar[:id], ability_name: issuable_type, issue_update: issuable_sidebar[:issuable_json_path], use_id: true, default_no: true, selected: milestone[:title], null_default: true, display: 'static' }}) - if @project.group.present? && issuable_sidebar[:supports_iterations] - .block{ class: 'gl-pt-0!' } + .block{ class: 'gl-pt-0!', data: { qa_selector: 'iteration_container' } } = render_if_exists 'shared/issuable/iteration_select', can_edit: can_edit_issuable.to_s, group_path: @project.group.full_path, project_path: issuable_sidebar[:project_full_path], issue_iid: issuable_sidebar[:iid], issuable_type: issuable_type - if issuable_sidebar[:supports_time_tracking] diff --git a/ee/app/assets/javascripts/sidebar/components/iteration_dropdown.vue b/ee/app/assets/javascripts/sidebar/components/iteration_dropdown.vue index 95c2a77c4f3cf7f1800fb3a90599160bed74d43b..2f40f453429b7c27659258e94c74c7caffb2ee1b 100644 --- a/ee/app/assets/javascripts/sidebar/components/iteration_dropdown.vue +++ b/ee/app/assets/javascripts/sidebar/components/iteration_dropdown.vue @@ -108,24 +108,38 @@ export default { </script> <template> - <div data-qa-selector="iteration_container"> - <gl-dropdown :text="title" class="gl-w-full" @show="onDropdownShow"> - <gl-dropdown-section-header class="gl-display-flex! gl-justify-content-center">{{ - __('Assign Iteration') - }}</gl-dropdown-section-header> - <gl-search-box-by-type v-model="searchTerm" /> + <gl-dropdown :text="title" class="gl-w-full" @show="onDropdownShow"> + <gl-dropdown-section-header class="gl-display-flex! gl-justify-content-center">{{ + __('Assign Iteration') + }}</gl-dropdown-section-header> + <gl-search-box-by-type v-model="searchTerm" /> + <gl-dropdown-item + :is-check-item="true" + :is-checked="isIterationChecked($options.noIteration.id)" + @click="onClick($options.noIteration)" + > + {{ $options.noIteration.title }} + </gl-dropdown-item> + <gl-dropdown-divider /> + <gl-loading-icon v-if="$apollo.queries.iterations.loading" /> + <template v-else-if="!glFeatures.iterationCadences"> <gl-dropdown-item + v-for="iterationItem in iterations" + :key="iterationItem.id" :is-check-item="true" - :is-checked="isIterationChecked($options.noIteration.id)" - @click="onClick($options.noIteration)" + :is-checked="isIterationChecked(iterationItem.id)" + @click="onClick(iterationItem)" + >{{ iterationItem.title }}</gl-dropdown-item > - {{ $options.noIteration.title }} - </gl-dropdown-item> - <gl-dropdown-divider /> - <gl-loading-icon v-if="$apollo.queries.iterations.loading" /> - <template v-else-if="!glFeatures.iterationCadences"> + </template> + <template v-else> + <template v-for="(cadence, index) in iterationCadences"> + <gl-dropdown-divider v-if="index !== 0" :key="index" /> + <gl-dropdown-section-header :key="cadence.title"> + {{ cadence.title }} + </gl-dropdown-section-header> <gl-dropdown-item - v-for="iterationItem in iterations" + v-for="iterationItem in cadence.iterations" :key="iterationItem.id" :is-check-item="true" :is-checked="isIterationChecked(iterationItem.id)" @@ -133,22 +147,6 @@ export default { >{{ iterationItem.title }}</gl-dropdown-item > </template> - <template v-else> - <template v-for="(cadence, index) in iterationCadences"> - <gl-dropdown-divider v-if="index !== 0" :key="index" /> - <gl-dropdown-section-header :key="cadence.title"> - {{ cadence.title }} - </gl-dropdown-section-header> - <gl-dropdown-item - v-for="iterationItem in cadence.iterations" - :key="iterationItem.id" - :is-check-item="true" - :is-checked="isIterationChecked(iterationItem.id)" - @click="onClick(iterationItem)" - >{{ iterationItem.title }}</gl-dropdown-item - > - </template> - </template> - </gl-dropdown> - </div> + </template> + </gl-dropdown> </template> diff --git a/ee/spec/frontend/boards/components/__snapshots__/board_content_sidebar_spec.js.snap b/ee/spec/frontend/boards/components/__snapshots__/board_content_sidebar_spec.js.snap index cac138dccc74acff19e98525dcb94c18b65f2525..5068714ba43a12f0b6f49f46669b1a4a77efea29 100644 --- a/ee/spec/frontend/boards/components/__snapshots__/board_content_sidebar_spec.js.snap +++ b/ee/spec/frontend/boards/components/__snapshots__/board_content_sidebar_spec.js.snap @@ -34,7 +34,6 @@ exports[`ee/BoardContentSidebar matches the snapshot 1`] = ` <sidebardropdownwidget-stub attrworkspacepath="gitlab-org" class="gl-mt-5" - data-qa-selector="iteration_container" data-testid="iteration-edit" iid="27" issuableattribute="iteration" diff --git a/ee/spec/frontend/sidebar/components/__snapshots__/iteration_dropdown_spec.js.snap b/ee/spec/frontend/sidebar/components/__snapshots__/iteration_dropdown_spec.js.snap index 24b3d16f542713bb7451b1b618005954f2f044e2..e493847c5881f09cb377af2ecaf8b3d704f5bdc1 100644 --- a/ee/spec/frontend/sidebar/components/__snapshots__/iteration_dropdown_spec.js.snap +++ b/ee/spec/frontend/sidebar/components/__snapshots__/iteration_dropdown_spec.js.snap @@ -31,8 +31,8 @@ exports[`IterationDropdown default shows gl-dropdown 1`] = ` secondarytext="" > - No iteration - + No iteration + </gl-dropdown-item-stub> <gl-dropdown-divider-stub /> diff --git a/qa/qa/ee/page/project/issue/show.rb b/qa/qa/ee/page/project/issue/show.rb index 03b51c6176d8dca4a1d3bdca712e62e9c8cedb80..78bfba83a2d8134a8262ef681f2e76947db8778e 100644 --- a/qa/qa/ee/page/project/issue/show.rb +++ b/qa/qa/ee/page/project/issue/show.rb @@ -16,6 +16,14 @@ def self.prepended(base) element :edit_link end + view 'app/assets/javascripts/sidebar/components/sidebar_dropdown_widget.vue' do + element :iteration_link, "`${issuableAttribute}_link`" # rubocop:disable QA/ElementWithPattern + end + + view 'app/views/shared/issuable/_sidebar.html.haml' do + element :iteration_container + end + view 'ee/app/assets/javascripts/sidebar/components/weight/weight.vue' do element :edit_weight_link element :remove_weight_link diff --git a/qa/qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb b/qa/qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb index 39d114d5ea6b7fdc42612ade9c310d783ca534de..90cda5a3aed8d2c22dacff6925e558c392b8213a 100644 --- a/qa/qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb +++ b/qa/qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb @@ -23,7 +23,7 @@ module QA Flow::Login.sign_in end - it 'assigns a group iteration to an existing issue', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1173', quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/332484', type: :stale } do + it 'assigns a group iteration to an existing issue', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1173' do issue.visit! Page::Project::Issue::Show.perform do |issue|