@eclipse-che/che-e2e 7.45.0-dev-0129fe6 → 7.45.0-dev-60c4bc4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/driver/CheReporter.js +4 -4
- package/dist/driver/CheReporter.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pageobjects/dashboard/Dashboard.js +15 -2
- package/dist/pageobjects/dashboard/Dashboard.js.map +1 -1
- package/dist/pageobjects/ide/Ide.js +14 -4
- package/dist/pageobjects/ide/Ide.js.map +1 -1
- package/dist/pageobjects/ide/ProjectTree.js +9 -5
- package/dist/pageobjects/ide/ProjectTree.js.map +1 -1
- package/dist/tests/devfiles/DotNetCore.spec.js +1 -1
- package/dist/tests/devfiles/DotNetCore.spec.js.map +1 -1
- package/dist/tests/devfiles/Go.spec.js +15 -15
- package/dist/tests/devfiles/Go.spec.js.map +1 -1
- package/dist/tests/e2e/OpenshiftConnector.spec.js +2 -2
- package/dist/tests/e2e/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.js +10 -9
- package/dist/tests/e2e/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.js.map +1 -1
- package/dist/tests/e2e/factories/DirectUrlFactoryWithRootFolderTest.spec.js +10 -9
- package/dist/tests/e2e/factories/DirectUrlFactoryWithRootFolderTest.spec.js.map +1 -1
- package/dist/tests/e2e/factories/DirectUrlFactoryWithSpecificBranchTest.spec.js +15 -14
- package/dist/tests/e2e/factories/DirectUrlFactoryWithSpecificBranchTest.spec.js.map +1 -1
- package/dist/tests/e2e_happy_path/DevWorkspaceHappyPath.spec.js +10 -7
- package/dist/tests/e2e_happy_path/DevWorkspaceHappyPath.spec.js.map +1 -1
- package/dist/tests/plugins/GitHubPullRequestPlugin.spec.js +3 -2
- package/dist/tests/plugins/GitHubPullRequestPlugin.spec.js.map +1 -1
- package/dist/testsLibrary/LanguageServerTests.js +1 -0
- package/dist/testsLibrary/LanguageServerTests.js.map +1 -1
- package/dist/testsLibrary/WorkspaceHandlingTests.js +11 -7
- package/dist/testsLibrary/WorkspaceHandlingTests.js.map +1 -1
- package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.js +3 -15
- package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +1 -1
- package/dist/utils/requestHandlers/tokens/CheMultiuserTokenHandler.js +3 -3
- package/dist/utils/requestHandlers/tokens/CheMultiuserTokenHandler.js.map +1 -1
- package/driver/CheReporter.ts +4 -4
- package/index.ts +1 -1
- package/mocha-all-factories.json +2 -1
- package/package.json +2 -2
- package/pageobjects/dashboard/Dashboard.ts +14 -2
- package/pageobjects/ide/Ide.ts +13 -4
- package/pageobjects/ide/ProjectTree.ts +6 -5
- package/tests/devfiles/DotNetCore.spec.ts +1 -1
- package/tests/devfiles/Go.spec.ts +15 -17
- package/tests/e2e/OpenshiftConnector.spec.ts +2 -2
- package/tests/e2e/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.ts +15 -13
- package/tests/e2e/factories/DirectUrlFactoryWithRootFolderTest.spec.ts +15 -14
- package/tests/e2e/factories/DirectUrlFactoryWithSpecificBranchTest.spec.ts +19 -20
- package/tests/e2e_happy_path/DevWorkspaceHappyPath.spec.ts +126 -123
- package/tests/plugins/GitHubPullRequestPlugin.spec.ts +3 -2
- package/testsLibrary/LanguageServerTests.ts +1 -0
- package/testsLibrary/WorkspaceHandlingTests.ts +8 -4
- package/tsconfig.json +1 -0
- package/tslint.json +119 -115
- package/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.ts +3 -9
- package/utils/requestHandlers/tokens/CheMultiuserTokenHandler.ts +20 -18
- package/dist/utils/KeycloackUrlHandler.js +0 -30
- package/dist/utils/KeycloackUrlHandler.js.map +0 -1
- package/utils/KeycloackUrlHandler.ts +0 -32
|
@@ -25,32 +25,30 @@ const codeExecutionTests: CodeExecutionTests = e2eContainer.get(CLASSES.CodeExec
|
|
|
25
25
|
const preferencesHandler: PreferencesHandler = e2eContainer.get(CLASSES.PreferencesHandler);
|
|
26
26
|
|
|
27
27
|
const workspaceStack: string = 'Go';
|
|
28
|
-
const workspaceSampleName: string = 'example';
|
|
29
|
-
const workspaceSubfolderName: string = '
|
|
28
|
+
const workspaceSampleName: string = 'golang-example';
|
|
29
|
+
const workspaceSubfolderName: string = 'template';
|
|
30
30
|
const fileFolderPath: string = `${workspaceSampleName}/${workspaceSubfolderName}`;
|
|
31
31
|
const fileName: string = `main.go`;
|
|
32
32
|
|
|
33
|
-
const taskRunServer: string = '
|
|
34
|
-
const taskStopServer: string = '
|
|
35
|
-
const taskTestOutyet: string = '
|
|
33
|
+
const taskRunServer: string = 'run-outyet';
|
|
34
|
+
const taskStopServer: string = 'stop-outyet';
|
|
35
|
+
const taskTestOutyet: string = 'test-outyet';
|
|
36
36
|
const notificationText: string = 'Process 8080-tcp is now listening on port 8080. Open it ?';
|
|
37
37
|
let workspaceName: string;
|
|
38
38
|
|
|
39
39
|
suite(`${workspaceStack} test`, async () => {
|
|
40
40
|
|
|
41
41
|
suite(`Create ${workspaceStack} workspace`, async () => {
|
|
42
|
-
test('Workaround for issue #16113', async () => {
|
|
43
|
-
Logger.warn(`Manually setting a preference for golang devfile LS based on issue: https://github.com/eclipse/che/issues/16113`);
|
|
44
|
-
await preferencesHandler.setUseGoLanaguageServer();
|
|
45
|
-
});
|
|
46
42
|
workspaceHandlingTests.createAndOpenWorkspace(workspaceStack);
|
|
47
|
-
|
|
48
43
|
test('Register running workspace', async () => {
|
|
49
44
|
workspaceName = WorkspaceHandlingTests.getWorkspaceName();
|
|
50
45
|
CheReporter.registerRunningWorkspace(workspaceName);
|
|
51
46
|
});
|
|
52
|
-
|
|
53
47
|
projectAndFileTests.waitWorkspaceReadiness(workspaceSampleName, workspaceSubfolderName, false);
|
|
48
|
+
test('Workaround for issue #16113', async () => {
|
|
49
|
+
Logger.warn(`Manually setting a preference for golang devFile LS based on issue: https://github.com/eclipse/che/issues/16113`);
|
|
50
|
+
await preferencesHandler.setPreferenceUsingUI('go.useLanguageServer', true);
|
|
51
|
+
});
|
|
54
52
|
});
|
|
55
53
|
|
|
56
54
|
suite('Test opening file', async () => {
|
|
@@ -59,24 +57,24 @@ suite(`${workspaceStack} test`, async () => {
|
|
|
59
57
|
});
|
|
60
58
|
|
|
61
59
|
suite('Test golang example', async () => {
|
|
62
|
-
codeExecutionTests.runTask(taskTestOutyet,
|
|
60
|
+
codeExecutionTests.runTask(taskTestOutyet, 80_000);
|
|
63
61
|
codeExecutionTests.closeTerminal(taskTestOutyet);
|
|
64
62
|
});
|
|
65
63
|
|
|
66
64
|
suite('Run golang example server', async () => {
|
|
67
65
|
codeExecutionTests.runTaskWithNotification(taskRunServer, notificationText, 40_000);
|
|
68
|
-
codeExecutionTests.runTask(taskStopServer,
|
|
66
|
+
codeExecutionTests.runTask(taskStopServer, 8_000);
|
|
69
67
|
});
|
|
70
68
|
|
|
71
69
|
suite(`'Language server validation'`, async () => {
|
|
72
|
-
commonLanguageServerTests.suggestionInvoking(fileName,
|
|
73
|
-
commonLanguageServerTests.autocomplete(fileName,
|
|
74
|
-
commonLanguageServerTests.errorHighlighting(fileName, 'error;\n',
|
|
70
|
+
commonLanguageServerTests.suggestionInvoking(fileName, 41, 49, 'Parse');
|
|
71
|
+
commonLanguageServerTests.autocomplete(fileName, 41, 49, 'Parse');
|
|
72
|
+
commonLanguageServerTests.errorHighlighting(fileName, 'error;\n', 41);
|
|
75
73
|
// commonLanguageServerTests.goToImplementations(fileName, 42, 10, 'flag.go'); // codenavigation is inconsistent https://github.com/eclipse/che/issues/16929
|
|
76
74
|
});
|
|
77
75
|
|
|
78
76
|
suite('Stop and remove workspace', async() => {
|
|
79
|
-
test(`Stop and
|
|
77
|
+
test(`Stop and remove workspace`, async () => {
|
|
80
78
|
await workspaceHandlingTests.stopAndRemoveWorkspace(workspaceName);
|
|
81
79
|
});
|
|
82
80
|
});
|
|
@@ -59,14 +59,14 @@ suite('Openshift connector user story', async () => {
|
|
|
59
59
|
'location': 'https://github.com/maxura/nodejs-hello-world.git',
|
|
60
60
|
'type': 'git'
|
|
61
61
|
}
|
|
62
|
-
}
|
|
62
|
+
},
|
|
63
63
|
],
|
|
64
64
|
|
|
65
65
|
wsConfig.components = [
|
|
66
66
|
{
|
|
67
67
|
'id': 'redhat/vscode-openshift-connector/latest',
|
|
68
68
|
'type': 'chePlugin'
|
|
69
|
-
}
|
|
69
|
+
},
|
|
70
70
|
];
|
|
71
71
|
|
|
72
72
|
await browserTabsUtil.navigateTo(TestConstants.TS_SELENIUM_BASE_URL);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// /*********************************************************************
|
|
2
|
-
// * Copyright (c)
|
|
2
|
+
// * Copyright (c) 2022 Red Hat, Inc.
|
|
3
3
|
// *
|
|
4
4
|
// * This program and the accompanying materials are made
|
|
5
5
|
// * available under the terms of the Eclipse Public License 2.0
|
|
@@ -9,18 +9,18 @@
|
|
|
9
9
|
// **********************************************************************/
|
|
10
10
|
|
|
11
11
|
import { e2eContainer } from '../../../inversify.config';
|
|
12
|
-
import { CLASSES
|
|
12
|
+
import { CLASSES } from '../../../inversify.types';
|
|
13
13
|
import { TestConstants } from '../../../TestConstants';
|
|
14
14
|
import { ProjectAndFileTests } from '../../../testsLibrary/ProjectAndFileTests';
|
|
15
15
|
import CheReporter from '../../../driver/CheReporter';
|
|
16
16
|
import { BrowserTabsUtil } from '../../../utils/BrowserTabsUtil';
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
17
|
+
import { WorkspaceHandlingTests } from '../../../testsLibrary/WorkspaceHandlingTests';
|
|
18
|
+
import { PreferencesHandler } from '../../../utils/PreferencesHandler';
|
|
19
19
|
|
|
20
|
+
const preferencesHandler: PreferencesHandler = e2eContainer.get(CLASSES.PreferencesHandler);
|
|
21
|
+
const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
|
|
20
22
|
const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
|
|
21
23
|
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
22
|
-
const workspaceNameHandler: WorkspaceNameHandler = e2eContainer.get(CLASSES.WorkspaceNameHandler);
|
|
23
|
-
const testWorkspaceUtils: TestWorkspaceUtil = e2eContainer.get<TestWorkspaceUtil>(TYPES.WorkspaceUtil);
|
|
24
24
|
|
|
25
25
|
const factoryUrl : string = `${TestConstants.TS_SELENIUM_BASE_URL}/f?url=https://github.com/che-samples/console-java-simple/tree/master/src`;
|
|
26
26
|
const workspaceSampleName: string = 'console-java-simple';
|
|
@@ -28,9 +28,8 @@ const workspaceRootFolderName: string = 'src';
|
|
|
28
28
|
const fileName: string = 'pom.xml';
|
|
29
29
|
const fileFolderPath: string = `${workspaceSampleName}/${workspaceRootFolderName}/main/java/org/eclipse/che/examples`;
|
|
30
30
|
const tabTitle: string = 'HelloWorld.java';
|
|
31
|
-
let workspaceName: string;
|
|
31
|
+
let workspaceName: string = 'console-java-simple';
|
|
32
32
|
|
|
33
|
-
// the suite expect user to be logged in
|
|
34
33
|
suite('Workspace creation via factory url', async () => {
|
|
35
34
|
suite('Open factory URL', async () => {
|
|
36
35
|
test(`Navigating to factory URL`, async () => {
|
|
@@ -39,7 +38,13 @@ suite('Workspace creation via factory url', async () => {
|
|
|
39
38
|
});
|
|
40
39
|
|
|
41
40
|
suite('Wait workspace readyness', async () => {
|
|
42
|
-
projectAndFileTests.waitWorkspaceReadiness(workspaceSampleName, workspaceRootFolderName
|
|
41
|
+
projectAndFileTests.waitWorkspaceReadiness(workspaceSampleName, workspaceRootFolderName);
|
|
42
|
+
|
|
43
|
+
test('Set confirmExit preference to never', async () => {
|
|
44
|
+
CheReporter.registerRunningWorkspace(workspaceName);
|
|
45
|
+
|
|
46
|
+
await preferencesHandler.setPreferenceUsingUI('application.confirmExit', 'never');
|
|
47
|
+
});
|
|
43
48
|
});
|
|
44
49
|
|
|
45
50
|
suite('Check imported project', async () => {
|
|
@@ -51,10 +56,7 @@ suite('Workspace creation via factory url', async () => {
|
|
|
51
56
|
|
|
52
57
|
suite ('Stopping and deleting the workspace', async () => {
|
|
53
58
|
test('Stop and remove workspace', async () => {
|
|
54
|
-
|
|
55
|
-
CheReporter.registerRunningWorkspace(workspaceName);
|
|
56
|
-
|
|
57
|
-
await testWorkspaceUtils.cleanUpRunningWorkspace(workspaceName);
|
|
59
|
+
await workspaceHandlingTests.stopAndRemoveWorkspace(workspaceName);
|
|
58
60
|
});
|
|
59
61
|
});
|
|
60
62
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// /*********************************************************************
|
|
2
|
-
// * Copyright (c)
|
|
2
|
+
// * Copyright (c) 2022 Red Hat, Inc.
|
|
3
3
|
// *
|
|
4
4
|
// * This program and the accompanying materials are made
|
|
5
5
|
// * available under the terms of the Eclipse Public License 2.0
|
|
@@ -9,27 +9,26 @@
|
|
|
9
9
|
// **********************************************************************/
|
|
10
10
|
|
|
11
11
|
import { e2eContainer } from '../../../inversify.config';
|
|
12
|
-
import { CLASSES
|
|
12
|
+
import { CLASSES } from '../../../inversify.types';
|
|
13
13
|
import { TestConstants } from '../../../TestConstants';
|
|
14
14
|
import { ProjectAndFileTests } from '../../../testsLibrary/ProjectAndFileTests';
|
|
15
15
|
import CheReporter from '../../../driver/CheReporter';
|
|
16
16
|
import { BrowserTabsUtil } from '../../../utils/BrowserTabsUtil';
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
17
|
+
import { WorkspaceHandlingTests } from '../../../testsLibrary/WorkspaceHandlingTests';
|
|
18
|
+
import { PreferencesHandler } from '../../../utils/PreferencesHandler';
|
|
19
19
|
|
|
20
|
+
const preferencesHandler: PreferencesHandler = e2eContainer.get(CLASSES.PreferencesHandler);
|
|
21
|
+
const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
|
|
20
22
|
const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
|
|
21
23
|
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
22
|
-
const workspaceNameHandler: WorkspaceNameHandler = e2eContainer.get(CLASSES.WorkspaceNameHandler);
|
|
23
|
-
const testWorkspaceUtils: TestWorkspaceUtil = e2eContainer.get<TestWorkspaceUtil>(TYPES.WorkspaceUtil);
|
|
24
24
|
|
|
25
25
|
const factoryUrl : string = `${TestConstants.TS_SELENIUM_BASE_URL}/f?url=https://github.com/che-samples/console-java-simple`;
|
|
26
26
|
const workspaceSampleName: string = 'console-java-simple';
|
|
27
27
|
const workspaceRootFolderName: string = 'src';
|
|
28
28
|
const fileFolderPath: string = `${workspaceSampleName}/${workspaceRootFolderName}/main/java/org/eclipse/che/examples`;
|
|
29
29
|
const tabTitle: string = 'HelloWorld.java';
|
|
30
|
-
let workspaceName: string;
|
|
30
|
+
let workspaceName: string = 'console-java-simple';
|
|
31
31
|
|
|
32
|
-
// the suite expect user to be logged in
|
|
33
32
|
suite('Workspace creation via factory url', async () => {
|
|
34
33
|
suite('Open factory URL', async () => {
|
|
35
34
|
test(`Navigating to factory URL`, async () => {
|
|
@@ -38,21 +37,23 @@ suite('Workspace creation via factory url', async () => {
|
|
|
38
37
|
});
|
|
39
38
|
|
|
40
39
|
suite('Wait workspace readyness', async () => {
|
|
41
|
-
projectAndFileTests.waitWorkspaceReadiness(workspaceSampleName, workspaceRootFolderName
|
|
40
|
+
projectAndFileTests.waitWorkspaceReadiness(workspaceSampleName, workspaceRootFolderName);
|
|
41
|
+
|
|
42
|
+
test('Set confirmExit preference to never', async () => {
|
|
43
|
+
CheReporter.registerRunningWorkspace(workspaceName);
|
|
44
|
+
|
|
45
|
+
await preferencesHandler.setPreferenceUsingUI('application.confirmExit', 'never');
|
|
46
|
+
});
|
|
42
47
|
});
|
|
43
48
|
|
|
44
49
|
suite('Check imported project', async () => {
|
|
45
50
|
projectAndFileTests.openFile(fileFolderPath, tabTitle);
|
|
46
|
-
|
|
47
51
|
projectAndFileTests.checkProjectBranchName('master');
|
|
48
52
|
});
|
|
49
53
|
|
|
50
54
|
suite ('Stopping and deleting the workspace', async () => {
|
|
51
55
|
test('Stop and remove workspace', async () => {
|
|
52
|
-
|
|
53
|
-
CheReporter.registerRunningWorkspace(workspaceName);
|
|
54
|
-
|
|
55
|
-
await testWorkspaceUtils.cleanUpRunningWorkspace(workspaceName);
|
|
56
|
+
await workspaceHandlingTests.stopAndRemoveWorkspace(workspaceName);
|
|
56
57
|
});
|
|
57
58
|
});
|
|
58
59
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// /*********************************************************************
|
|
2
|
-
// * Copyright (c)
|
|
2
|
+
// * Copyright (c) 2022 Red Hat, Inc.
|
|
3
3
|
// *
|
|
4
4
|
// * This program and the accompanying materials are made
|
|
5
5
|
// * available under the terms of the Eclipse Public License 2.0
|
|
@@ -9,30 +9,27 @@
|
|
|
9
9
|
// **********************************************************************/
|
|
10
10
|
|
|
11
11
|
import { e2eContainer } from '../../../inversify.config';
|
|
12
|
-
import { CLASSES
|
|
12
|
+
import { CLASSES } from '../../../inversify.types';
|
|
13
13
|
import { TestConstants } from '../../../TestConstants';
|
|
14
14
|
import { ProjectAndFileTests } from '../../../testsLibrary/ProjectAndFileTests';
|
|
15
15
|
import CheReporter from '../../../driver/CheReporter';
|
|
16
16
|
import { BrowserTabsUtil } from '../../../utils/BrowserTabsUtil';
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
17
|
+
import { WorkspaceHandlingTests } from '../../../testsLibrary/WorkspaceHandlingTests';
|
|
18
|
+
import { PreferencesHandler } from '../../../utils/PreferencesHandler';
|
|
19
19
|
|
|
20
|
+
const preferencesHandler: PreferencesHandler = e2eContainer.get(CLASSES.PreferencesHandler);
|
|
21
|
+
const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
|
|
20
22
|
const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
|
|
21
23
|
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
22
|
-
const workspaceNameHandler: WorkspaceNameHandler = e2eContainer.get(CLASSES.WorkspaceNameHandler);
|
|
23
|
-
const testWorkspaceUtils: TestWorkspaceUtil = e2eContainer.get<TestWorkspaceUtil>(TYPES.WorkspaceUtil);
|
|
24
24
|
|
|
25
|
-
let
|
|
25
|
+
let factoryUrl : string = `${TestConstants.TS_SELENIUM_BASE_URL}/f?url=https://github.com/che-samples/console-java-simple/tree/java1.11`;
|
|
26
|
+
const workspaceSampleName: string = 'console-java-simple';
|
|
27
|
+
const workspaceRootFolderName: string = 'src';
|
|
28
|
+
const fileFolderPath: string = `${workspaceSampleName}/${workspaceRootFolderName}/main/java/org/eclipse/che/examples`;
|
|
29
|
+
const tabTitle: string = 'HelloWorld.java';
|
|
30
|
+
let workspaceName: string = 'console-java-simple';
|
|
26
31
|
|
|
27
|
-
// the suite expect user to be logged in
|
|
28
32
|
suite('Workspace creation via factory url', async () => {
|
|
29
|
-
|
|
30
|
-
let factoryUrl : string = `${TestConstants.TS_SELENIUM_BASE_URL}/f?url=https://github.com/che-samples/console-java-simple/tree/java1.11`;
|
|
31
|
-
const workspaceSampleName: string = 'console-java-simple';
|
|
32
|
-
const workspaceRootFolderName: string = 'src';
|
|
33
|
-
const fileFolderPath: string = `${workspaceSampleName}/${workspaceRootFolderName}/main/java/org/eclipse/che/examples`;
|
|
34
|
-
const tabTitle: string = 'HelloWorld.java';
|
|
35
|
-
|
|
36
33
|
suite('Open factory URL', async () => {
|
|
37
34
|
test(`Navigating to factory URL`, async () => {
|
|
38
35
|
await browserTabsUtil.navigateTo(factoryUrl);
|
|
@@ -40,8 +37,13 @@ suite('Workspace creation via factory url', async () => {
|
|
|
40
37
|
});
|
|
41
38
|
|
|
42
39
|
suite('Wait workspace readyness', async () => {
|
|
43
|
-
projectAndFileTests.waitWorkspaceReadiness(workspaceSampleName, workspaceRootFolderName
|
|
40
|
+
projectAndFileTests.waitWorkspaceReadiness(workspaceSampleName, workspaceRootFolderName);
|
|
41
|
+
|
|
42
|
+
test('Set confirmExit preference to never', async () => {
|
|
43
|
+
CheReporter.registerRunningWorkspace(workspaceName);
|
|
44
44
|
|
|
45
|
+
await preferencesHandler.setPreferenceUsingUI('application.confirmExit', 'never');
|
|
46
|
+
});
|
|
45
47
|
});
|
|
46
48
|
|
|
47
49
|
suite('Check imported project', async () => {
|
|
@@ -51,10 +53,7 @@ suite('Workspace creation via factory url', async () => {
|
|
|
51
53
|
|
|
52
54
|
suite ('Stopping and deleting the workspace', async () => {
|
|
53
55
|
test('Stop and remove workspace', async () => {
|
|
54
|
-
|
|
55
|
-
CheReporter.registerRunningWorkspace(workspaceName);
|
|
56
|
-
|
|
57
|
-
await testWorkspaceUtils.cleanUpRunningWorkspace(workspaceName);
|
|
56
|
+
await workspaceHandlingTests.stopAndRemoveWorkspace(workspaceName);
|
|
58
57
|
});
|
|
59
58
|
});
|
|
60
59
|
|
|
@@ -43,7 +43,7 @@ const terminal: Terminal = e2eContainer.get(CLASSES.Terminal);
|
|
|
43
43
|
const warningDialog: DialogWindow = e2eContainer.get(CLASSES.DialogWindow);
|
|
44
44
|
const debugView: DebugView = e2eContainer.get(CLASSES.DebugView);
|
|
45
45
|
const welcomeControllerJavaFileName: string = 'WelcomeController.java';
|
|
46
|
-
|
|
46
|
+
const factoryUrl : string = `${TestConstants.TS_SELENIUM_BASE_URL}/f?url=https://raw.githubusercontent.com/eclipse/che-devfile-registry/master/devfiles/java-maven/devfile.yaml`;
|
|
47
47
|
|
|
48
48
|
const SpringAppLocators = {
|
|
49
49
|
springTitleLocator: By.xpath('//div[@class=\'container-fluid\']//h2[text()=\'Welcome\']'),
|
|
@@ -55,7 +55,8 @@ const SpringAppLocators = {
|
|
|
55
55
|
|
|
56
56
|
// this test checks only workspace created from "web-nodejs-sample" https://github.com/devfile/devworkspace-operator/blob/main/samples/flattened_theia-next.yaml.
|
|
57
57
|
suite('Workspace creation via factory url', async () => {
|
|
58
|
-
let factoryUrl : string = `${TestConstants.TS_SELENIUM_DEVWORKSPACE_URL}`;
|
|
58
|
+
// let factoryUrl : string = `${TestConstants.TS_SELENIUM_DEVWORKSPACE_URL}`;
|
|
59
|
+
|
|
59
60
|
const workspaceRootFolderName: string = 'src';
|
|
60
61
|
|
|
61
62
|
suite('Open factory URL', async () => {
|
|
@@ -76,139 +77,139 @@ suite('Workspace creation via factory url', async () => {
|
|
|
76
77
|
await projectTree.waitProjectImported(projectName, workspaceRootFolderName);
|
|
77
78
|
});
|
|
78
79
|
});
|
|
79
|
-
|
|
80
|
+
});
|
|
80
81
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
console.log('Known flakiness has occurred https://github.com/eclipse/che/issues/17864');
|
|
94
|
-
await ide.waitStatusBarContains('Activating Java Test Runner');
|
|
95
|
-
await ide.waitStatusBarTextAbsence('Activating Java Test Runner', 900_000);
|
|
82
|
+
suite('Language server validation', async () => {
|
|
83
|
+
test('Java LS initialization', async () => {
|
|
84
|
+
await projectTree.expandPathAndOpenFile(pathToJavaFolder, javaFileName);
|
|
85
|
+
await editor.selectTab(javaFileName);
|
|
86
|
+
try {
|
|
87
|
+
await ide.checkLsInitializationStart('Activating Language Support for Java');
|
|
88
|
+
await ide.waitStatusBarTextAbsence('Activating Language Support for Java', 900_000);
|
|
89
|
+
} catch (err) {
|
|
90
|
+
if (!(err instanceof error.TimeoutError)) {
|
|
91
|
+
throw err;
|
|
96
92
|
}
|
|
97
93
|
|
|
98
|
-
|
|
99
|
-
|
|
94
|
+
console.log('Known flakiness has occurred https://github.com/eclipse/che/issues/17864');
|
|
95
|
+
await ide.waitStatusBarContains('Activating Java Test Runner');
|
|
96
|
+
await ide.waitStatusBarTextAbsence('Activating Java Test Runner', 900_000);
|
|
97
|
+
}
|
|
100
98
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
await editor.pressControlSpaceCombination(javaFileName);
|
|
104
|
-
await editor.waitSuggestionContainer();
|
|
105
|
-
await editor.waitSuggestion(javaFileName, 'SpringApplication - org.springframework.boot');
|
|
106
|
-
});
|
|
99
|
+
await checkJavaPathCompletion();
|
|
100
|
+
});
|
|
107
101
|
|
|
108
|
-
|
|
109
|
-
|
|
102
|
+
test('Autocomplete', async () => {
|
|
103
|
+
await editor.moveCursorToLineAndChar(javaFileName, 32, 17);
|
|
104
|
+
await editor.pressControlSpaceCombination(javaFileName);
|
|
105
|
+
await editor.waitSuggestionContainer();
|
|
106
|
+
await editor.waitSuggestion(javaFileName, 'SpringApplication - org.springframework.boot');
|
|
107
|
+
});
|
|
110
108
|
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
test('Error highlighting', async () => {
|
|
110
|
+
await driverHelper.getDriver().sleep(TimeoutConstants.TS_SUGGESTION_TIMEOUT); // workaround https://github.com/eclipse/che/issues/19004
|
|
113
111
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
} catch (err) {
|
|
117
|
-
Logger.debug('Workaround for the https://github.com/eclipse/che/issues/18974.');
|
|
118
|
-
await browserTabsUtil.refreshPage();
|
|
119
|
-
await ide.waitAndSwitchToIdeFrame();
|
|
120
|
-
await ide.waitIde();
|
|
121
|
-
await editor.waitErrorInLine(30, javaFileName, TimeoutConstants.TS_ERROR_HIGHLIGHTING_TIMEOUT * 2);
|
|
122
|
-
}
|
|
123
|
-
await editor.performKeyCombination(javaFileName, Key.chord(Key.BACK_SPACE));
|
|
124
|
-
await editor.waitErrorInLineDisappearance(30, javaFileName);
|
|
125
|
-
});
|
|
112
|
+
const textForErrorDisplaying: string = '$';
|
|
113
|
+
await editor.type(javaFileName, textForErrorDisplaying, 30);
|
|
126
114
|
|
|
127
|
-
|
|
128
|
-
await editor.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
115
|
+
try {
|
|
116
|
+
await editor.waitErrorInLine(30, javaFileName, TimeoutConstants.TS_ERROR_HIGHLIGHTING_TIMEOUT);
|
|
117
|
+
} catch (err) {
|
|
118
|
+
Logger.debug('Workaround for the https://github.com/eclipse/che/issues/18974.');
|
|
119
|
+
await browserTabsUtil.refreshPage();
|
|
120
|
+
await ide.waitAndSwitchToIdeFrame();
|
|
121
|
+
await ide.waitIde();
|
|
122
|
+
await editor.waitErrorInLine(30, javaFileName, TimeoutConstants.TS_ERROR_HIGHLIGHTING_TIMEOUT * 2);
|
|
123
|
+
}
|
|
124
|
+
await editor.performKeyCombination(javaFileName, Key.chord(Key.BACK_SPACE));
|
|
125
|
+
await editor.waitErrorInLineDisappearance(30, javaFileName);
|
|
126
|
+
});
|
|
132
127
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
});
|
|
139
|
-
suite('Validation of workspace build and run', async () => {
|
|
140
|
-
const mavenBuildTaskName: string = 'maven-build';
|
|
141
|
-
const runAppTaskName: string = 'run-with-hsqldb';
|
|
142
|
-
test('Build application', async () => {
|
|
143
|
-
await topMenu.runTask(`${mavenBuildTaskName}, ${globalTaskScope}`);
|
|
144
|
-
await terminal.waitIconSuccess(mavenBuildTaskName, 500_000);
|
|
145
|
-
});
|
|
128
|
+
test('Suggestion', async () => {
|
|
129
|
+
await editor.moveCursorToLineAndChar(javaFileName, 32, 21);
|
|
130
|
+
await editor.pressControlSpaceCombination(javaFileName);
|
|
131
|
+
await editor.waitSuggestionWithScrolling(javaFileName, 'run(Class<?> primarySource, String... args) : ConfigurableApplicationContext', 120_000);
|
|
132
|
+
});
|
|
146
133
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
await ide.clickOnNotificationButton('Process 8080-tcp is now listening on port 8080. Open it ?', 'Open In New Tab');
|
|
153
|
-
});
|
|
154
|
-
// this is DevWorkspace test specific since Theia does not provide yet preview as a widget
|
|
155
|
-
test('Check the running application', async () => {
|
|
156
|
-
await switchAppWindowAndCheck(SpringAppLocators.springTitleLocator);
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
test('Close the terminal running tasks', async () => {
|
|
160
|
-
await terminal.rejectTerminalProcess(runAppTaskName);
|
|
161
|
-
await terminal.closeTerminalTab(runAppTaskName);
|
|
162
|
-
await warningDialog.waitAndCloseIfAppear();
|
|
163
|
-
await terminal.closeTerminalTab(mavenBuildTaskName);
|
|
164
|
-
});
|
|
134
|
+
test('Codenavigation', async () => {
|
|
135
|
+
await editor.moveCursorToLineAndChar(javaFileName, 32, 17);
|
|
136
|
+
await editor.performKeyCombination(javaFileName, Key.chord(Key.CONTROL, Key.F12));
|
|
137
|
+
await editor.waitEditorAvailable(codeNavigationClassName, TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT * 4);
|
|
138
|
+
});
|
|
165
139
|
});
|
|
166
140
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
});
|
|
141
|
+
suite('Validation of workspace build and run', async () => {
|
|
142
|
+
const mavenBuildTaskName: string = 'maven-build';
|
|
143
|
+
const runAppTaskName: string = 'run-with-hsqldb';
|
|
144
|
+
test('Build application', async () => {
|
|
145
|
+
await topMenu.runTask(`${mavenBuildTaskName}, ${globalTaskScope}`);
|
|
146
|
+
await terminal.waitIconSuccess(mavenBuildTaskName, 500_000);
|
|
147
|
+
});
|
|
175
148
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
149
|
+
test('Run application', async () => {
|
|
150
|
+
await topMenu.runTask(`${runAppTaskName}, ${globalTaskScope}`);
|
|
151
|
+
await ide.waitNotification('Process 8080-tcp is now listening on port 8080. Open it ?', 120_000);
|
|
152
|
+
// devWs specific. After running test application we can open it just in the new window.
|
|
153
|
+
// the preview widget is not available yet.
|
|
154
|
+
await ide.clickOnNotificationButton('Process 8080-tcp is now listening on port 8080. Open it ?', 'Open In New Tab');
|
|
155
|
+
});
|
|
156
|
+
// this is DevWorkspace test specific since Theia does not provide yet preview as a widget
|
|
157
|
+
test('Check the running application', async () => {
|
|
158
|
+
await switchAppWindowAndCheck(SpringAppLocators.springTitleLocator);
|
|
159
|
+
});
|
|
182
160
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
161
|
+
test('Close the terminal running tasks', async () => {
|
|
162
|
+
await terminal.rejectTerminalProcess(runAppTaskName);
|
|
163
|
+
await terminal.closeTerminalTab(runAppTaskName);
|
|
164
|
+
await warningDialog.waitAndCloseIfAppear();
|
|
165
|
+
await terminal.closeTerminalTab(mavenBuildTaskName);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
189
168
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
169
|
+
suite('Validation of debug functionality', async () => {
|
|
170
|
+
let urlToPetClinicApp = '';
|
|
171
|
+
test('Launch debug', async () => {
|
|
172
|
+
const taskName: string = 'run-debug';
|
|
173
|
+
await topMenu.runTask(`${taskName}, ${globalTaskScope}`);
|
|
174
|
+
await ide.waitNotification('Process 8080-tcp is now listening on port 8080. Open it ?', 180_000);
|
|
175
|
+
await ide.clickOnNotificationButton('Process 8080-tcp is now listening on port 8080. Open it ?', 'Open In New Tab');
|
|
176
|
+
});
|
|
194
177
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
178
|
+
test('Check content of the launched application', async () => {
|
|
179
|
+
const mainWindowHandle: string = await browserTabsUtil.getCurrentWindowHandle();
|
|
180
|
+
await browserTabsUtil.waitAndSwitchToAnotherWindow(mainWindowHandle, TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT);
|
|
181
|
+
urlToPetClinicApp = await browserTabsUtil.getCurrentUrl();
|
|
182
|
+
await browserTabsUtil.switchToWindow(mainWindowHandle);
|
|
183
|
+
});
|
|
199
184
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
185
|
+
test('Open debug view', async () => {
|
|
186
|
+
await projectTree.expandPathAndOpenFile(pathToJavaFolder + '/system', welcomeControllerJavaFileName);
|
|
187
|
+
await editor.selectTab(welcomeControllerJavaFileName);
|
|
188
|
+
await topMenu.selectOption('View', 'Debug');
|
|
189
|
+
await ide.waitLeftToolbarButton(LeftToolbarButton.Debug);
|
|
190
|
+
});
|
|
204
191
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
192
|
+
test('Choose debug configuration', async () => {
|
|
193
|
+
await debugView.clickOnDebugConfigurationDropDown();
|
|
194
|
+
await debugView.clickOnDebugConfigurationItem('Debug (Attach) - Remote (java-spring-petclinic)');
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
test('Run debug', async () => {
|
|
198
|
+
await debugView.clickOnRunDebugButton();
|
|
199
|
+
await waitDebugToConnect();
|
|
200
|
+
});
|
|
209
201
|
|
|
202
|
+
test('Activate breakpoint', async () => {
|
|
203
|
+
await editor.selectTab(welcomeControllerJavaFileName);
|
|
204
|
+
await editor.activateBreakpoint(welcomeControllerJavaFileName, 27);
|
|
210
205
|
});
|
|
211
206
|
|
|
207
|
+
test('Check debugger stop at the breakpoint', async () => {
|
|
208
|
+
await sendRequestToDebugApp(urlToPetClinicApp);
|
|
209
|
+
await waitStoppedBreakpoint(27);
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
|
|
212
213
|
async function checkJavaPathCompletion() {
|
|
213
214
|
if (await ide.isNotificationPresent('Classpath is incomplete. Only syntax errors will be reported')) {
|
|
214
215
|
const classpathText: string = fs.readFileSync('./files/happy-path/petclinic-classpath.txt', 'utf8');
|
|
@@ -268,17 +269,20 @@ async function waitStoppedBreakpoint(lineNumber: number) {
|
|
|
268
269
|
// for avoiding this problem we send http request with axios and set the request timeout. We expect that request will fail with
|
|
269
270
|
// timeout error, we check it in the catch block and wait breakpoint activating in the WebDriver after this.
|
|
270
271
|
async function sendRequestToDebugApp(urlToApp: string) {
|
|
271
|
-
|
|
272
|
-
|
|
272
|
+
const httpClient = axios.create();
|
|
273
|
+
httpClient.defaults.timeout = 1000;
|
|
273
274
|
try {
|
|
274
275
|
await httpClient.get(urlToApp);
|
|
275
276
|
} catch (error) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
277
|
+
if (error instanceof Error) {
|
|
278
|
+
if (error.message === 'timeout of 1000ms exceeded') {
|
|
279
|
+
console.log('>>>>The debugger is set >>>>>>>>>>>>>>>>>>> ' + error.message);
|
|
280
|
+
} else {
|
|
281
|
+
const {data} = await httpClient.get(urlToApp);
|
|
282
|
+
console.log('>>>>>>>seems the app. is not set under debug properly: >>>>>>>>>>>>>>' + data);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
282
286
|
}
|
|
283
287
|
|
|
284
288
|
async function waitDebugToConnect() {
|
|
@@ -290,4 +294,3 @@ async function waitDebugToConnect() {
|
|
|
290
294
|
await debugView.waitForDebuggerToConnect();
|
|
291
295
|
}
|
|
292
296
|
}
|
|
293
|
-
|
|
@@ -20,7 +20,6 @@ import { GitHubPullRequestPlugin } from '../../pageobjects/ide/plugins/GitHubPul
|
|
|
20
20
|
import { GitLoginPage } from '../../pageobjects/third-parties/GitLoginPage';
|
|
21
21
|
import { GitOauthAppsSettings } from '../../pageobjects/third-parties/GitOauthAppsSettings';
|
|
22
22
|
import { WorkspaceNameHandler } from '../../utils/WorkspaceNameHandler';
|
|
23
|
-
import { KeycloackUrlHandler } from '../../utils/KeycloackUrlHandler';
|
|
24
23
|
import { GitPlugin } from '../../pageobjects/ide/plugins/GitPlugin';
|
|
25
24
|
import { TopMenu } from '../../pageobjects/ide/TopMenu';
|
|
26
25
|
import { QuickOpenContainer } from '../../pageobjects/ide/QuickOpenContainer';
|
|
@@ -48,6 +47,8 @@ const branchName: string = workspaceNameHandler.generateWorkspaceName('ghPrPlug
|
|
|
48
47
|
const projectName: string = 'Spoon-Knife';
|
|
49
48
|
const oAuthAppName: string = 'eclipse-che';
|
|
50
49
|
const changedFile: string = 'README.md';
|
|
50
|
+
// added call back url, but needs to be re-verified
|
|
51
|
+
const identityCallbackUrl: string = `${TestConstants.TS_SELENIUM_BASE_URL}/api/oauth/callback`;
|
|
51
52
|
const currentDate: string = Date.now().toString();
|
|
52
53
|
let workspaceName: string;
|
|
53
54
|
|
|
@@ -66,7 +67,7 @@ suite(`The 'GitHubPullRequestPlugin' test`, async () => {
|
|
|
66
67
|
await gitOauthAppsSettings.scrollToUpdateApplicationButton();
|
|
67
68
|
|
|
68
69
|
await gitOauthAppsSettings.typeHomePageUrl(TestConstants.TS_SELENIUM_BASE_URL);
|
|
69
|
-
await gitOauthAppsSettings.typeCallbackUrl(
|
|
70
|
+
await gitOauthAppsSettings.typeCallbackUrl(identityCallbackUrl);
|
|
70
71
|
await gitOauthAppsSettings.clickUpdateApplicationButton();
|
|
71
72
|
});
|
|
72
73
|
});
|