diff --git a/.rubocop_todo/cop/experiments_test_coverage.yml b/.rubocop_todo/cop/experiments_test_coverage.yml deleted file mode 100644 index f733851a80e8dcd46948622a48c1b894c2598a8d..0000000000000000000000000000000000000000 --- a/.rubocop_todo/cop/experiments_test_coverage.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -Cop/ExperimentsTestCoverage: - Exclude: - - 'app/controllers/groups/boards_controller.rb' - - 'app/controllers/projects/boards_controller.rb' diff --git a/app/assets/javascripts/boards/components/board_top_bar.vue b/app/assets/javascripts/boards/components/board_top_bar.vue index 9491f1ab41d534bb0b6f001c94ddb56a9ab94af6..37fb8b307461840325d414dacac4970b0654f352 100644 --- a/app/assets/javascripts/boards/components/board_top_bar.vue +++ b/app/assets/javascripts/boards/components/board_top_bar.vue @@ -5,7 +5,6 @@ import IssueBoardFilteredSearch from 'ee_else_ce/boards/components/issue_board_f import { getBoardQuery } from 'ee_else_ce/boards/boards_util'; import { setError } from '../graphql/cache_updates'; import ConfigToggle from './config_toggle.vue'; -import NewBoardButton from './new_board_button.vue'; import ToggleFocus from './toggle_focus.vue'; import BoardOptions from './board_options.vue'; @@ -15,7 +14,6 @@ export default { BoardsSelector, IssueBoardFilteredSearch, ConfigToggle, - NewBoardButton, ToggleFocus, EpicBoardFilteredSearch: () => import('ee_component/boards/components/epic_filtered_search.vue'), @@ -105,7 +103,6 @@ export default { @updateBoard="$emit('updateBoard', $event)" @showBoardModal="setCurrentForm" /> - <new-board-button @showBoardModal="setCurrentForm" /> <div class="gl-flex md:!gl-hidden gl-gap-2 gl-align-items-center"> <board-options :show-epic-lane-option="swimlanesFeatureAvailable && isSignedIn" diff --git a/app/assets/javascripts/boards/components/new_board_button.vue b/app/assets/javascripts/boards/components/new_board_button.vue deleted file mode 100644 index 1fc9b55b40d34f60ce70d09d1caf773948ee53d3..0000000000000000000000000000000000000000 --- a/app/assets/javascripts/boards/components/new_board_button.vue +++ /dev/null @@ -1,49 +0,0 @@ -<script> -import { GlButton, GlModalDirective } from '@gitlab/ui'; -import { formType } from '~/boards/constants'; -import { s__ } from '~/locale'; -import Tracking from '~/tracking'; -import GitlabExperiment from '~/experimentation/components/gitlab_experiment.vue'; - -export default { - components: { - GlButton, - GitlabExperiment, - }, - directives: { - GlModalDirective, - }, - mixins: [Tracking.mixin()], - inject: ['multipleIssueBoardsAvailable', 'canAdminBoard'], - computed: { - canShowCreateButton() { - return this.canAdminBoard && this.multipleIssueBoardsAvailable; - }, - createButtonText() { - return s__('Boards|New board'); - }, - }, - methods: { - showDialog() { - this.track('click_button', { label: 'create_board' }); - this.$emit('showBoardModal', formType.new); - }, - }, -}; -</script> - -<template> - <gitlab-experiment name="prominent_create_board_btn"> - <template #control> </template> - <template #candidate> - <div - v-if="canShowCreateButton" - class="gl-ml-1 gl-mr-3 gl-display-flex gl-align-items-flex-start" - > - <gl-button @click.prevent="showDialog"> - {{ createButtonText }} - </gl-button> - </div> - </template> - </gitlab-experiment> -</template> diff --git a/app/controllers/groups/boards_controller.rb b/app/controllers/groups/boards_controller.rb index eb3661ea3d78bb7fe0e79c5b57d66282f2fdb205..1e546908214ac65e654861df760660785b1fa590 100644 --- a/app/controllers/groups/boards_controller.rb +++ b/app/controllers/groups/boards_controller.rb @@ -8,10 +8,6 @@ class Groups::BoardsController < Groups::ApplicationController before_action do push_frontend_feature_flag(:board_multi_select, group) push_frontend_feature_flag(:display_work_item_epic_issue_sidebar, group) - experiment(:prominent_create_board_btn, subject: current_user) do |e| - e.control {} - e.candidate {} - end.run end feature_category :team_planning diff --git a/app/controllers/projects/boards_controller.rb b/app/controllers/projects/boards_controller.rb index 29bc00ae870506ab8c267f4162fff888cd0d8cec..d95f44a2646d3219956afbc66f428c03da1dcea9 100644 --- a/app/controllers/projects/boards_controller.rb +++ b/app/controllers/projects/boards_controller.rb @@ -8,10 +8,6 @@ class Projects::BoardsController < Projects::ApplicationController before_action do push_frontend_feature_flag(:board_multi_select, project) push_frontend_feature_flag(:display_work_item_epic_issue_sidebar, project) - experiment(:prominent_create_board_btn, subject: current_user) do |e| - e.control {} - e.candidate {} - end.run end feature_category :team_planning diff --git a/config/feature_flags/experiment/prominent_create_board_btn.yml b/config/feature_flags/experiment/prominent_create_board_btn.yml deleted file mode 100644 index b54dd25be157f23cf52643717aaffc30aeaabc4f..0000000000000000000000000000000000000000 --- a/config/feature_flags/experiment/prominent_create_board_btn.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: prominent_create_board_btn -introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72683" -rollout_issue_url: "https://gitlab.com/gitlab-org/gitlab/-/issues/343415" -milestone: "14.5" -type: experiment -group: group::product planning -default_enabled: false diff --git a/ee/spec/frontend/boards/components/board_top_bar_spec.js b/ee/spec/frontend/boards/components/board_top_bar_spec.js index e513d322f668a6ee7413d7cae7fe56b714089387..fbc47cc963c969732f69aee652250b4f8a4c9193 100644 --- a/ee/spec/frontend/boards/components/board_top_bar_spec.js +++ b/ee/spec/frontend/boards/components/board_top_bar_spec.js @@ -10,7 +10,6 @@ import BoardTopBar from '~/boards/components/board_top_bar.vue'; import BoardOptions from '~/boards/components/board_options.vue'; import BoardsSelector from '~/boards/components/boards_selector.vue'; import ConfigToggle from '~/boards/components/config_toggle.vue'; -import NewBoardButton from '~/boards/components/new_board_button.vue'; import ToggleFocus from '~/boards/components/toggle_focus.vue'; import { WORKSPACE_GROUP, WORKSPACE_PROJECT } from '~/issues/constants'; @@ -77,10 +76,6 @@ describe('BoardTopBar', () => { expect(wrapper.findComponent(BoardsSelector).exists()).toBe(true); }); - it('renders NewBoardButton component', () => { - expect(wrapper.findComponent(NewBoardButton).exists()).toBe(true); - }); - it('renders ConfigToggle component', () => { expect(wrapper.findComponent(ConfigToggle).exists()).toBe(true); }); diff --git a/locale/gitlab.pot b/locale/gitlab.pot index e14f6d6dc589aac6b1012a8da2e1e69a6426eb7b..51119fa5281bc43d29757d1ee5949e300e4a2238 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -9024,9 +9024,6 @@ msgstr "" msgid "Boards|Move to start of list" msgstr "" -msgid "Boards|New board" -msgstr "" - msgid "Boards|No cadence matches current iteration filter" msgstr "" diff --git a/spec/frontend/boards/components/board_top_bar_spec.js b/spec/frontend/boards/components/board_top_bar_spec.js index 03f5eb244f063dbff8ba07bd1333b69ce7452509..5b8670278d42b93b9f9be060b0e29a0aca26a123 100644 --- a/spec/frontend/boards/components/board_top_bar_spec.js +++ b/spec/frontend/boards/components/board_top_bar_spec.js @@ -9,7 +9,6 @@ import BoardTopBar from '~/boards/components/board_top_bar.vue'; import BoardsSelector from '~/boards/components/boards_selector.vue'; import ConfigToggle from '~/boards/components/config_toggle.vue'; import IssueBoardFilteredSearch from '~/boards/components/issue_board_filtered_search.vue'; -import NewBoardButton from '~/boards/components/new_board_button.vue'; import ToggleFocus from '~/boards/components/toggle_focus.vue'; import * as cacheUpdates from '~/boards/graphql/cache_updates'; import { WORKSPACE_GROUP, WORKSPACE_PROJECT } from '~/issues/constants'; @@ -85,10 +84,6 @@ describe('BoardTopBar', () => { expect(wrapper.findComponent(IssueBoardFilteredSearch).exists()).toBe(true); }); - it('renders NewBoardButton component', () => { - expect(wrapper.findComponent(NewBoardButton).exists()).toBe(true); - }); - it('renders ConfigToggle component', () => { expect(wrapper.findComponent(ConfigToggle).exists()).toBe(true); }); diff --git a/spec/frontend/boards/components/new_board_button_spec.js b/spec/frontend/boards/components/new_board_button_spec.js deleted file mode 100644 index 7971467386367f7d622e57a404add531b15fba31..0000000000000000000000000000000000000000 --- a/spec/frontend/boards/components/new_board_button_spec.js +++ /dev/null @@ -1,66 +0,0 @@ -import { mount } from '@vue/test-utils'; -import { GlButton } from '@gitlab/ui'; -import NewBoardButton from '~/boards/components/new_board_button.vue'; -import { extendedWrapper } from 'helpers/vue_test_utils_helper'; -import { stubExperiments } from 'helpers/experimentation_helper'; - -const FEATURE = 'prominent_create_board_btn'; - -describe('NewBoardButton', () => { - let wrapper; - - const createComponent = (args = {}) => - extendedWrapper( - mount(NewBoardButton, { - provide: { - canAdminBoard: true, - multipleIssueBoardsAvailable: true, - ...args, - }, - }), - ); - - describe('control variant', () => { - beforeAll(() => { - stubExperiments({ [FEATURE]: 'control' }); - }); - - it('renders nothing', () => { - wrapper = createComponent(); - - expect(wrapper.text()).toBe(''); - }); - }); - - describe('candidate variant', () => { - beforeAll(() => { - stubExperiments({ [FEATURE]: 'candidate' }); - }); - - it('renders New board button when `candidate` variant', () => { - wrapper = createComponent(); - - expect(wrapper.text()).toBe('New board'); - }); - - it('renders nothing when `canAdminBoard` is `false`', () => { - wrapper = createComponent({ canAdminBoard: false }); - - expect(wrapper.findComponent(GlButton).exists()).toBe(false); - }); - - it('renders nothing when `multipleIssueBoardsAvailable` is `false`', () => { - wrapper = createComponent({ multipleIssueBoardsAvailable: false }); - - expect(wrapper.findComponent(GlButton).exists()).toBe(false); - }); - - it('emits `showBoardModal` when button is clicked', () => { - wrapper = createComponent(); - - wrapper.findComponent(GlButton).vm.$emit('click', { preventDefault: () => {} }); - - expect(wrapper.emitted('showBoardModal')).toEqual([['new']]); - }); - }); -});