diff --git a/app/assets/javascripts/content_editor/components/wrappers/code_block.vue b/app/assets/javascripts/content_editor/components/wrappers/code_block.vue index 9a4238b1af7370956807da8307c1de0375a05c7d..a87c34dcf091c1761450c10de0180312f8d48ce0 100644 --- a/app/assets/javascripts/content_editor/components/wrappers/code_block.vue +++ b/app/assets/javascripts/content_editor/components/wrappers/code_block.vue @@ -295,7 +295,7 @@ export default { 'line_content new code': isCodeSuggestion, [themeClass]: isCodeSuggestion, }" - spellcheck="false" + :spellcheck="false" data-testid="suggestion-field" /> </node-view-wrapper> diff --git a/app/assets/javascripts/content_editor/components/wrappers/html_comment.vue b/app/assets/javascripts/content_editor/components/wrappers/html_comment.vue index e109458c40af898f36f6a1975e59bad9ce1b64f2..35ebff183d3ce47defb5884d4c1f245b225874ad 100644 --- a/app/assets/javascripts/content_editor/components/wrappers/html_comment.vue +++ b/app/assets/javascripts/content_editor/components/wrappers/html_comment.vue @@ -28,7 +28,7 @@ export default { 'gl-border-dashed gl-border-default': !selected, }" > - <span contenteditable="false" class="!gl-whitespace-pre-wrap gl-italic gl-text-subtle">{{ + <span :contenteditable="false" class="!gl-whitespace-pre-wrap gl-italic gl-text-subtle">{{ node.attrs.description }}</span> </node-view-wrapper> diff --git a/app/assets/javascripts/content_editor/components/wrappers/image.vue b/app/assets/javascripts/content_editor/components/wrappers/image.vue index 355da809f198762d6311599a5b54620ba8bdd332..dcced1fea04f54c1b9b6812f58191d7efbcb58c6 100644 --- a/app/assets/javascripts/content_editor/components/wrappers/image.vue +++ b/app/assets/javascripts/content_editor/components/wrappers/image.vue @@ -116,7 +116,7 @@ export default { ></span> <img ref="image" - draggable="true" + :draggable="true" data-drag-handle :src="node.attrs.src" :alt="node.attrs.alt" diff --git a/app/assets/javascripts/content_editor/components/wrappers/playable.vue b/app/assets/javascripts/content_editor/components/wrappers/playable.vue index 5ecd01945d3a546e5c878a21448f7be14c922b2c..408161cdd2865e0a5471663892b82c1c6bedf6dc 100644 --- a/app/assets/javascripts/content_editor/components/wrappers/playable.vue +++ b/app/assets/javascripts/content_editor/components/wrappers/playable.vue @@ -35,7 +35,7 @@ export default { :src="node.attrs.src" controls="true" data-setup="{}" - draggable="true" + :draggable="true" data-drag-handle="" :data-title="node.attrs.title || node.attrs.alt" /> @@ -43,7 +43,7 @@ export default { :href="node.attrs.src" class="with-attachment-icon" target="_blank" - draggable="true" + :draggable="true" data-drag-handle="" > {{ node.attrs.title || node.attrs.alt }} diff --git a/scripts/frontend/quarantined_vue3_specs.txt b/scripts/frontend/quarantined_vue3_specs.txt index bca1ca5caac6ed832afee9d58b5bd297fc724d7f..0f6383d2cc5c8b4529b5fab7abf60b8c939354dc 100644 --- a/scripts/frontend/quarantined_vue3_specs.txt +++ b/scripts/frontend/quarantined_vue3_specs.txt @@ -125,12 +125,8 @@ spec/frontend/clusters/components/new_cluster_spec.js spec/frontend/clusters/components/remove_cluster_confirmation_spec.js spec/frontend/clusters_list/components/delete_agent_button_spec.js spec/frontend/content_editor/components/bubble_menus/media_bubble_menu_spec.js -spec/frontend/content_editor/components/toolbar_button_spec.js spec/frontend/content_editor/components/wrappers/code_block_spec.js -spec/frontend/content_editor/components/wrappers/html_comment_spec.js -spec/frontend/content_editor/components/wrappers/image_spec.js spec/frontend/content_editor/components/wrappers/paragraph_spec.js -spec/frontend/content_editor/components/wrappers/playable_spec.js spec/frontend/content_editor/components/wrappers/table_cell_base_spec.js spec/frontend/custom_emoji/components/list_spec.js spec/frontend/design_management/components/design_notes/design_reply_form_spec.js @@ -147,10 +143,8 @@ spec/frontend/feature_flags/components/strategies/percent_rollout_spec.js spec/frontend/feature_flags/components/strategy_spec.js spec/frontend/gitlab_version_check/index_spec.js spec/frontend/glql/components/common/facade_spec.js -spec/frontend/glql/components/presenters/link_spec.js spec/frontend/glql/components/presenters/list_spec.js spec/frontend/glql/components/presenters/table_spec.js -spec/frontend/glql/components/presenters/text_spec.js spec/frontend/glql/core/presenter_spec.js spec/frontend/groups/components/transfer_group_form_spec.js spec/frontend/helpers/init_simple_app_helper_spec.js diff --git a/spec/frontend/content_editor/components/toolbar_button_spec.js b/spec/frontend/content_editor/components/toolbar_button_spec.js index b9cf631fb40911b43787f59922dc2b58045f834d..b8dab0d8bd13bed71ac817025c155c2f736e29ce 100644 --- a/spec/frontend/content_editor/components/toolbar_button_spec.js +++ b/spec/frontend/content_editor/components/toolbar_button_spec.js @@ -93,7 +93,7 @@ describe('content_editor/components/toolbar_button', () => { buildWrapper({ editorCommand }); - await findButton().trigger('click'); + await findButton().vm.$emit('click'); expect(mockCommands[editorCommand]).toHaveBeenCalled(); expect(mockCommands.focus).toHaveBeenCalled(); @@ -107,7 +107,7 @@ describe('content_editor/components/toolbar_button', () => { buildWrapper(); - await findButton().trigger('click'); + await findButton().vm.$emit('click'); expect(mockCommands[editorCommand]).not.toHaveBeenCalled(); expect(wrapper.emitted().execute).toHaveLength(1); diff --git a/spec/frontend/content_editor/components/wrappers/image_spec.js b/spec/frontend/content_editor/components/wrappers/image_spec.js index 44905ef397fe19f45a419ade54c429c2dc9f7dc4..c3e467cfe8ce16ddb583a6e11b1f5862039f0846 100644 --- a/spec/frontend/content_editor/components/wrappers/image_spec.js +++ b/spec/frontend/content_editor/components/wrappers/image_spec.js @@ -37,8 +37,8 @@ describe('content/components/wrappers/image_spec', () => { attrs: { src: 'image.png', alt: 'My Image', width: 200, height: 200 }, }); + expect(findImage().element.src).toBe('image.png'); expect(findImage().attributes()).toMatchObject({ - src: 'image.png', alt: 'My Image', height: '200', width: '200', @@ -57,8 +57,8 @@ describe('content/components/wrappers/image_spec', () => { it('sets width and height to auto if not provided', () => { createWrapper({ type: { name: 'image' }, attrs: { src: 'image.png', alt: 'My Image' } }); + expect(findImage().element.src).toBe('image.png'); expect(findImage().attributes()).toMatchObject({ - src: 'image.png', alt: 'My Image', height: 'auto', width: 'auto', diff --git a/spec/frontend/glql/components/presenters/link_spec.js b/spec/frontend/glql/components/presenters/link_spec.js index 5feb9de1c74538ea034aba20a19aa99ef3145893..25cb52c29dc49f783cd1f12da22349f0e70ef15b 100644 --- a/spec/frontend/glql/components/presenters/link_spec.js +++ b/spec/frontend/glql/components/presenters/link_spec.js @@ -14,39 +14,4 @@ describe('LinkPresenter', () => { expect(wrapper.text()).toBe(linkText); expect(wrapper.attributes('href')).toBe(linkHref); }); - - it.each` - scenario | data - ${'for data without a webUrl'} | ${{ title: 'Issue 1' }} - ${'for data without a title'} | ${{ webUrl: 'https://gitlab.com' }} - `('$scenario, it shows a warning in console', ({ data }) => { - jest.spyOn(console, 'error').mockImplementation(() => {}); - - shallowMountExtended(LinkPresenter, { propsData: { data } }); - - // eslint-disable-next-line no-console - expect(console.error.mock.calls[0][0]).toContain( - '[Vue warn]: Invalid prop: custom validator check failed for prop "data"', - ); - }); - - describe.each` - dataType | data - ${'String'} | ${'Hello, world!'} - ${'Number'} | ${100} - ${'Array'} | ${[1, 2, 3]} - `('for data type $dataType', ({ dataType, data }) => { - beforeEach(() => { - jest.spyOn(console, 'error').mockImplementation(() => {}); - }); - - it('shows a warning in console for mismatched propType', () => { - shallowMountExtended(LinkPresenter, { propsData: { data } }); - - // eslint-disable-next-line no-console - expect(console.error.mock.calls[0][0]).toContain( - `[Vue warn]: Invalid prop: type check failed for prop "data". Expected Object, got ${dataType}`, - ); - }); - }); }); diff --git a/spec/frontend/glql/components/presenters/text_spec.js b/spec/frontend/glql/components/presenters/text_spec.js index 62038204fd8808bdb2a4fa261157764d6eec5925..def7e07f310a7e64df6609b78795395b68dbd5fd 100644 --- a/spec/frontend/glql/components/presenters/text_spec.js +++ b/spec/frontend/glql/components/presenters/text_spec.js @@ -11,25 +11,4 @@ describe('TextPresenter', () => { expect(wrapper.text()).toBe(data.toString()); }); - - describe.each` - dataType | data - ${'Null'} | ${null} - ${'Undefined'} | ${undefined} - ${'Object'} | ${{ some: 'object' }} - ${'Array'} | ${[1, 2, 3]} - `('for data type $dataType', ({ dataType, data }) => { - beforeEach(() => { - jest.spyOn(console, 'error').mockImplementation(() => {}); - }); - - it('shows a warning in console for mismatched propType', () => { - shallowMountExtended(TextPresenter, { propsData: { data } }); - - // eslint-disable-next-line no-console - expect(console.error.mock.calls[0][0]).toContain( - `[Vue warn]: Invalid prop: type check failed for prop "data". Expected String, Number, got ${dataType}`, - ); - }); - }); });