@eclipse-che/che-e2e 7.120.0-next-176265c → 7.120.0-next-2d52216
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/.claude/settings.local.json +5 -2
- package/.claude/skills/explore-and-generate-tests/SKILL.md +361 -0
- package/.mcp.json +10 -0
- package/configs/inversify.config.ts +2 -0
- package/configs/inversify.types.ts +2 -1
- package/constants/EDITOR_CONSTANTS.ts +120 -0
- package/dist/configs/inversify.config.js +2 -0
- package/dist/configs/inversify.config.js.map +1 -1
- package/dist/configs/inversify.types.js +2 -1
- package/dist/configs/inversify.types.js.map +1 -1
- package/dist/constants/EDITOR_CONSTANTS.js +114 -0
- package/dist/constants/EDITOR_CONSTANTS.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/pageobjects/ide/AiCodeSignInDialog.js +55 -0
- package/dist/pageobjects/ide/AiCodeSignInDialog.js.map +1 -0
- package/dist/specs/dashboard-samples/{StartWorkspaceUsingVSCodeDesktopSshEditor.spec.js → StartWorkspaceUsingDesktopEditors.spec.js} +82 -45
- package/dist/specs/dashboard-samples/StartWorkspaceUsingDesktopEditors.spec.js.map +1 -0
- package/dist/tests-library/ProjectAndFileTests.js +21 -2
- package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
- package/index.ts +2 -0
- package/package.json +1 -1
- package/pageobjects/ide/AiCodeSignInDialog.ts +40 -0
- package/specs/dashboard-samples/{StartWorkspaceUsingVSCodeDesktopSshEditor.spec.ts → StartWorkspaceUsingDesktopEditors.spec.ts} +102 -56
- package/tests-library/ProjectAndFileTests.ts +20 -1
- package/dist/specs/dashboard-samples/StartWorkspaceUsingIntellijIdeaEditor.spec.js +0 -127
- package/dist/specs/dashboard-samples/StartWorkspaceUsingIntellijIdeaEditor.spec.js.map +0 -1
- package/dist/specs/dashboard-samples/StartWorkspaceUsingVSCodeDesktopSshEditor.spec.js.map +0 -1
- package/specs/dashboard-samples/StartWorkspaceUsingIntellijIdeaEditor.spec.ts +0 -154
|
@@ -14,25 +14,46 @@ import { LoginTests } from '../../tests-library/LoginTests';
|
|
|
14
14
|
import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
|
|
15
15
|
import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
|
|
16
16
|
import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
|
|
17
|
-
import { expect } from 'chai';
|
|
17
|
+
import { assert, expect } from 'chai';
|
|
18
18
|
import { Logger } from '../../utils/Logger';
|
|
19
19
|
import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
|
|
20
20
|
import { DriverHelper } from '../../utils/DriverHelper';
|
|
21
|
+
import { EditorConfig, ALL_EDITORS } from '../../constants/EDITOR_CONSTANTS';
|
|
21
22
|
|
|
22
|
-
suite('Check
|
|
23
|
-
this.timeout(
|
|
23
|
+
suite('Check all editors with all samples', function (): void {
|
|
24
|
+
this.timeout(24000000);
|
|
24
25
|
const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
|
|
25
26
|
const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
|
|
26
27
|
const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
|
|
27
28
|
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
28
29
|
const driverHelper: DriverHelper = e2eContainer.get(CLASSES.DriverHelper);
|
|
29
30
|
|
|
30
|
-
const vsCodeDesktopSshEditor: string = '//*[@id="editor-selector-card-che-incubator/che-code-sshd/latest"]';
|
|
31
31
|
const useExtensionSwitcher: string = '//label[@class="switch"]';
|
|
32
|
-
const
|
|
32
|
+
const intellijTitleXpath: string = '/html/body/h1';
|
|
33
|
+
const vsCodeTitleXpath: string = '//div[@class="header-title"]';
|
|
33
34
|
|
|
34
35
|
let currentTabHandle: string = 'undefined';
|
|
35
|
-
const
|
|
36
|
+
const pollingForCheckTitleVSCode: number = 100;
|
|
37
|
+
const pollingForCheckTitleIntelliJ: number = 500;
|
|
38
|
+
|
|
39
|
+
// filter editors based on environment variables
|
|
40
|
+
const selectAllEditors: boolean = process.env.SELECT_ALL_EDITORS === 'true';
|
|
41
|
+
let editorsForCheck: EditorConfig[];
|
|
42
|
+
|
|
43
|
+
if (selectAllEditors) {
|
|
44
|
+
editorsForCheck = Array.from(ALL_EDITORS.values());
|
|
45
|
+
Logger.info('SELECT_ALL_EDITORS is true - running tests for all editors');
|
|
46
|
+
} else {
|
|
47
|
+
editorsForCheck = Array.from(ALL_EDITORS.values()).filter((editor): boolean => {
|
|
48
|
+
const envValue: string | undefined = process.env[editor.environmentId];
|
|
49
|
+
return envValue === 'true';
|
|
50
|
+
});
|
|
51
|
+
Logger.info(`Running tests for selected editors: ${editorsForCheck.map((e): string => e.name).join(', ')}`);
|
|
52
|
+
|
|
53
|
+
if (editorsForCheck.length === 0) {
|
|
54
|
+
assert.fail('No editors selected via environment variables');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
36
57
|
|
|
37
58
|
const samplesForCheck: string[] = [
|
|
38
59
|
'Empty Workspace',
|
|
@@ -50,12 +71,14 @@ suite('Check Visual Studio Code (desktop) (SSH) with all samples', function ():
|
|
|
50
71
|
|
|
51
72
|
const gitRepoUrlsToCheck: string[] = [
|
|
52
73
|
'https://github.com/crw-qe/quarkus-api-example-public/tree/ubi8-latest',
|
|
53
|
-
'https://github.com/crw-qe/ubi9-based-sample-public/tree/ubi9-minimal'
|
|
74
|
+
'https://github.com/crw-qe/ubi9-based-sample-public/tree/ubi9-minimal',
|
|
75
|
+
'https://github.com/crw-qe/ubi10-based-sample-public/tree/main'
|
|
54
76
|
];
|
|
55
77
|
|
|
56
78
|
const gitRepoUrlsToCheckAirgap: string[] = [
|
|
57
79
|
'https://gh.crw-qe.com/test-automation-only/ubi8/tree/ubi8-latest',
|
|
58
|
-
'https://gh.crw-qe.com/test-automation-only/ubi9-based-sample-public/tree/ubi9-minimal'
|
|
80
|
+
'https://gh.crw-qe.com/test-automation-only/ubi9-based-sample-public/tree/ubi9-minimal',
|
|
81
|
+
'https://gh.crw-qe.com/test-automation-only/ubi10-based-sample-public/tree/main'
|
|
59
82
|
];
|
|
60
83
|
|
|
61
84
|
suiteSetup('Login into Che', async function (): Promise<void> {
|
|
@@ -75,58 +98,35 @@ suite('Check Visual Studio Code (desktop) (SSH) with all samples', function ():
|
|
|
75
98
|
currentTabHandle = 'undefined';
|
|
76
99
|
}
|
|
77
100
|
|
|
78
|
-
async function
|
|
79
|
-
|
|
80
|
-
currentTabHandle = await browserTabsUtil.getCurrentWindowHandle();
|
|
81
|
-
await dashboard.clickCreateWorkspaceButton();
|
|
82
|
-
|
|
83
|
-
if (isUrl) {
|
|
84
|
-
await workspaceHandlingTests.createAndOpenWorkspaceWithSpecificEditorAndGitUrl(
|
|
85
|
-
vsCodeDesktopSshEditor,
|
|
86
|
-
sampleNameOrUrl,
|
|
87
|
-
titlexPath,
|
|
88
|
-
pollingForCheckTitle
|
|
89
|
-
);
|
|
90
|
-
} else {
|
|
91
|
-
await workspaceHandlingTests.createAndOpenWorkspaceWithSpecificEditorAndSample(
|
|
92
|
-
vsCodeDesktopSshEditor,
|
|
93
|
-
sampleNameOrUrl,
|
|
94
|
-
titlexPath,
|
|
95
|
-
pollingForCheckTitle
|
|
96
|
-
);
|
|
97
|
-
}
|
|
101
|
+
async function verifyVSCodeEditor(): Promise<void> {
|
|
102
|
+
Logger.debug();
|
|
98
103
|
|
|
99
|
-
// read page
|
|
100
104
|
const pageTextBeforeUseExtensionSwitcher: string = await driverHelper.getDriver().executeScript('return document.body.innerText;');
|
|
101
105
|
|
|
102
|
-
// click on "Use Extension" switcher
|
|
103
106
|
await clickOnElementByXpath(useExtensionSwitcher);
|
|
104
107
|
|
|
105
|
-
// read page
|
|
106
108
|
const pageTextAfterUseExtensionSwitcher: string = await driverHelper.getDriver().executeScript('return document.body.innerText;');
|
|
107
109
|
|
|
108
|
-
// checks for "Install extensions" state
|
|
109
110
|
expect(pageTextBeforeUseExtensionSwitcher).contains('Install the following VS Code extensions');
|
|
110
|
-
Logger.
|
|
111
|
+
Logger.debug('"Install the following VS Code extensions" was found in page before "Use Extension" clicked');
|
|
111
112
|
|
|
112
113
|
expect(pageTextBeforeUseExtensionSwitcher).contains('Workspace ' + WorkspaceHandlingTests.getWorkspaceName() + ' is running');
|
|
113
|
-
Logger.
|
|
114
|
+
Logger.debug(
|
|
114
115
|
'Workspace name "' + WorkspaceHandlingTests.getWorkspaceName() + ' is running" was found before "Use Extension" clicked'
|
|
115
116
|
);
|
|
116
117
|
|
|
117
|
-
// checks for SSH state
|
|
118
118
|
expect(pageTextAfterUseExtensionSwitcher).contains('Workspace ' + WorkspaceHandlingTests.getWorkspaceName() + ' is running');
|
|
119
|
-
Logger.
|
|
119
|
+
Logger.debug(
|
|
120
120
|
'Workspace name "' + WorkspaceHandlingTests.getWorkspaceName() + ' is running" was found after "Use Extension" clicked'
|
|
121
121
|
);
|
|
122
122
|
|
|
123
123
|
expect(pageTextAfterUseExtensionSwitcher).contains('oc port-forward -n admin-devspaces');
|
|
124
|
-
Logger.
|
|
124
|
+
Logger.debug('"oc port-forward -n admin-devspaces" was found');
|
|
125
125
|
|
|
126
126
|
expect(pageTextAfterUseExtensionSwitcher)
|
|
127
127
|
.contains('-----BEGIN OPENSSH PRIVATE KEY-----')
|
|
128
128
|
.and.contains('-----END OPENSSH PRIVATE KEY-----');
|
|
129
|
-
Logger.
|
|
129
|
+
Logger.debug('SSH private key (BEGIN and END markers) was found');
|
|
130
130
|
|
|
131
131
|
expect(pageTextAfterUseExtensionSwitcher)
|
|
132
132
|
.contains('HostName')
|
|
@@ -134,31 +134,77 @@ suite('Check Visual Studio Code (desktop) (SSH) with all samples', function ():
|
|
|
134
134
|
.and.contains('Port')
|
|
135
135
|
.and.contains('IdentityFile')
|
|
136
136
|
.and.contains('UserKnownHostsFile');
|
|
137
|
-
Logger.
|
|
138
|
-
'SSH config parameters (HostName, User, Port, IdentityFile, UserKnownHostsFile) were found after "Use Extension" clicked'
|
|
139
|
-
);
|
|
137
|
+
Logger.debug('SSH config parameters (HostName, User, Port, IdentityFile, UserKnownHostsFile) were found');
|
|
140
138
|
}
|
|
141
139
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
140
|
+
async function verifyIntelliJEditor(titleXpath: string): Promise<void> {
|
|
141
|
+
Logger.debug();
|
|
142
|
+
|
|
143
|
+
const headerText: string = await workspaceHandlingTests.getTextFromUIElementByXpath(titleXpath);
|
|
144
|
+
expect('Workspace ' + WorkspaceHandlingTests.getWorkspaceName() + ' is running').equal(headerText);
|
|
145
|
+
Logger.debug('Workspace title verified for IntelliJ editor: ' + headerText);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
async function testWorkspaceStartup(
|
|
149
|
+
editorXpath: string,
|
|
150
|
+
editorType: 'vscode' | 'intellij',
|
|
151
|
+
sampleNameOrUrl: string,
|
|
152
|
+
isUrl: boolean
|
|
153
|
+
): Promise<void> {
|
|
154
|
+
await dashboard.openDashboard();
|
|
155
|
+
currentTabHandle = await browserTabsUtil.getCurrentWindowHandle();
|
|
156
|
+
await dashboard.clickCreateWorkspaceButton();
|
|
157
|
+
|
|
158
|
+
const pollingForCheckTitle: number = editorType === 'vscode' ? pollingForCheckTitleVSCode : pollingForCheckTitleIntelliJ;
|
|
159
|
+
const titleXpath: string = editorType === 'vscode' ? vsCodeTitleXpath : intellijTitleXpath;
|
|
160
|
+
|
|
161
|
+
if (isUrl) {
|
|
162
|
+
await workspaceHandlingTests.createAndOpenWorkspaceWithSpecificEditorAndGitUrl(
|
|
163
|
+
editorXpath,
|
|
164
|
+
sampleNameOrUrl,
|
|
165
|
+
titleXpath,
|
|
166
|
+
pollingForCheckTitle
|
|
167
|
+
);
|
|
168
|
+
} else {
|
|
169
|
+
await workspaceHandlingTests.createAndOpenWorkspaceWithSpecificEditorAndSample(
|
|
170
|
+
editorXpath,
|
|
171
|
+
sampleNameOrUrl,
|
|
172
|
+
titleXpath,
|
|
173
|
+
pollingForCheckTitle
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (editorType === 'vscode') {
|
|
178
|
+
await verifyVSCodeEditor();
|
|
179
|
+
} else {
|
|
180
|
+
await verifyIntelliJEditor(titleXpath);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
editorsForCheck.forEach((editor): void => {
|
|
185
|
+
samplesForCheck.forEach((sampleName): void => {
|
|
186
|
+
test(`Test start of ${editor.name} with sample: ${sampleName}`, async function (): Promise<void> {
|
|
187
|
+
await testWorkspaceStartup(editor.xpath, editor.type, sampleName, false);
|
|
188
|
+
});
|
|
145
189
|
});
|
|
146
190
|
});
|
|
147
191
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
192
|
+
editorsForCheck.forEach((editor): void => {
|
|
193
|
+
if (BASE_TEST_CONSTANTS.IS_CLUSTER_DISCONNECTED()) {
|
|
194
|
+
Logger.info('Test cluster is disconnected. Using url for airgap cluster.');
|
|
195
|
+
gitRepoUrlsToCheckAirgap.forEach((url): void => {
|
|
196
|
+
test(`Test start of ${editor.name} with ubi url: ${url}`, async function (): Promise<void> {
|
|
197
|
+
await testWorkspaceStartup(editor.xpath, editor.type, url, true);
|
|
198
|
+
});
|
|
153
199
|
});
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
200
|
+
} else {
|
|
201
|
+
gitRepoUrlsToCheck.forEach((url): void => {
|
|
202
|
+
test(`Test start of ${editor.name} with ubi url: ${url}`, async function (): Promise<void> {
|
|
203
|
+
await testWorkspaceStartup(editor.xpath, editor.type, url, true);
|
|
204
|
+
});
|
|
159
205
|
});
|
|
160
|
-
}
|
|
161
|
-
}
|
|
206
|
+
}
|
|
207
|
+
});
|
|
162
208
|
|
|
163
209
|
teardown('Delete DevWorkspace', async function (): Promise<void> {
|
|
164
210
|
Logger.info('Delete DevWorkspace. After each test.');
|
|
@@ -18,6 +18,7 @@ import { CheCodeLocatorLoader } from '../pageobjects/ide/CheCodeLocatorLoader';
|
|
|
18
18
|
import { By, EditorView, SideBarView, ViewContent, ViewItem, ViewSection, Workbench } from 'monaco-page-objects';
|
|
19
19
|
import { WorkspaceHandlingTests } from '../tests-library/WorkspaceHandlingTests';
|
|
20
20
|
import { RestrictedModeButton } from '../pageobjects/ide/RestrictedModeButton';
|
|
21
|
+
import { AiCodeSignInDialog } from '../pageobjects/ide/AiCodeSignInDialog';
|
|
21
22
|
|
|
22
23
|
@injectable()
|
|
23
24
|
export class ProjectAndFileTests {
|
|
@@ -32,7 +33,9 @@ export class ProjectAndFileTests {
|
|
|
32
33
|
@inject(CLASSES.WorkspaceHandlingTests)
|
|
33
34
|
private readonly workspaceHandlingTests: WorkspaceHandlingTests,
|
|
34
35
|
@inject(CLASSES.RestrictedModeButton)
|
|
35
|
-
private readonly restrictedModeButton: RestrictedModeButton
|
|
36
|
+
private readonly restrictedModeButton: RestrictedModeButton,
|
|
37
|
+
@inject(CLASSES.AiCodeSignInDialog)
|
|
38
|
+
private readonly aiCodeSignInDialog: AiCodeSignInDialog
|
|
36
39
|
) {}
|
|
37
40
|
|
|
38
41
|
async waitWorkspaceReadinessForCheCodeEditor(): Promise<void> {
|
|
@@ -45,6 +48,7 @@ export class ProjectAndFileTests {
|
|
|
45
48
|
);
|
|
46
49
|
const end: number = new Date().getTime();
|
|
47
50
|
Logger.debug(`editor was opened in ${end - start} seconds.`);
|
|
51
|
+
await this.dismissAiCodeSignInDialog();
|
|
48
52
|
} catch (err) {
|
|
49
53
|
Logger.error(`waiting for workspace readiness failed: ${err}`);
|
|
50
54
|
|
|
@@ -116,6 +120,21 @@ export class ProjectAndFileTests {
|
|
|
116
120
|
}
|
|
117
121
|
}
|
|
118
122
|
|
|
123
|
+
/**
|
|
124
|
+
* dismiss 'Sign in to continue with AI-powered development' dialog, when it appears
|
|
125
|
+
*/
|
|
126
|
+
async dismissAiCodeSignInDialog(): Promise<void> {
|
|
127
|
+
Logger.debug();
|
|
128
|
+
|
|
129
|
+
try {
|
|
130
|
+
if (await this.aiCodeSignInDialog.isDialogVisible()) {
|
|
131
|
+
await this.aiCodeSignInDialog.closeDialog();
|
|
132
|
+
}
|
|
133
|
+
} catch (e) {
|
|
134
|
+
Logger.info('"Sign in to continue with AI-powered development" dialog was not shown');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
119
138
|
/**
|
|
120
139
|
* perform to 'Trust' dialog boxes, when they appear
|
|
121
140
|
*/
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/** *******************************************************************
|
|
3
|
-
* copyright (c) 2026 Red Hat, Inc.
|
|
4
|
-
*
|
|
5
|
-
* This program and the accompanying materials are made
|
|
6
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
7
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
8
|
-
*
|
|
9
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
10
|
-
**********************************************************************/
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const fs_1 = __importDefault(require("fs"));
|
|
16
|
-
const path_1 = __importDefault(require("path"));
|
|
17
|
-
const yaml_1 = __importDefault(require("yaml"));
|
|
18
|
-
const inversify_config_1 = require("../../configs/inversify.config");
|
|
19
|
-
const inversify_types_1 = require("../../configs/inversify.types");
|
|
20
|
-
const WorkspaceHandlingTests_1 = require("../../tests-library/WorkspaceHandlingTests");
|
|
21
|
-
const chai_1 = require("chai");
|
|
22
|
-
const Logger_1 = require("../../utils/Logger");
|
|
23
|
-
const BASE_TEST_CONSTANTS_1 = require("../../constants/BASE_TEST_CONSTANTS");
|
|
24
|
-
suite('Check Intellij IDE desktop Editor with all samples', function () {
|
|
25
|
-
this.timeout(24000000);
|
|
26
|
-
const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
|
|
27
|
-
const pathToSampleFile = path_1.default.resolve('resources/default-devfile.yaml');
|
|
28
|
-
const workspaceName = yaml_1.default.parse(fs_1.default.readFileSync(pathToSampleFile, 'utf8')).metadata.name;
|
|
29
|
-
const kubernetesCommandLineToolsExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.KubernetesCommandLineToolsExecutor);
|
|
30
|
-
kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
|
|
31
|
-
const loginTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.LoginTests);
|
|
32
|
-
const dashboard = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.Dashboard);
|
|
33
|
-
const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
|
|
34
|
-
const titleXpath = '/html/body/h1';
|
|
35
|
-
let currentTabHandle = 'undefined';
|
|
36
|
-
const pollingForCheckTitle = 500;
|
|
37
|
-
const editorsForCheck = [
|
|
38
|
-
'//*[@id="editor-selector-card-che-incubator/che-clion-server/latest"]',
|
|
39
|
-
'//*[@id="editor-selector-card-che-incubator/che-goland-server/latest"]',
|
|
40
|
-
'//*[@id="editor-selector-card-che-incubator/che-idea-server/latest"]',
|
|
41
|
-
'//*[@id="editor-selector-card-che-incubator/che-phpstorm-server/latest"]',
|
|
42
|
-
'//*[@id="editor-selector-card-che-incubator/che-pycharm-server/latest"]',
|
|
43
|
-
'//*[@id="editor-selector-card-che-incubator/che-rider-server/latest"]',
|
|
44
|
-
'//*[@id="editor-selector-card-che-incubator/che-rubymine-server/latest"]',
|
|
45
|
-
'//*[@id="editor-selector-card-che-incubator/che-webstorm-server/latest"]',
|
|
46
|
-
'//*[@id="editor-selector-card-che-incubator/jetbrains-sshd/latest"]'
|
|
47
|
-
];
|
|
48
|
-
const samplesForCheck = [
|
|
49
|
-
'Empty Workspace',
|
|
50
|
-
'JBoss EAP 8.0',
|
|
51
|
-
'Java Lombok',
|
|
52
|
-
'Node.js Express',
|
|
53
|
-
'Python',
|
|
54
|
-
'Quarkus REST API',
|
|
55
|
-
'.NET',
|
|
56
|
-
'Ansible',
|
|
57
|
-
'C/C++',
|
|
58
|
-
'Go',
|
|
59
|
-
'PHP'
|
|
60
|
-
];
|
|
61
|
-
const gitRepoUrlsToCheck = [
|
|
62
|
-
'https://github.com/crw-qe/quarkus-api-example-public/tree/ubi8-latest',
|
|
63
|
-
'https://github.com/crw-qe/ubi9-based-sample-public/tree/ubi9-minimal'
|
|
64
|
-
];
|
|
65
|
-
const gitRepoUrlsToCheckAirgap = [
|
|
66
|
-
'https://gh.crw-qe.com/test-automation-only/ubi8/tree/ubi8-latest',
|
|
67
|
-
'https://gh.crw-qe.com/test-automation-only/ubi9-based-sample-public/tree/ubi9-minimal'
|
|
68
|
-
];
|
|
69
|
-
function clearCurrentTabHandle() {
|
|
70
|
-
currentTabHandle = 'undefined';
|
|
71
|
-
}
|
|
72
|
-
suiteSetup('Login into Che', async function () {
|
|
73
|
-
await loginTests.loginIntoChe();
|
|
74
|
-
});
|
|
75
|
-
async function testWorkspaceStartup(editorXpath, sampleNameOrUrl, isUrl) {
|
|
76
|
-
await dashboard.openDashboard();
|
|
77
|
-
currentTabHandle = await browserTabsUtil.getCurrentWindowHandle();
|
|
78
|
-
await dashboard.clickCreateWorkspaceButton();
|
|
79
|
-
if (isUrl) {
|
|
80
|
-
await workspaceHandlingTests.createAndOpenWorkspaceWithSpecificEditorAndGitUrl(editorXpath, sampleNameOrUrl, titleXpath, pollingForCheckTitle);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
await workspaceHandlingTests.createAndOpenWorkspaceWithSpecificEditorAndSample(editorXpath, sampleNameOrUrl, titleXpath, pollingForCheckTitle);
|
|
84
|
-
}
|
|
85
|
-
// check title
|
|
86
|
-
const headerText = await workspaceHandlingTests.getTextFromUIElementByXpath(titleXpath);
|
|
87
|
-
(0, chai_1.expect)('Workspace ' + WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName() + ' is running').equal(headerText);
|
|
88
|
-
}
|
|
89
|
-
editorsForCheck.forEach((editorXpath) => {
|
|
90
|
-
samplesForCheck.forEach((sampleName) => {
|
|
91
|
-
test(`Test start of Editor with xPath: ${editorXpath} and with sample name: ${sampleName}`, async function () {
|
|
92
|
-
await testWorkspaceStartup(editorXpath, sampleName, false);
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
editorsForCheck.forEach((editorXpath) => {
|
|
97
|
-
if (BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.IS_CLUSTER_DISCONNECTED()) {
|
|
98
|
-
gitRepoUrlsToCheckAirgap.forEach((gitUbiUrl) => {
|
|
99
|
-
test(`Test start of Editor with xPath: ${editorXpath} and with ubi url: ${gitUbiUrl}`, async function () {
|
|
100
|
-
await testWorkspaceStartup(editorXpath, gitUbiUrl, true);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
gitRepoUrlsToCheck.forEach((gitUbiUrl) => {
|
|
106
|
-
test(`Test start of Editor with xPath: ${editorXpath} and with ubi url: ${gitUbiUrl}`, async function () {
|
|
107
|
-
await testWorkspaceStartup(editorXpath, gitUbiUrl, true);
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
teardown('Delete DevWorkspace', async function () {
|
|
113
|
-
Logger_1.Logger.info('Delete DevWorkspace. After each test.');
|
|
114
|
-
if (currentTabHandle !== 'undefined') {
|
|
115
|
-
await browserTabsUtil.switchToWindow(currentTabHandle);
|
|
116
|
-
}
|
|
117
|
-
await dashboard.openDashboard();
|
|
118
|
-
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
119
|
-
if (WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName() !== 'undefined') {
|
|
120
|
-
Logger_1.Logger.info('Workspace name is defined. Deleting workspace...');
|
|
121
|
-
await dashboard.deleteStoppedWorkspaceByUI(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
122
|
-
}
|
|
123
|
-
WorkspaceHandlingTests_1.WorkspaceHandlingTests.clearWorkspaceName();
|
|
124
|
-
clearCurrentTabHandle();
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
//# sourceMappingURL=StartWorkspaceUsingIntellijIdeaEditor.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StartWorkspaceUsingIntellijIdeaEditor.spec.js","sourceRoot":"","sources":["../../../specs/dashboard-samples/StartWorkspaceUsingIntellijIdeaEditor.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StartWorkspaceUsingVSCodeDesktopSshEditor.spec.js","sourceRoot":"","sources":["../../../specs/dashboard-samples/StartWorkspaceUsingVSCodeDesktopSshEditor.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
/** *******************************************************************
|
|
2
|
-
* copyright (c) 2026 Red Hat, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made
|
|
5
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
-
*
|
|
8
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
-
**********************************************************************/
|
|
10
|
-
|
|
11
|
-
import { KubernetesCommandLineToolsExecutor } from '../../utils/KubernetesCommandLineToolsExecutor';
|
|
12
|
-
import fs from 'fs';
|
|
13
|
-
import path from 'path';
|
|
14
|
-
import YAML from 'yaml';
|
|
15
|
-
import { e2eContainer } from '../../configs/inversify.config';
|
|
16
|
-
import { CLASSES } from '../../configs/inversify.types';
|
|
17
|
-
import { LoginTests } from '../../tests-library/LoginTests';
|
|
18
|
-
import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
|
|
19
|
-
import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
|
|
20
|
-
import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
|
|
21
|
-
import { expect } from 'chai';
|
|
22
|
-
import { Logger } from '../../utils/Logger';
|
|
23
|
-
import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
|
|
24
|
-
|
|
25
|
-
suite('Check Intellij IDE desktop Editor with all samples', function (): void {
|
|
26
|
-
this.timeout(24000000);
|
|
27
|
-
const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
|
|
28
|
-
const pathToSampleFile: string = path.resolve('resources/default-devfile.yaml');
|
|
29
|
-
const workspaceName: string = YAML.parse(fs.readFileSync(pathToSampleFile, 'utf8')).metadata.name;
|
|
30
|
-
const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = e2eContainer.get(
|
|
31
|
-
CLASSES.KubernetesCommandLineToolsExecutor
|
|
32
|
-
);
|
|
33
|
-
kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
|
|
34
|
-
const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
|
|
35
|
-
const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
|
|
36
|
-
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
37
|
-
|
|
38
|
-
const titleXpath: string = '/html/body/h1';
|
|
39
|
-
let currentTabHandle: string = 'undefined';
|
|
40
|
-
|
|
41
|
-
const pollingForCheckTitle: number = 500;
|
|
42
|
-
|
|
43
|
-
const editorsForCheck: string[] = [
|
|
44
|
-
'//*[@id="editor-selector-card-che-incubator/che-clion-server/latest"]',
|
|
45
|
-
'//*[@id="editor-selector-card-che-incubator/che-goland-server/latest"]',
|
|
46
|
-
'//*[@id="editor-selector-card-che-incubator/che-idea-server/latest"]',
|
|
47
|
-
'//*[@id="editor-selector-card-che-incubator/che-phpstorm-server/latest"]',
|
|
48
|
-
'//*[@id="editor-selector-card-che-incubator/che-pycharm-server/latest"]',
|
|
49
|
-
'//*[@id="editor-selector-card-che-incubator/che-rider-server/latest"]',
|
|
50
|
-
'//*[@id="editor-selector-card-che-incubator/che-rubymine-server/latest"]',
|
|
51
|
-
'//*[@id="editor-selector-card-che-incubator/che-webstorm-server/latest"]',
|
|
52
|
-
'//*[@id="editor-selector-card-che-incubator/jetbrains-sshd/latest"]'
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
const samplesForCheck: string[] = [
|
|
56
|
-
'Empty Workspace',
|
|
57
|
-
'JBoss EAP 8.0',
|
|
58
|
-
'Java Lombok',
|
|
59
|
-
'Node.js Express',
|
|
60
|
-
'Python',
|
|
61
|
-
'Quarkus REST API',
|
|
62
|
-
'.NET',
|
|
63
|
-
'Ansible',
|
|
64
|
-
'C/C++',
|
|
65
|
-
'Go',
|
|
66
|
-
'PHP'
|
|
67
|
-
];
|
|
68
|
-
|
|
69
|
-
const gitRepoUrlsToCheck: string[] = [
|
|
70
|
-
'https://github.com/crw-qe/quarkus-api-example-public/tree/ubi8-latest',
|
|
71
|
-
'https://github.com/crw-qe/ubi9-based-sample-public/tree/ubi9-minimal'
|
|
72
|
-
];
|
|
73
|
-
|
|
74
|
-
const gitRepoUrlsToCheckAirgap: string[] = [
|
|
75
|
-
'https://gh.crw-qe.com/test-automation-only/ubi8/tree/ubi8-latest',
|
|
76
|
-
'https://gh.crw-qe.com/test-automation-only/ubi9-based-sample-public/tree/ubi9-minimal'
|
|
77
|
-
];
|
|
78
|
-
|
|
79
|
-
function clearCurrentTabHandle(): void {
|
|
80
|
-
currentTabHandle = 'undefined';
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
suiteSetup('Login into Che', async function (): Promise<void> {
|
|
84
|
-
await loginTests.loginIntoChe();
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
async function testWorkspaceStartup(editorXpath: string, sampleNameOrUrl: string, isUrl: boolean): Promise<void> {
|
|
88
|
-
await dashboard.openDashboard();
|
|
89
|
-
currentTabHandle = await browserTabsUtil.getCurrentWindowHandle();
|
|
90
|
-
await dashboard.clickCreateWorkspaceButton();
|
|
91
|
-
|
|
92
|
-
if (isUrl) {
|
|
93
|
-
await workspaceHandlingTests.createAndOpenWorkspaceWithSpecificEditorAndGitUrl(
|
|
94
|
-
editorXpath,
|
|
95
|
-
sampleNameOrUrl,
|
|
96
|
-
titleXpath,
|
|
97
|
-
pollingForCheckTitle
|
|
98
|
-
);
|
|
99
|
-
} else {
|
|
100
|
-
await workspaceHandlingTests.createAndOpenWorkspaceWithSpecificEditorAndSample(
|
|
101
|
-
editorXpath,
|
|
102
|
-
sampleNameOrUrl,
|
|
103
|
-
titleXpath,
|
|
104
|
-
pollingForCheckTitle
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// check title
|
|
109
|
-
const headerText: string = await workspaceHandlingTests.getTextFromUIElementByXpath(titleXpath);
|
|
110
|
-
expect('Workspace ' + WorkspaceHandlingTests.getWorkspaceName() + ' is running').equal(headerText);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
editorsForCheck.forEach((editorXpath): void => {
|
|
114
|
-
samplesForCheck.forEach((sampleName): void => {
|
|
115
|
-
test(`Test start of Editor with xPath: ${editorXpath} and with sample name: ${sampleName}`, async function (): Promise<void> {
|
|
116
|
-
await testWorkspaceStartup(editorXpath, sampleName, false);
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
editorsForCheck.forEach((editorXpath): void => {
|
|
122
|
-
if (BASE_TEST_CONSTANTS.IS_CLUSTER_DISCONNECTED()) {
|
|
123
|
-
gitRepoUrlsToCheckAirgap.forEach((gitUbiUrl): void => {
|
|
124
|
-
test(`Test start of Editor with xPath: ${editorXpath} and with ubi url: ${gitUbiUrl}`, async function (): Promise<void> {
|
|
125
|
-
await testWorkspaceStartup(editorXpath, gitUbiUrl, true);
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
} else {
|
|
129
|
-
gitRepoUrlsToCheck.forEach((gitUbiUrl): void => {
|
|
130
|
-
test(`Test start of Editor with xPath: ${editorXpath} and with ubi url: ${gitUbiUrl}`, async function (): Promise<void> {
|
|
131
|
-
await testWorkspaceStartup(editorXpath, gitUbiUrl, true);
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
teardown('Delete DevWorkspace', async function (): Promise<void> {
|
|
138
|
-
Logger.info('Delete DevWorkspace. After each test.');
|
|
139
|
-
if (currentTabHandle !== 'undefined') {
|
|
140
|
-
await browserTabsUtil.switchToWindow(currentTabHandle);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
await dashboard.openDashboard();
|
|
144
|
-
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
145
|
-
|
|
146
|
-
if (WorkspaceHandlingTests.getWorkspaceName() !== 'undefined') {
|
|
147
|
-
Logger.info('Workspace name is defined. Deleting workspace...');
|
|
148
|
-
await dashboard.deleteStoppedWorkspaceByUI(WorkspaceHandlingTests.getWorkspaceName());
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
WorkspaceHandlingTests.clearWorkspaceName();
|
|
152
|
-
clearCurrentTabHandle();
|
|
153
|
-
});
|
|
154
|
-
});
|