summaryrefslogtreecommitdiff
path: root/spec/frontend_integration
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-03-16 18:18:33 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-03-16 18:18:33 +0000
commitf64a639bcfa1fc2bc89ca7db268f594306edfd7c (patch)
treea2c3c2ebcc3b45e596949db485d6ed18ffaacfa1 /spec/frontend_integration
parentbfbc3e0d6583ea1a91f627528bedc3d65ba4b10f (diff)
downloadgitlab-ce-f64a639bcfa1fc2bc89ca7db268f594306edfd7c.tar.gz
Add latest changes from gitlab-org/gitlab@13-10-stable-eev13.10.0-rc40
Diffstat (limited to 'spec/frontend_integration')
-rw-r--r--spec/frontend_integration/ide/helpers/ide_helper.js3
-rw-r--r--spec/frontend_integration/ide/helpers/mock_data.js1
-rw-r--r--spec/frontend_integration/ide/helpers/start.js11
-rw-r--r--spec/frontend_integration/ide/ide_integration_spec.js27
-rw-r--r--spec/frontend_integration/ide/user_opens_mr_spec.js6
-rw-r--r--spec/frontend_integration/test_helpers/mock_server/graphql.js8
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 = {