diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-03-16 21:18:33 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-03-16 21:18:33 +0300 |
commit | f64a639bcfa1fc2bc89ca7db268f594306edfd7c (patch) | |
tree | a2c3c2ebcc3b45e596949db485d6ed18ffaacfa1 /spec/frontend_integration | |
parent | bfbc3e0d6583ea1a91f627528bedc3d65ba4b10f (diff) |
Add latest changes from gitlab-org/gitlab@13-10-stable-eev13.10.0-rc40
Diffstat (limited to 'spec/frontend_integration')
6 files changed, 26 insertions, 30 deletions
diff --git a/spec/frontend_integration/ide/helpers/ide_helper.js b/spec/frontend_integration/ide/helpers/ide_helper.js index 9e6bafc1297..6c09b44d891 100644 --- a/spec/frontend_integration/ide/helpers/ide_helper.js +++ b/spec/frontend_integration/ide/helpers/ide_helper.js @@ -25,6 +25,9 @@ export const getStatusBar = () => document.querySelector('.ide-status-bar'); export const waitForMonacoEditor = () => new Promise((resolve) => window.monaco.editor.onDidCreateEditor(resolve)); +export const waitForEditorModelChange = (instance) => + new Promise((resolve) => instance.onDidChangeModel(resolve)); + export const findMonacoEditor = () => screen.findAllByLabelText(/Editor content;/).then(([x]) => x.closest('.monaco-editor')); diff --git a/spec/frontend_integration/ide/helpers/mock_data.js b/spec/frontend_integration/ide/helpers/mock_data.js index f70739e5ac0..8c9ec74541f 100644 --- a/spec/frontend_integration/ide/helpers/mock_data.js +++ b/spec/frontend_integration/ide/helpers/mock_data.js @@ -4,7 +4,6 @@ export const IDE_DATASET = { committedStateSvgPath: '/test/committed_state.svg', pipelinesEmptyStateSvgPath: '/test/pipelines_empty_state.svg', promotionSvgPath: '/test/promotion.svg', - ciHelpPagePath: '/test/ci_help_page', webIDEHelpPagePath: '/test/web_ide_help_page', clientsidePreviewEnabled: 'true', renderWhitespaceInCode: 'false', diff --git a/spec/frontend_integration/ide/helpers/start.js b/spec/frontend_integration/ide/helpers/start.js index 173a9610c84..cc6abd9e01f 100644 --- a/spec/frontend_integration/ide/helpers/start.js +++ b/spec/frontend_integration/ide/helpers/start.js @@ -1,6 +1,7 @@ +/* global monaco */ + import { TEST_HOST } from 'helpers/test_constants'; import { initIde } from '~/ide'; -import Editor from '~/ide/lib/editor'; import extendStore from '~/ide/stores/extend'; import { IDE_DATASET } from './mock_data'; @@ -18,13 +19,7 @@ export default (container, { isRepoEmpty = false, path = '', mrId = '' } = {}) = const vm = initIde(el, { extendStore }); // We need to dispose of editor Singleton things or tests will bump into eachother - vm.$on('destroy', () => { - if (Editor.editorInstance) { - Editor.editorInstance.modelManager.dispose(); - Editor.editorInstance.dispose(); - Editor.editorInstance = null; - } - }); + vm.$on('destroy', () => monaco.editor.getModels().forEach((model) => model.dispose())); return vm; }; diff --git a/spec/frontend_integration/ide/ide_integration_spec.js b/spec/frontend_integration/ide/ide_integration_spec.js index 3ce88de11fe..5f1a5b0d048 100644 --- a/spec/frontend_integration/ide/ide_integration_spec.js +++ b/spec/frontend_integration/ide/ide_integration_spec.js @@ -96,16 +96,6 @@ describe('WebIDE', () => { let statusBar; let editor; - const waitForEditor = async () => { - editor = await ideHelper.waitForMonacoEditor(); - }; - - const changeEditorPosition = async (lineNumber, column) => { - editor.setPosition({ lineNumber, column }); - - await vm.$nextTick(); - }; - beforeEach(async () => { vm = startWebIDE(container); @@ -134,16 +124,17 @@ describe('WebIDE', () => { // Need to wait for monaco editor to load so it doesn't through errors on dispose await ideHelper.openFile('.gitignore'); - await ideHelper.waitForMonacoEditor(); + await ideHelper.waitForEditorModelChange(editor); await ideHelper.openFile('README.md'); - await ideHelper.waitForMonacoEditor(); + await ideHelper.waitForEditorModelChange(editor); expect(el).toHaveText(markdownPreview); }); describe('when editor position changes', () => { beforeEach(async () => { - await changeEditorPosition(4, 10); + editor.setPosition({ lineNumber: 4, column: 10 }); + await vm.$nextTick(); }); it('shows new line position', () => { @@ -153,7 +144,8 @@ describe('WebIDE', () => { it('updates after rename', async () => { await ideHelper.renameFile('README.md', 'READMEZ.txt'); - await waitForEditor(); + await ideHelper.waitForEditorModelChange(editor); + await vm.$nextTick(); expect(statusBar).toHaveText('1:1'); expect(statusBar).toHaveText('plaintext'); @@ -161,10 +153,10 @@ describe('WebIDE', () => { it('persists position after opening then rename', async () => { await ideHelper.openFile('files/js/application.js'); - await waitForEditor(); + await ideHelper.waitForEditorModelChange(editor); await ideHelper.renameFile('README.md', 'READING_RAINBOW.md'); await ideHelper.openFile('READING_RAINBOW.md'); - await waitForEditor(); + await ideHelper.waitForEditorModelChange(editor); expect(statusBar).toHaveText('4:10'); expect(statusBar).toHaveText('markdown'); @@ -173,7 +165,8 @@ describe('WebIDE', () => { it('persists position after closing', async () => { await ideHelper.closeFile('README.md'); await ideHelper.openFile('README.md'); - await waitForEditor(); + await ideHelper.waitForMonacoEditor(); + await vm.$nextTick(); expect(statusBar).toHaveText('4:10'); expect(statusBar).toHaveText('markdown'); diff --git a/spec/frontend_integration/ide/user_opens_mr_spec.js b/spec/frontend_integration/ide/user_opens_mr_spec.js index 9cf0ff5da56..3ffc5169351 100644 --- a/spec/frontend_integration/ide/user_opens_mr_spec.js +++ b/spec/frontend_integration/ide/user_opens_mr_spec.js @@ -24,11 +24,11 @@ describe('IDE: User opens Merge Request', () => { vm = startWebIDE(container, { mrId }); - await ideHelper.waitForTabToOpen(basename(changes[0].new_path)); - await ideHelper.waitForMonacoEditor(); + const editor = await ideHelper.waitForMonacoEditor(); + await ideHelper.waitForEditorModelChange(editor); }); - afterEach(async () => { + afterEach(() => { vm.$destroy(); vm = null; }); diff --git a/spec/frontend_integration/test_helpers/mock_server/graphql.js b/spec/frontend_integration/test_helpers/mock_server/graphql.js index 654c373e5a6..e2658852599 100644 --- a/spec/frontend_integration/test_helpers/mock_server/graphql.js +++ b/spec/frontend_integration/test_helpers/mock_server/graphql.js @@ -1,5 +1,11 @@ import { buildSchema, graphql } from 'graphql'; -import gitlabSchemaStr from '../../../../doc/api/graphql/reference/gitlab_schema.graphql'; + +/* eslint-disable import/no-unresolved */ +// This rule is disabled for the following line. +// The graphql schema is dynamically generated in CI +// during the `graphql-schema-dump` job. +import gitlabSchemaStr from '../../../../tmp/tests/graphql/gitlab_schema.graphql'; +/* eslint-enable import/no-unresolved */ const graphqlSchema = buildSchema(gitlabSchemaStr.loc.source.body); const graphqlResolvers = { |