@eclipse-che/che-e2e 7.81.0-next-a25d3b5 → 7.81.0-next-07ed023
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/constants/PLUGIN_TEST_CONSTANTS.ts +1 -1
- package/dist/constants/PLUGIN_TEST_CONSTANTS.js +1 -1
- package/dist/constants/PLUGIN_TEST_CONSTANTS.js.map +1 -1
- package/dist/pageobjects/webterminal/WebTerminalPage.js +59 -7
- package/dist/pageobjects/webterminal/WebTerminalPage.js.map +1 -1
- package/dist/specs/dashboard-samples/Documentation.spec.js +3 -8
- package/dist/specs/dashboard-samples/Documentation.spec.js.map +1 -1
- package/dist/specs/dashboard-samples/Quarkus.spec.js +1 -1
- package/dist/specs/dashboard-samples/Quarkus.spec.js.map +1 -1
- package/dist/specs/web-terminal/WebTerminalUnderAdmin.spec.js +6 -5
- package/dist/specs/web-terminal/WebTerminalUnderAdmin.spec.js.map +1 -1
- package/dist/specs/web-terminal/WebTerminalUnderRegularUser.spec.js +77 -0
- package/dist/specs/web-terminal/WebTerminalUnderRegularUser.spec.js.map +1 -0
- package/package.json +1 -1
- package/pageobjects/webterminal/WebTerminalPage.ts +68 -6
- package/specs/dashboard-samples/Documentation.spec.ts +3 -9
- package/specs/dashboard-samples/Quarkus.spec.ts +1 -1
- package/specs/web-terminal/WebTerminalUnderAdmin.spec.ts +7 -6
- package/specs/web-terminal/WebTerminalUnderRegularUser.spec.ts +91 -0
|
@@ -13,5 +13,5 @@ export const PLUGIN_TEST_CONSTANTS: { TS_SAMPLE_LIST: string } = {
|
|
|
13
13
|
*/
|
|
14
14
|
TS_SAMPLE_LIST:
|
|
15
15
|
process.env.TS_SAMPLE_LIST ||
|
|
16
|
-
'Node.js MongoDB,Node.js Express,Java
|
|
16
|
+
'Node.js MongoDB,Node.js Express,Java Lombok,Quarkus REST API,Python,.NET,C/C++,Go,PHP,Ansible'
|
|
17
17
|
};
|
|
@@ -15,6 +15,6 @@ exports.PLUGIN_TEST_CONSTANTS = {
|
|
|
15
15
|
* dashboard samples to check in RecommendedExtensions.spec.ts
|
|
16
16
|
*/
|
|
17
17
|
TS_SAMPLE_LIST: process.env.TS_SAMPLE_LIST ||
|
|
18
|
-
'Node.js MongoDB,Node.js Express,Java
|
|
18
|
+
'Node.js MongoDB,Node.js Express,Java Lombok,Quarkus REST API,Python,.NET,C/C++,Go,PHP,Ansible'
|
|
19
19
|
};
|
|
20
20
|
//# sourceMappingURL=PLUGIN_TEST_CONSTANTS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PLUGIN_TEST_CONSTANTS.js","sourceRoot":"","sources":["../../constants/PLUGIN_TEST_CONSTANTS.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;wEAQwE;AAC3D,QAAA,qBAAqB,GAA+B;IAChE;;OAEG;IACH,cAAc,EACb,OAAO,CAAC,GAAG,CAAC,cAAc;QAC1B
|
|
1
|
+
{"version":3,"file":"PLUGIN_TEST_CONSTANTS.js","sourceRoot":"","sources":["../../constants/PLUGIN_TEST_CONSTANTS.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;wEAQwE;AAC3D,QAAA,qBAAqB,GAA+B;IAChE;;OAEG;IACH,cAAc,EACb,OAAO,CAAC,GAAG,CAAC,cAAc;QAC1B,+FAA+F;CAChG,CAAC"}
|
|
@@ -13,7 +13,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
13
13
|
};
|
|
14
14
|
var WebTerminalPage_1;
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.WebTerminalPage = void 0;
|
|
16
|
+
exports.WebTerminalPage = exports.TimeUnits = void 0;
|
|
17
17
|
/** *******************************************************************
|
|
18
18
|
* copyright (c) 2019-2023 Red Hat, Inc.
|
|
19
19
|
*
|
|
@@ -30,6 +30,12 @@ const inversify_types_1 = require("../../configs/inversify.types");
|
|
|
30
30
|
const selenium_webdriver_1 = require("selenium-webdriver");
|
|
31
31
|
const Logger_1 = require("../../utils/Logger");
|
|
32
32
|
const TIMEOUT_CONSTANTS_1 = require("../../constants/TIMEOUT_CONSTANTS");
|
|
33
|
+
var TimeUnits;
|
|
34
|
+
(function (TimeUnits) {
|
|
35
|
+
TimeUnits["Seconds"] = "Seconds";
|
|
36
|
+
TimeUnits["Minutes"] = "Minutes";
|
|
37
|
+
TimeUnits["Hours"] = "Hours";
|
|
38
|
+
})(TimeUnits = exports.TimeUnits || (exports.TimeUnits = {}));
|
|
33
39
|
let WebTerminalPage = WebTerminalPage_1 = class WebTerminalPage {
|
|
34
40
|
constructor(driverHelper) {
|
|
35
41
|
this.driverHelper = driverHelper;
|
|
@@ -42,7 +48,7 @@ let WebTerminalPage = WebTerminalPage_1 = class WebTerminalPage {
|
|
|
42
48
|
Logger_1.Logger.debug();
|
|
43
49
|
await this.driverHelper.waitPresence(WebTerminalPage_1.WEB_TERMINAL_PAGE, TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_WAIT_LOADER_ABSENCE_TIMEOUT);
|
|
44
50
|
}
|
|
45
|
-
async
|
|
51
|
+
async clickOnStartWebTerminalButton() {
|
|
46
52
|
Logger_1.Logger.debug();
|
|
47
53
|
await this.driverHelper.waitAndClick(WebTerminalPage_1.START_WT_COMMAND_LINE_TERMINAL_BUTTON);
|
|
48
54
|
}
|
|
@@ -53,7 +59,7 @@ let WebTerminalPage = WebTerminalPage_1 = class WebTerminalPage {
|
|
|
53
59
|
async openWebTerminal() {
|
|
54
60
|
Logger_1.Logger.debug();
|
|
55
61
|
await this.clickOnWebTerminalIcon();
|
|
56
|
-
await this.
|
|
62
|
+
await this.clickOnStartWebTerminalButton();
|
|
57
63
|
await this.waitTerminalIsStarted();
|
|
58
64
|
}
|
|
59
65
|
async waitDisabledProjectFieldAndGetProjectName() {
|
|
@@ -107,9 +113,48 @@ let WebTerminalPage = WebTerminalPage_1 = class WebTerminalPage {
|
|
|
107
113
|
await this.waitTimeoutButton();
|
|
108
114
|
await this.waitImageButton();
|
|
109
115
|
}
|
|
110
|
-
async waitTerminalInactivity() {
|
|
111
|
-
await this.driverHelper.
|
|
112
|
-
await this.driverHelper.
|
|
116
|
+
async waitTerminalInactivity(customTimeout) {
|
|
117
|
+
await this.driverHelper.waitVisibility(WebTerminalPage_1.TERMINAL_INACTIVITY_MESS, TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_COMMON_PLUGIN_TEST_TIMEOUT || customTimeout);
|
|
118
|
+
await this.driverHelper.waitVisibility(WebTerminalPage_1.RESTART_BUTTON);
|
|
119
|
+
}
|
|
120
|
+
async waitWebTerminalProjectNameField() {
|
|
121
|
+
await this.driverHelper.waitPresence(WebTerminalPage_1.PROJECT_NAMESPACE_DROP_DAWN);
|
|
122
|
+
}
|
|
123
|
+
async typeProjectName(projectName) {
|
|
124
|
+
await this.waitWebTerminalProjectNameField();
|
|
125
|
+
await this.driverHelper.type(WebTerminalPage_1.PROJECT_NAME_FIELD, projectName, TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_SELENIUM_CLICK_ON_VISIBLE_ITEM);
|
|
126
|
+
}
|
|
127
|
+
async openProjectDropDawn() {
|
|
128
|
+
await this.driverHelper.waitAndClick(WebTerminalPage_1.PROJECT_NAMESPACE_DROP_DAWN);
|
|
129
|
+
}
|
|
130
|
+
async typeProjectNameForSelecting(projectName) {
|
|
131
|
+
await this.driverHelper.type(WebTerminalPage_1.PROJECT_SELECTION_FIELD, projectName);
|
|
132
|
+
}
|
|
133
|
+
async selectProjectFromDropDawnList(projectName) {
|
|
134
|
+
await this.driverHelper.waitAndClick(selenium_webdriver_1.By.xpath(`//span[@class="pf-c-menu__item-text" and text()="${projectName}"]`));
|
|
135
|
+
}
|
|
136
|
+
async findAndSelectProject(projectName) {
|
|
137
|
+
await this.openProjectDropDawn();
|
|
138
|
+
await this.typeProjectNameForSelecting(projectName);
|
|
139
|
+
await this.selectProjectFromDropDawnList(projectName);
|
|
140
|
+
}
|
|
141
|
+
async clickOnTimeoutButton() {
|
|
142
|
+
await this.driverHelper.waitAndClick(WebTerminalPage_1.TIMEOUT_BUTTON);
|
|
143
|
+
}
|
|
144
|
+
async setTimeoutByEntering(timeValue) {
|
|
145
|
+
await this.driverHelper.type(WebTerminalPage_1.TIMEOUT_INPUT, timeValue.toString());
|
|
146
|
+
}
|
|
147
|
+
async clickOnPlusBtn() {
|
|
148
|
+
await this.driverHelper.waitAndClick(WebTerminalPage_1.INCREMENT_TIMEOUT_BTN);
|
|
149
|
+
}
|
|
150
|
+
async clickOnMinutesBtn() {
|
|
151
|
+
await this.driverHelper.waitAndClick(WebTerminalPage_1.DECREMENT_TIMEOUT_BTN);
|
|
152
|
+
}
|
|
153
|
+
async clickOnTimeUnitDropDown() {
|
|
154
|
+
await this.driverHelper.waitAndClick(WebTerminalPage_1.TIME_UNIT_DROP_DAWN);
|
|
155
|
+
}
|
|
156
|
+
async selectTimeUnit(timeUnits) {
|
|
157
|
+
await this.driverHelper.waitAndClick(selenium_webdriver_1.By.xpath(`//button[@data-test-id='dropdown-menu' and text()='${timeUnits}']`));
|
|
113
158
|
}
|
|
114
159
|
};
|
|
115
160
|
WebTerminalPage.TIMEOUT_BUTTON = selenium_webdriver_1.By.xpath('//button[(text()="Timeout")]');
|
|
@@ -119,8 +164,15 @@ WebTerminalPage.WEB_TERMINAL_PAGE = selenium_webdriver_1.By.xpath('//*[@class="x
|
|
|
119
164
|
WebTerminalPage.START_WT_COMMAND_LINE_TERMINAL_BUTTON = selenium_webdriver_1.By.css('button[data-test-id="submit-button"]');
|
|
120
165
|
WebTerminalPage.WEB_TERMINAL_PROJECT_SELECTION_DROPDOWN = selenium_webdriver_1.By.css('input#form-input-namespace-field');
|
|
121
166
|
WebTerminalPage.WEB_TERMINAL_PROJECT_CANCEL_BUTTON = selenium_webdriver_1.By.css('button[data-test-id="reset-button"]');
|
|
122
|
-
WebTerminalPage.TERMINAL_INACTIVITY_MESS = selenium_webdriver_1.By.xpath('//div[text()
|
|
167
|
+
WebTerminalPage.TERMINAL_INACTIVITY_MESS = selenium_webdriver_1.By.xpath('//div[contains(text(),"The terminal connection has closed")]');
|
|
123
168
|
WebTerminalPage.RESTART_BUTTON = selenium_webdriver_1.By.xpath('//button[text()="Restart terminal"]');
|
|
169
|
+
WebTerminalPage.PROJECT_NAMESPACE_DROP_DAWN = selenium_webdriver_1.By.css('button#form-ns-dropdown-namespace-field');
|
|
170
|
+
WebTerminalPage.PROJECT_SELECTION_FIELD = selenium_webdriver_1.By.css('input[data-test-id="dropdown-text-filter"]');
|
|
171
|
+
WebTerminalPage.PROJECT_NAME_FIELD = selenium_webdriver_1.By.css('input#form-input-newNamespace-field');
|
|
172
|
+
WebTerminalPage.TIMEOUT_INPUT = selenium_webdriver_1.By.css('input[aria-describedby="form-resource-limit-advancedOptions-timeout-limit-field-helper"]');
|
|
173
|
+
WebTerminalPage.INCREMENT_TIMEOUT_BTN = selenium_webdriver_1.By.css('button[data-test-id="Decrement"]');
|
|
174
|
+
WebTerminalPage.DECREMENT_TIMEOUT_BTN = selenium_webdriver_1.By.css('button[data-test-id="Increment');
|
|
175
|
+
WebTerminalPage.TIME_UNIT_DROP_DAWN = selenium_webdriver_1.By.css('div.request-size-input__unit button');
|
|
124
176
|
WebTerminalPage = WebTerminalPage_1 = __decorate([
|
|
125
177
|
(0, inversify_1.injectable)(),
|
|
126
178
|
__param(0, (0, inversify_1.inject)(inversify_types_1.CLASSES.DriverHelper)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebTerminalPage.js","sourceRoot":"","sources":["../../../pageobjects/webterminal/WebTerminalPage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;wEAQwE;AACxE,4BAA0B;AAC1B,yCAA+C;AAC/C,2DAAwD;AACxD,mEAAwD;AACxD,2DAA6C;AAC7C,+CAA4C;AAC5C,yEAAsE;
|
|
1
|
+
{"version":3,"file":"WebTerminalPage.js","sourceRoot":"","sources":["../../../pageobjects/webterminal/WebTerminalPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS_1.BA
|
|
|
26
26
|
const workspaceDetails = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceDetails);
|
|
27
27
|
const shellExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ShellExecutor);
|
|
28
28
|
const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
|
|
29
|
-
const
|
|
29
|
+
const majorMinorVersion = BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TESTING_APPLICATION_VERSION.split('.').slice(0, 2).join('.'); // extract major.minor version from full version
|
|
30
30
|
let parentGUID = '';
|
|
31
31
|
let docs, links, productVersion;
|
|
32
32
|
let webSocketTroubleshooting, workspace, devfile, general, storageTypes;
|
|
@@ -37,7 +37,7 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS_1.BA
|
|
|
37
37
|
});
|
|
38
38
|
suiteSetup('Get links from product version github branch', function () {
|
|
39
39
|
try {
|
|
40
|
-
({ docs, links, productVersion } = JSON.parse(shellExecutor.curl(`https://raw.githubusercontent.com/redhat-developer/devspaces-images/devspaces-${
|
|
40
|
+
({ docs, links, productVersion } = JSON.parse(shellExecutor.curl(`https://raw.githubusercontent.com/redhat-developer/devspaces-images/devspaces-${majorMinorVersion}-rhel-8/devspaces-dashboard/packages/dashboard-frontend/assets/branding/product.json`)));
|
|
41
41
|
}
|
|
42
42
|
catch (e) {
|
|
43
43
|
Logger_1.Logger.error('Cannot fetch documentation links');
|
|
@@ -50,7 +50,7 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS_1.BA
|
|
|
50
50
|
});
|
|
51
51
|
test('Check if product.json config contains correct application version', function () {
|
|
52
52
|
[productVersion, links[1].href, devfile, workspace, general, storageTypes, webSocketTroubleshooting].forEach((e) => {
|
|
53
|
-
(0, chai_1.expect)(e, 'Fetched links not matches with tested product version').contains(
|
|
53
|
+
(0, chai_1.expect)(e, 'Fetched links not matches with tested product version').contains(majorMinorVersion);
|
|
54
54
|
});
|
|
55
55
|
});
|
|
56
56
|
test('Check if documentation section "About" present on Dashboard', async function () {
|
|
@@ -85,11 +85,6 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS_1.BA
|
|
|
85
85
|
await workspaceDetails.clickStorageTypeInfo();
|
|
86
86
|
(0, chai_1.expect)(await workspaceDetails.getOpenStorageTypeDocumentationLink(), '"Storage types" doc link is broken').eqls(storageTypes);
|
|
87
87
|
});
|
|
88
|
-
test('Check if Workspace Details page contains "Devfile" documentation link', async function () {
|
|
89
|
-
await workspaceDetails.closeStorageTypeInfo();
|
|
90
|
-
await workspaceDetails.selectTab('Devfile');
|
|
91
|
-
(0, chai_1.expect)(await workspaceDetails.getDevfileDocumentationLink(), '"Devfile" doc link is broken').eqls(devfile);
|
|
92
|
-
});
|
|
93
88
|
if (BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.IS_PRODUCT_DOCUMENTATION_RELEASED) {
|
|
94
89
|
test('Check if product.json documentation links returns status code 200', async function () {
|
|
95
90
|
const documentationLinks = [devfile, workspace, general, storageTypes, webSocketTroubleshooting];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Documentation.spec.js","sourceRoot":"","sources":["../../../specs/dashboard-samples/Documentation.spec.ts"],"names":[],"mappings":";;;;;AAUA,4CAAoB;AACpB,gDAAwB;AACxB,gDAAwB;AACxB,+BAA8B;AAC9B,qEAA8D;AAC9D,mEAAwD;AAOxD,kDAA0B;AAC1B,6EAA0E;AAC1E,qEAAkE;AAClE,+CAA4C;AAE5C,2BAA2B;AAC3B,KAAK,CAAC,kDAAkD,yCAAmB,CAAC,gBAAgB,EAAE,EAAE;IAC/F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,gBAAgB,GAAW,cAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAChF,MAAM,aAAa,GAAW,cAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IAClG,MAAM,kCAAkC,GAAuC,+BAAY,CAAC,GAAG,CAC9F,yBAAO,CAAC,kCAAkC,CAC1C,CAAC;IACF,kCAAkC,CAAC,aAAa,GAAG,aAAa,CAAC;IACjE,MAAM,UAAU,GAAe,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,SAAS,GAAc,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,UAAU,GAAe,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAqB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,gBAAgB,CAAC,CAAC;IACtF,MAAM,aAAa,GAAkB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,aAAa,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAoB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,eAAe,CAAC,CAAC;IACnF,MAAM,
|
|
1
|
+
{"version":3,"file":"Documentation.spec.js","sourceRoot":"","sources":["../../../specs/dashboard-samples/Documentation.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ const inversify_types_1 = require("../../configs/inversify.types");
|
|
|
15
15
|
const WorkspaceHandlingTests_1 = require("../../tests-library/WorkspaceHandlingTests");
|
|
16
16
|
const BASE_TEST_CONSTANTS_1 = require("../../constants/BASE_TEST_CONSTANTS");
|
|
17
17
|
const chai_1 = require("chai");
|
|
18
|
-
const stackName = '
|
|
18
|
+
const stackName = 'Quarkus REST API';
|
|
19
19
|
suite(`The ${stackName} userstory ${BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function () {
|
|
20
20
|
const projectAndFileTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ProjectAndFileTests);
|
|
21
21
|
const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quarkus.spec.js","sourceRoot":"","sources":["../../../specs/dashboard-samples/Quarkus.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;AAGxE,8CAAyD;AAEzD,qEAA8D;AAC9D,mEAA+D;AAC/D,uFAAoF;AAEpF,6EAA0E;AAE1E,+BAA8B;AAI9B,MAAM,SAAS,GAAW,
|
|
1
|
+
{"version":3,"file":"Quarkus.spec.js","sourceRoot":"","sources":["../../../specs/dashboard-samples/Quarkus.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,28 +23,29 @@ suite(`Login to Openshift console and start WebTerminal ${BASE_TEST_CONSTANTS_1.
|
|
|
23
23
|
const webTerminal = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WebTerminalPage);
|
|
24
24
|
const shellExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ShellExecutor);
|
|
25
25
|
const kubernetesCommandLineToolsExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.KubernetesCommandLineToolsExecutor);
|
|
26
|
+
const defaultWTOProjectNameForAdmin = 'openshift-terminal';
|
|
26
27
|
const driverHelper = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.DriverHelper);
|
|
27
28
|
const webTerminalToolContainerName = 'web-terminal-tooling';
|
|
28
29
|
const fileForVerificationTerminalCommands = 'result.txt';
|
|
29
30
|
suiteSetup(function () {
|
|
30
31
|
kubernetesCommandLineToolsExecutor.loginToOcp('admin');
|
|
31
32
|
});
|
|
33
|
+
suiteTeardown(function () {
|
|
34
|
+
shellExecutor.executeArbitraryShellScript(`oc delete dw --all -n ${defaultWTOProjectNameForAdmin}`);
|
|
35
|
+
});
|
|
32
36
|
loginTests.loginIntoOcpConsole();
|
|
33
37
|
test('Open Web Terminal after first installation', async function () {
|
|
34
38
|
await ocpMainPage.waitOpenMainPage();
|
|
35
39
|
await driverHelper.refreshPage();
|
|
36
40
|
await webTerminal.clickOnWebTerminalIcon();
|
|
37
41
|
});
|
|
38
|
-
test('Verify inactivity dropdown menu for admin user', async function () {
|
|
39
|
-
await webTerminal.clickOnProjectListDropDown();
|
|
40
|
-
});
|
|
41
42
|
test('Verify first started WTO widget and disabled state Project field under admin user', async function () {
|
|
42
43
|
await webTerminal.waitTerminalWidget();
|
|
43
|
-
(0, chai_1.expect)(await webTerminal.waitDisabledProjectFieldAndGetProjectName()).equal(
|
|
44
|
+
(0, chai_1.expect)(await webTerminal.waitDisabledProjectFieldAndGetProjectName()).equal(defaultWTOProjectNameForAdmin);
|
|
44
45
|
});
|
|
45
46
|
test('Check starting Web Terminal under admin', async function () {
|
|
46
47
|
kubernetesCommandLineToolsExecutor.namespace = await webTerminal.getAdminProjectName();
|
|
47
|
-
await webTerminal.
|
|
48
|
+
await webTerminal.clickOnStartWebTerminalButton();
|
|
48
49
|
await webTerminal.waitTerminalIsStarted();
|
|
49
50
|
await webTerminal.typeAndEnterIntoWebTerminal(`oc whoami > ${fileForVerificationTerminalCommands}`);
|
|
50
51
|
const devWorkspaceYaml = shellExecutor.executeArbitraryShellScript(`oc get dw -n ${kubernetesCommandLineToolsExecutor.namespace} -o yaml`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebTerminalUnderAdmin.spec.js","sourceRoot":"","sources":["../../../specs/web-terminal/WebTerminalUnderAdmin.spec.ts"],"names":[],"mappings":";;;;;AAAA;;;;;;;;wEAQwE;AACxE,mEAAwD;AACxD,qEAA8D;AAG9D,6EAA0E;AAK1E,+BAA8B;AAC9B,gDAAwB;AAExB,KAAK,CAAC,oDAAoD,yCAAmB,CAAC,gBAAgB,EAAE,EAAE;IACjG,MAAM,UAAU,GAAe,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,WAAW,GAAgB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,WAAW,CAAC,CAAC;IACvE,MAAM,WAAW,GAAoB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,eAAe,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAkB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,aAAa,CAAC,CAAC;IAC7E,MAAM,kCAAkC,GAAuC,+BAAY,CAAC,GAAG,CAC9F,yBAAO,CAAC,kCAAkC,CAC1C,CAAC;
|
|
1
|
+
{"version":3,"file":"WebTerminalUnderAdmin.spec.js","sourceRoot":"","sources":["../../../specs/web-terminal/WebTerminalUnderAdmin.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
/** *******************************************************************
|
|
7
|
+
* copyright (c) 2024 Red Hat, Inc.
|
|
8
|
+
*
|
|
9
|
+
* This program and the accompanying materials are made
|
|
10
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
11
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
12
|
+
*
|
|
13
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
14
|
+
**********************************************************************/
|
|
15
|
+
const inversify_types_1 = require("../../configs/inversify.types");
|
|
16
|
+
const inversify_config_1 = require("../../configs/inversify.config");
|
|
17
|
+
const BASE_TEST_CONSTANTS_1 = require("../../constants/BASE_TEST_CONSTANTS");
|
|
18
|
+
const WebTerminalPage_1 = require("../../pageobjects/webterminal/WebTerminalPage");
|
|
19
|
+
const chai_1 = require("chai");
|
|
20
|
+
const yaml_1 = __importDefault(require("yaml"));
|
|
21
|
+
const mocha_1 = require("mocha");
|
|
22
|
+
const selenium_webdriver_1 = require("selenium-webdriver");
|
|
23
|
+
suite(`Login to Openshift console and check WebTerminal ${BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function () {
|
|
24
|
+
const webTerminalToolContainerName = 'web-terminal-tooling';
|
|
25
|
+
const testProjectName = 'wto-under-regular-user-test';
|
|
26
|
+
const fileForVerificationTerminalCommands = 'result.txt';
|
|
27
|
+
const loginTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.LoginTests);
|
|
28
|
+
const ocpMainPage = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.OcpMainPage);
|
|
29
|
+
const webTerminal = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WebTerminalPage);
|
|
30
|
+
const shellExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ShellExecutor);
|
|
31
|
+
const kubernetesCommandLineToolsExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.KubernetesCommandLineToolsExecutor);
|
|
32
|
+
const driverHelper = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.DriverHelper);
|
|
33
|
+
suiteSetup(function () {
|
|
34
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
35
|
+
});
|
|
36
|
+
suiteTeardown(function () {
|
|
37
|
+
kubernetesCommandLineToolsExecutor.deleteProject(testProjectName);
|
|
38
|
+
});
|
|
39
|
+
(0, mocha_1.afterEach)(function () {
|
|
40
|
+
try {
|
|
41
|
+
shellExecutor.executeArbitraryShellScript(`oc delete dw --all -n ${testProjectName}`);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
console.log(`cannot delete the ${testProjectName} under regular user:`, e);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
loginTests.loginIntoOcpConsole();
|
|
48
|
+
test('Open WebTerminal after first installation', async function () {
|
|
49
|
+
await ocpMainPage.waitOpenMainPage();
|
|
50
|
+
await driverHelper.refreshPage();
|
|
51
|
+
await webTerminal.clickOnWebTerminalIcon();
|
|
52
|
+
});
|
|
53
|
+
test('Check WebTerminal with creating new Openshift Project', async function () {
|
|
54
|
+
kubernetesCommandLineToolsExecutor.namespace = testProjectName;
|
|
55
|
+
await webTerminal.typeProjectName(testProjectName);
|
|
56
|
+
await webTerminal.clickOnStartWebTerminalButton();
|
|
57
|
+
await webTerminal.waitTerminalIsStarted();
|
|
58
|
+
await webTerminal.typeAndEnterIntoWebTerminal(`oc whoami > ${fileForVerificationTerminalCommands}`);
|
|
59
|
+
const devWorkspaceYaml = shellExecutor.executeArbitraryShellScript(`oc get dw -n ${kubernetesCommandLineToolsExecutor.namespace} -o yaml`);
|
|
60
|
+
kubernetesCommandLineToolsExecutor.workspaceName = yaml_1.default.parse(devWorkspaceYaml).items[0].metadata.name;
|
|
61
|
+
kubernetesCommandLineToolsExecutor.getPodAndContainerNames();
|
|
62
|
+
const commandResult = kubernetesCommandLineToolsExecutor.execInContainerCommand(`cat /home/user/${fileForVerificationTerminalCommands}`, webTerminalToolContainerName);
|
|
63
|
+
const currentUserName = await driverHelper.waitAndGetText(selenium_webdriver_1.By.css('span[data-test="username"]'));
|
|
64
|
+
(0, chai_1.expect)(commandResult).contains(currentUserName);
|
|
65
|
+
});
|
|
66
|
+
test('Check running WebTerminal in the existed Project with custom timeout', async function () {
|
|
67
|
+
await webTerminal.findAndSelectProject(testProjectName);
|
|
68
|
+
await webTerminal.clickOnTimeoutButton();
|
|
69
|
+
await webTerminal.clickOnTimeUnitDropDown();
|
|
70
|
+
await webTerminal.selectTimeUnit(WebTerminalPage_1.TimeUnits.Seconds);
|
|
71
|
+
await webTerminal.setTimeoutByEntering(20);
|
|
72
|
+
await webTerminal.clickOnStartWebTerminalButton();
|
|
73
|
+
await webTerminal.waitTerminalIsStarted();
|
|
74
|
+
await webTerminal.waitTerminalInactivity();
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=WebTerminalUnderRegularUser.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebTerminalUnderRegularUser.spec.js","sourceRoot":"","sources":["../../../specs/web-terminal/WebTerminalUnderRegularUser.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -15,6 +15,11 @@ import { By, Key } from 'selenium-webdriver';
|
|
|
15
15
|
import { Logger } from '../../utils/Logger';
|
|
16
16
|
import { TIMEOUT_CONSTANTS } from '../../constants/TIMEOUT_CONSTANTS';
|
|
17
17
|
|
|
18
|
+
export enum TimeUnits {
|
|
19
|
+
Seconds = 'Seconds',
|
|
20
|
+
Minutes = 'Minutes',
|
|
21
|
+
Hours = 'Hours'
|
|
22
|
+
}
|
|
18
23
|
@injectable()
|
|
19
24
|
export class WebTerminalPage {
|
|
20
25
|
private static readonly TIMEOUT_BUTTON: By = By.xpath('//button[(text()="Timeout")]');
|
|
@@ -24,8 +29,18 @@ export class WebTerminalPage {
|
|
|
24
29
|
private static readonly START_WT_COMMAND_LINE_TERMINAL_BUTTON: By = By.css('button[data-test-id="submit-button"]');
|
|
25
30
|
private static readonly WEB_TERMINAL_PROJECT_SELECTION_DROPDOWN: By = By.css('input#form-input-namespace-field');
|
|
26
31
|
private static readonly WEB_TERMINAL_PROJECT_CANCEL_BUTTON: By = By.css('button[data-test-id="reset-button"]');
|
|
27
|
-
private static readonly TERMINAL_INACTIVITY_MESS: By = By.xpath('//div[text()
|
|
32
|
+
private static readonly TERMINAL_INACTIVITY_MESS: By = By.xpath('//div[contains(text(),"The terminal connection has closed")]');
|
|
28
33
|
private static readonly RESTART_BUTTON: By = By.xpath('//button[text()="Restart terminal"]');
|
|
34
|
+
private static readonly PROJECT_NAMESPACE_DROP_DAWN: By = By.css('button#form-ns-dropdown-namespace-field');
|
|
35
|
+
private static readonly PROJECT_SELECTION_FIELD: By = By.css('input[data-test-id="dropdown-text-filter"]');
|
|
36
|
+
private static readonly PROJECT_NAME_FIELD: By = By.css('input#form-input-newNamespace-field');
|
|
37
|
+
private static readonly TIMEOUT_INPUT: By = By.css(
|
|
38
|
+
'input[aria-describedby="form-resource-limit-advancedOptions-timeout-limit-field-helper"]'
|
|
39
|
+
);
|
|
40
|
+
private static readonly INCREMENT_TIMEOUT_BTN: By = By.css('button[data-test-id="Decrement"]');
|
|
41
|
+
private static readonly DECREMENT_TIMEOUT_BTN: By = By.css('button[data-test-id="Increment');
|
|
42
|
+
private static readonly TIME_UNIT_DROP_DAWN: By = By.css('div.request-size-input__unit button');
|
|
43
|
+
|
|
29
44
|
constructor(
|
|
30
45
|
@inject(CLASSES.DriverHelper)
|
|
31
46
|
private readonly driverHelper: DriverHelper
|
|
@@ -39,7 +54,7 @@ export class WebTerminalPage {
|
|
|
39
54
|
Logger.debug();
|
|
40
55
|
await this.driverHelper.waitPresence(WebTerminalPage.WEB_TERMINAL_PAGE, TIMEOUT_CONSTANTS.TS_WAIT_LOADER_ABSENCE_TIMEOUT);
|
|
41
56
|
}
|
|
42
|
-
async
|
|
57
|
+
async clickOnStartWebTerminalButton(): Promise<void> {
|
|
43
58
|
Logger.debug();
|
|
44
59
|
await this.driverHelper.waitAndClick(WebTerminalPage.START_WT_COMMAND_LINE_TERMINAL_BUTTON);
|
|
45
60
|
}
|
|
@@ -53,7 +68,7 @@ export class WebTerminalPage {
|
|
|
53
68
|
async openWebTerminal(): Promise<void> {
|
|
54
69
|
Logger.debug();
|
|
55
70
|
await this.clickOnWebTerminalIcon();
|
|
56
|
-
await this.
|
|
71
|
+
await this.clickOnStartWebTerminalButton();
|
|
57
72
|
await this.waitTerminalIsStarted();
|
|
58
73
|
}
|
|
59
74
|
async waitDisabledProjectFieldAndGetProjectName(): Promise<string> {
|
|
@@ -112,8 +127,55 @@ export class WebTerminalPage {
|
|
|
112
127
|
await this.waitTimeoutButton();
|
|
113
128
|
await this.waitImageButton();
|
|
114
129
|
}
|
|
115
|
-
async waitTerminalInactivity(): Promise<void> {
|
|
116
|
-
await this.driverHelper.
|
|
117
|
-
|
|
130
|
+
async waitTerminalInactivity(customTimeout?: number): Promise<void> {
|
|
131
|
+
await this.driverHelper.waitVisibility(
|
|
132
|
+
WebTerminalPage.TERMINAL_INACTIVITY_MESS,
|
|
133
|
+
TIMEOUT_CONSTANTS.TS_COMMON_PLUGIN_TEST_TIMEOUT || customTimeout
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
await this.driverHelper.waitVisibility(WebTerminalPage.RESTART_BUTTON);
|
|
137
|
+
}
|
|
138
|
+
async waitWebTerminalProjectNameField(): Promise<void> {
|
|
139
|
+
await this.driverHelper.waitPresence(WebTerminalPage.PROJECT_NAMESPACE_DROP_DAWN);
|
|
140
|
+
}
|
|
141
|
+
async typeProjectName(projectName: string): Promise<void> {
|
|
142
|
+
await this.waitWebTerminalProjectNameField();
|
|
143
|
+
await this.driverHelper.type(WebTerminalPage.PROJECT_NAME_FIELD, projectName, TIMEOUT_CONSTANTS.TS_SELENIUM_CLICK_ON_VISIBLE_ITEM);
|
|
144
|
+
}
|
|
145
|
+
async openProjectDropDawn(): Promise<void> {
|
|
146
|
+
await this.driverHelper.waitAndClick(WebTerminalPage.PROJECT_NAMESPACE_DROP_DAWN);
|
|
147
|
+
}
|
|
148
|
+
async typeProjectNameForSelecting(projectName: string): Promise<void> {
|
|
149
|
+
await this.driverHelper.type(WebTerminalPage.PROJECT_SELECTION_FIELD, projectName);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
async selectProjectFromDropDawnList(projectName: string): Promise<void> {
|
|
153
|
+
await this.driverHelper.waitAndClick(By.xpath(`//span[@class="pf-c-menu__item-text" and text()="${projectName}"]`));
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
async findAndSelectProject(projectName: string): Promise<void> {
|
|
157
|
+
await this.openProjectDropDawn();
|
|
158
|
+
await this.typeProjectNameForSelecting(projectName);
|
|
159
|
+
await this.selectProjectFromDropDawnList(projectName);
|
|
160
|
+
}
|
|
161
|
+
async clickOnTimeoutButton(): Promise<void> {
|
|
162
|
+
await this.driverHelper.waitAndClick(WebTerminalPage.TIMEOUT_BUTTON);
|
|
163
|
+
}
|
|
164
|
+
async setTimeoutByEntering(timeValue: number): Promise<void> {
|
|
165
|
+
await this.driverHelper.type(WebTerminalPage.TIMEOUT_INPUT, timeValue.toString());
|
|
166
|
+
}
|
|
167
|
+
async clickOnPlusBtn(): Promise<void> {
|
|
168
|
+
await this.driverHelper.waitAndClick(WebTerminalPage.INCREMENT_TIMEOUT_BTN);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
async clickOnMinutesBtn(): Promise<void> {
|
|
172
|
+
await this.driverHelper.waitAndClick(WebTerminalPage.DECREMENT_TIMEOUT_BTN);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
async clickOnTimeUnitDropDown(): Promise<void> {
|
|
176
|
+
await this.driverHelper.waitAndClick(WebTerminalPage.TIME_UNIT_DROP_DAWN);
|
|
177
|
+
}
|
|
178
|
+
async selectTimeUnit(timeUnits: TimeUnits): Promise<void> {
|
|
179
|
+
await this.driverHelper.waitAndClick(By.xpath(`//button[@data-test-id='dropdown-menu' and text()='${timeUnits}']`));
|
|
118
180
|
}
|
|
119
181
|
}
|
|
@@ -40,7 +40,7 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS.TEST
|
|
|
40
40
|
const workspaceDetails: WorkspaceDetails = e2eContainer.get(CLASSES.WorkspaceDetails);
|
|
41
41
|
const shellExecutor: ShellExecutor = e2eContainer.get(CLASSES.ShellExecutor);
|
|
42
42
|
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
43
|
-
const
|
|
43
|
+
const majorMinorVersion: string = BASE_TEST_CONSTANTS.TESTING_APPLICATION_VERSION.split('.').slice(0, 2).join('.'); // extract major.minor version from full version
|
|
44
44
|
let parentGUID: string = '';
|
|
45
45
|
let docs: any, links: any, productVersion: any;
|
|
46
46
|
let webSocketTroubleshooting: any, workspace: any, devfile: any, general: any, storageTypes: any;
|
|
@@ -55,7 +55,7 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS.TEST
|
|
|
55
55
|
try {
|
|
56
56
|
({ docs, links, productVersion } = JSON.parse(
|
|
57
57
|
shellExecutor.curl(
|
|
58
|
-
`https://raw.githubusercontent.com/redhat-developer/devspaces-images/devspaces-${
|
|
58
|
+
`https://raw.githubusercontent.com/redhat-developer/devspaces-images/devspaces-${majorMinorVersion}-rhel-8/devspaces-dashboard/packages/dashboard-frontend/assets/branding/product.json`
|
|
59
59
|
)
|
|
60
60
|
));
|
|
61
61
|
} catch (e) {
|
|
@@ -71,7 +71,7 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS.TEST
|
|
|
71
71
|
|
|
72
72
|
test('Check if product.json config contains correct application version', function (): void {
|
|
73
73
|
[productVersion, links[1].href, devfile, workspace, general, storageTypes, webSocketTroubleshooting].forEach((e): void => {
|
|
74
|
-
expect(e, 'Fetched links not matches with tested product version').contains(
|
|
74
|
+
expect(e, 'Fetched links not matches with tested product version').contains(majorMinorVersion);
|
|
75
75
|
});
|
|
76
76
|
});
|
|
77
77
|
|
|
@@ -112,12 +112,6 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS.TEST
|
|
|
112
112
|
expect(await workspaceDetails.getOpenStorageTypeDocumentationLink(), '"Storage types" doc link is broken').eqls(storageTypes);
|
|
113
113
|
});
|
|
114
114
|
|
|
115
|
-
test('Check if Workspace Details page contains "Devfile" documentation link', async function (): Promise<void> {
|
|
116
|
-
await workspaceDetails.closeStorageTypeInfo();
|
|
117
|
-
await workspaceDetails.selectTab('Devfile');
|
|
118
|
-
expect(await workspaceDetails.getDevfileDocumentationLink(), '"Devfile" doc link is broken').eqls(devfile);
|
|
119
|
-
});
|
|
120
|
-
|
|
121
115
|
if (BASE_TEST_CONSTANTS.IS_PRODUCT_DOCUMENTATION_RELEASED) {
|
|
122
116
|
test('Check if product.json documentation links returns status code 200', async function (): Promise<void> {
|
|
123
117
|
const documentationLinks: string[] = [devfile, workspace, general, storageTypes, webSocketTroubleshooting];
|
|
@@ -21,7 +21,7 @@ import { expect } from 'chai';
|
|
|
21
21
|
import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
|
|
22
22
|
import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
|
|
23
23
|
|
|
24
|
-
const stackName: string = '
|
|
24
|
+
const stackName: string = 'Quarkus REST API';
|
|
25
25
|
|
|
26
26
|
suite(`The ${stackName} userstory ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function (): void {
|
|
27
27
|
const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
|
|
@@ -27,30 +27,31 @@ suite(`Login to Openshift console and start WebTerminal ${BASE_TEST_CONSTANTS.TE
|
|
|
27
27
|
const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = e2eContainer.get(
|
|
28
28
|
CLASSES.KubernetesCommandLineToolsExecutor
|
|
29
29
|
);
|
|
30
|
-
|
|
30
|
+
const defaultWTOProjectNameForAdmin: string = 'openshift-terminal';
|
|
31
31
|
const driverHelper: DriverHelper = e2eContainer.get(CLASSES.DriverHelper);
|
|
32
32
|
const webTerminalToolContainerName: string = 'web-terminal-tooling';
|
|
33
33
|
const fileForVerificationTerminalCommands: string = 'result.txt';
|
|
34
|
+
|
|
34
35
|
suiteSetup(function (): void {
|
|
35
36
|
kubernetesCommandLineToolsExecutor.loginToOcp('admin');
|
|
36
37
|
});
|
|
37
38
|
|
|
39
|
+
suiteTeardown(function (): void {
|
|
40
|
+
shellExecutor.executeArbitraryShellScript(`oc delete dw --all -n ${defaultWTOProjectNameForAdmin}`);
|
|
41
|
+
});
|
|
38
42
|
loginTests.loginIntoOcpConsole();
|
|
39
43
|
test('Open Web Terminal after first installation', async function (): Promise<void> {
|
|
40
44
|
await ocpMainPage.waitOpenMainPage();
|
|
41
45
|
await driverHelper.refreshPage();
|
|
42
46
|
await webTerminal.clickOnWebTerminalIcon();
|
|
43
47
|
});
|
|
44
|
-
test('Verify inactivity dropdown menu for admin user', async function (): Promise<void> {
|
|
45
|
-
await webTerminal.clickOnProjectListDropDown();
|
|
46
|
-
});
|
|
47
48
|
test('Verify first started WTO widget and disabled state Project field under admin user', async function (): Promise<void> {
|
|
48
49
|
await webTerminal.waitTerminalWidget();
|
|
49
|
-
expect(await webTerminal.waitDisabledProjectFieldAndGetProjectName()).equal(
|
|
50
|
+
expect(await webTerminal.waitDisabledProjectFieldAndGetProjectName()).equal(defaultWTOProjectNameForAdmin);
|
|
50
51
|
});
|
|
51
52
|
test('Check starting Web Terminal under admin', async function (): Promise<void> {
|
|
52
53
|
kubernetesCommandLineToolsExecutor.namespace = await webTerminal.getAdminProjectName();
|
|
53
|
-
await webTerminal.
|
|
54
|
+
await webTerminal.clickOnStartWebTerminalButton();
|
|
54
55
|
await webTerminal.waitTerminalIsStarted();
|
|
55
56
|
await webTerminal.typeAndEnterIntoWebTerminal(`oc whoami > ${fileForVerificationTerminalCommands}`);
|
|
56
57
|
const devWorkspaceYaml: string = shellExecutor.executeArbitraryShellScript(
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2024 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
|
+
import { CLASSES } from '../../configs/inversify.types';
|
|
11
|
+
import { e2eContainer } from '../../configs/inversify.config';
|
|
12
|
+
import { LoginTests } from '../../tests-library/LoginTests';
|
|
13
|
+
import { OcpMainPage } from '../../pageobjects/openshift/OcpMainPage';
|
|
14
|
+
import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
|
|
15
|
+
import { KubernetesCommandLineToolsExecutor } from '../../utils/KubernetesCommandLineToolsExecutor';
|
|
16
|
+
import { ShellExecutor } from '../../utils/ShellExecutor';
|
|
17
|
+
import { DriverHelper } from '../../utils/DriverHelper';
|
|
18
|
+
import { TimeUnits, WebTerminalPage } from '../../pageobjects/webterminal/WebTerminalPage';
|
|
19
|
+
import { expect } from 'chai';
|
|
20
|
+
import YAML from 'yaml';
|
|
21
|
+
import { afterEach } from 'mocha';
|
|
22
|
+
import { By } from 'selenium-webdriver';
|
|
23
|
+
|
|
24
|
+
suite(`Login to Openshift console and check WebTerminal ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function (): void {
|
|
25
|
+
const webTerminalToolContainerName: string = 'web-terminal-tooling';
|
|
26
|
+
const testProjectName: string = 'wto-under-regular-user-test';
|
|
27
|
+
const fileForVerificationTerminalCommands: string = 'result.txt';
|
|
28
|
+
const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
|
|
29
|
+
const ocpMainPage: OcpMainPage = e2eContainer.get(CLASSES.OcpMainPage);
|
|
30
|
+
const webTerminal: WebTerminalPage = e2eContainer.get(CLASSES.WebTerminalPage);
|
|
31
|
+
const shellExecutor: ShellExecutor = e2eContainer.get(CLASSES.ShellExecutor);
|
|
32
|
+
const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = e2eContainer.get(
|
|
33
|
+
CLASSES.KubernetesCommandLineToolsExecutor
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const driverHelper: DriverHelper = e2eContainer.get(CLASSES.DriverHelper);
|
|
37
|
+
|
|
38
|
+
suiteSetup(function (): void {
|
|
39
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
suiteTeardown(function (): void {
|
|
43
|
+
kubernetesCommandLineToolsExecutor.deleteProject(testProjectName);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
afterEach(function (): void {
|
|
47
|
+
try {
|
|
48
|
+
shellExecutor.executeArbitraryShellScript(`oc delete dw --all -n ${testProjectName}`);
|
|
49
|
+
} catch (e) {
|
|
50
|
+
console.log(`cannot delete the ${testProjectName} under regular user:`, e);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
loginTests.loginIntoOcpConsole();
|
|
55
|
+
|
|
56
|
+
test('Open WebTerminal after first installation', async function (): Promise<void> {
|
|
57
|
+
await ocpMainPage.waitOpenMainPage();
|
|
58
|
+
await driverHelper.refreshPage();
|
|
59
|
+
await webTerminal.clickOnWebTerminalIcon();
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test('Check WebTerminal with creating new Openshift Project', async function (): Promise<void> {
|
|
63
|
+
kubernetesCommandLineToolsExecutor.namespace = testProjectName;
|
|
64
|
+
await webTerminal.typeProjectName(testProjectName);
|
|
65
|
+
await webTerminal.clickOnStartWebTerminalButton();
|
|
66
|
+
await webTerminal.waitTerminalIsStarted();
|
|
67
|
+
await webTerminal.typeAndEnterIntoWebTerminal(`oc whoami > ${fileForVerificationTerminalCommands}`);
|
|
68
|
+
const devWorkspaceYaml: string = shellExecutor.executeArbitraryShellScript(
|
|
69
|
+
`oc get dw -n ${kubernetesCommandLineToolsExecutor.namespace} -o yaml`
|
|
70
|
+
);
|
|
71
|
+
kubernetesCommandLineToolsExecutor.workspaceName = YAML.parse(devWorkspaceYaml).items[0].metadata.name;
|
|
72
|
+
kubernetesCommandLineToolsExecutor.getPodAndContainerNames();
|
|
73
|
+
const commandResult: string = kubernetesCommandLineToolsExecutor.execInContainerCommand(
|
|
74
|
+
`cat /home/user/${fileForVerificationTerminalCommands}`,
|
|
75
|
+
webTerminalToolContainerName
|
|
76
|
+
);
|
|
77
|
+
const currentUserName: string = await driverHelper.waitAndGetText(By.css('span[data-test="username"]'));
|
|
78
|
+
expect(commandResult).contains(currentUserName);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
test('Check running WebTerminal in the existed Project with custom timeout', async function (): Promise<void> {
|
|
82
|
+
await webTerminal.findAndSelectProject(testProjectName);
|
|
83
|
+
await webTerminal.clickOnTimeoutButton();
|
|
84
|
+
await webTerminal.clickOnTimeUnitDropDown();
|
|
85
|
+
await webTerminal.selectTimeUnit(TimeUnits.Seconds);
|
|
86
|
+
await webTerminal.setTimeoutByEntering(20);
|
|
87
|
+
await webTerminal.clickOnStartWebTerminalButton();
|
|
88
|
+
await webTerminal.waitTerminalIsStarted();
|
|
89
|
+
await webTerminal.waitTerminalInactivity();
|
|
90
|
+
});
|
|
91
|
+
});
|