@eclipse-che/che-e2e 7.81.0-next-6728732 → 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/dist/pageobjects/webterminal/WebTerminalPage.js +59 -7
- package/dist/pageobjects/webterminal/WebTerminalPage.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/web-terminal/WebTerminalUnderAdmin.spec.ts +7 -6
- package/specs/web-terminal/WebTerminalUnderRegularUser.spec.ts +91 -0
|
@@ -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":";;;;;;;;;;;;;;;;AAAA;;;;;;;;wEAQwE;AACxE,4BAA0B;AAC1B,yCAA+C;AAC/C,2DAAwD;AACxD,mEAAwD;AACxD,2DAA6C;AAC7C,+CAA4C;AAC5C,yEAAsE;AAEtE,IAAY,SAIX;AAJD,WAAY,SAAS;IACpB,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;IACnB,4BAAe,CAAA;AAChB,CAAC,EAJW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAIpB;AAEM,IAAM,eAAe,uBAArB,MAAM,eAAe;IAoB3B,YAEkB,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IACzC,CAAC;IAEJ,KAAK,CAAC,sBAAsB;QAC3B,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,mBAAmB,EAAE,qCAAiB,CAAC,wBAAwB,CAAC,CAAC;IACvH,CAAC;IACD,KAAK,CAAC,qBAAqB;QAC1B,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,iBAAiB,EAAE,qCAAiB,CAAC,8BAA8B,CAAC,CAAC;IAC3H,CAAC;IACD,KAAK,CAAC,6BAA6B;QAClC,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,qCAAqC,CAAC,CAAC;IAC7F,CAAC;IACD,KAAK,CAAC,mBAAmB;QACxB,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAC7C,uBAAE,CAAC,GAAG,CAAC,kCAAkC,CAAC,EAC1C,qCAAiB,CAAC,wBAAwB,CAC1C,CAAC;IACH,CAAC;IACD,KAAK,CAAC,eAAe;QACpB,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAC3C,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACpC,CAAC;IACD,KAAK,CAAC,yCAAyC;QAC9C,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,iBAAe,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;IAC7H,CAAC;IACD,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACrC,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,iBAAiB,EAAE,qCAAiB,CAAC,mBAAmB,CAAC,CAAC;QAC/G,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,iBAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,IAAY;QAC7C,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,iBAAiB,EAAE,qCAAiB,CAAC,mBAAmB,CAAC,CAAC;QAC/G,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,iBAAe,CAAC,iBAAiB,EAAE,IAAI,GAAG,wBAAG,CAAC,KAAK,CAAC,CAAC;IAC9F,CAAC;IACD,KAAK,CAAC,0BAA0B;QAC/B,eAAM,CAAC,KAAK,EAAE,CAAC;QACf;YACC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CACnC,iBAAe,CAAC,uCAAuC,EACvD,qCAAiB,CAAC,gCAAgC,CAClD,CAAC;SACF;IACF,CAAC;IACD,KAAK,CAAC,iBAAiB;QACtB,eAAM,CAAC,KAAK,EAAE,CAAC;QACf;YACC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,cAAc,CAAC,CAAC;SACrE;IACF,CAAC;IACD,KAAK,CAAC,eAAe;QACpB,eAAM,CAAC,KAAK,EAAE,CAAC;QACf;YACC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,YAAY,CAAC,CAAC;SACnE;IACF,CAAC;IACD,KAAK,CAAC,eAAe;QACpB,eAAM,CAAC,KAAK,EAAE,CAAC;QACf;YACC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,qCAAqC,CAAC,CAAC;SAC5F;IACF,CAAC;IAED,KAAK,CAAC,gBAAgB;QACrB,eAAM,CAAC,KAAK,EAAE,CAAC;QACf;YACC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,kCAAkC,CAAC,CAAC;SACzF;IACF,CAAC;IACD,KAAK,CAAC,kBAAkB;QACvB,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,sBAAsB,CAAC,aAAsB;QAClD,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CACrC,iBAAe,CAAC,wBAAwB,EACxC,qCAAiB,CAAC,6BAA6B,IAAI,aAAa,CAChE,CAAC;QAEF,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAe,CAAC,cAAc,CAAC,CAAC;IACxE,CAAC;IACD,KAAK,CAAC,+BAA+B;QACpC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,2BAA2B,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,WAAmB;QACxC,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAe,CAAC,kBAAkB,EAAE,WAAW,EAAE,qCAAiB,CAAC,iCAAiC,CAAC,CAAC;IACpI,CAAC;IACD,KAAK,CAAC,mBAAmB;QACxB,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,2BAA2B,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,CAAC,2BAA2B,CAAC,WAAmB;QACpD,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAe,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,WAAmB;QACtD,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,uBAAE,CAAC,KAAK,CAAC,oDAAoD,WAAW,IAAI,CAAC,CAAC,CAAC;IACrH,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,WAAmB;QAC7C,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IACD,KAAK,CAAC,oBAAoB;QACzB,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,cAAc,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,CAAC,oBAAoB,CAAC,SAAiB;QAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAe,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,CAAC,cAAc;QACnB,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,qBAAqB,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,iBAAiB;QACtB,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,qBAAqB,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAe,CAAC,mBAAmB,CAAC,CAAC;IAC3E,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,SAAoB;QACxC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,uBAAE,CAAC,KAAK,CAAC,sDAAsD,SAAS,IAAI,CAAC,CAAC,CAAC;IACrH,CAAC;;AA3JuB,8BAAc,GAAO,uBAAE,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC9D,4BAAY,GAAO,uBAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAC1D,mCAAmB,GAAO,uBAAE,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC7F,iCAAiB,GAAO,uBAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACxE,qDAAqC,GAAO,uBAAE,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AAC3F,uDAAuC,GAAO,uBAAE,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AACzF,kDAAkC,GAAO,uBAAE,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AACvF,wCAAwB,GAAO,uBAAE,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;AACxG,8BAAc,GAAO,uBAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACrE,2CAA2B,GAAO,uBAAE,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AACpF,uCAAuB,GAAO,uBAAE,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AACnF,kCAAkB,GAAO,uBAAE,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AACvE,6BAAa,GAAO,uBAAE,CAAC,GAAG,CACjD,0FAA0F,CAC1F,CAAC;AACsB,qCAAqB,GAAO,uBAAE,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AACvE,qCAAqB,GAAO,uBAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AACrE,mCAAmB,GAAO,uBAAE,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AAlBpF,eAAe;IAD3B,IAAA,sBAAU,GAAE;IAsBV,WAAA,IAAA,kBAAM,EAAC,yBAAO,CAAC,YAAY,CAAC,CAAA;qCACE,2BAAY;GAtBhC,eAAe,CA6J3B;AA7JY,0CAAe"}
|
|
@@ -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":";;;;;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;IACF,MAAM,6BAA6B,GAAW,oBAAoB,CAAC;IACnE,MAAM,YAAY,GAAiB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,YAAY,CAAC,CAAC;IAC1E,MAAM,4BAA4B,GAAW,sBAAsB,CAAC;IACpE,MAAM,mCAAmC,GAAW,YAAY,CAAC;IAEjE,UAAU,CAAC;QACV,kCAAkC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC;QACb,aAAa,CAAC,2BAA2B,CAAC,yBAAyB,6BAA6B,EAAE,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;IACH,UAAU,CAAC,mBAAmB,EAAE,CAAC;IACjC,IAAI,CAAC,4CAA4C,EAAE,KAAK;QACvD,MAAM,WAAW,CAAC,gBAAgB,EAAE,CAAC;QACrC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,WAAW,CAAC,sBAAsB,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,mFAAmF,EAAE,KAAK;QAC9F,MAAM,WAAW,CAAC,kBAAkB,EAAE,CAAC;QACvC,IAAA,aAAM,EAAC,MAAM,WAAW,CAAC,yCAAyC,EAAE,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,yCAAyC,EAAE,KAAK;QACpD,kCAAkC,CAAC,SAAS,GAAG,MAAM,WAAW,CAAC,mBAAmB,EAAE,CAAC;QACvF,MAAM,WAAW,CAAC,6BAA6B,EAAE,CAAC;QAClD,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;QAC1C,MAAM,WAAW,CAAC,2BAA2B,CAAC,eAAe,mCAAmC,EAAE,CAAC,CAAC;QACpG,MAAM,gBAAgB,GAAW,aAAa,CAAC,2BAA2B,CACzE,gBAAgB,kCAAkC,CAAC,SAAS,UAAU,CACtE,CAAC;QACF,kCAAkC,CAAC,aAAa,GAAG,cAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvG,kCAAkC,CAAC,uBAAuB,EAAE,CAAC;QAC7D,MAAM,aAAa,GAAW,kCAAkC,CAAC,sBAAsB,CACtF,kBAAkB,mCAAmC,EAAE,EACvD,4BAA4B,CAC5B,CAAC;QACF,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,sCAAsC,EAAE,KAAK;QACjD,MAAM,yBAAyB,GAC9B,wDAAwD;YACxD,yDAAyD;YACzD,mFAAmF;YACnF,mDAAmD;YACnD,uDAAuD;YACvD,qDAAqD;YACrD,yDAAyD;YACzD,0EAA0E;YAC1E,uDAAuD;YACvD,uCAAuC,CAAC;QAEzC,MAAM,WAAW,CAAC,2BAA2B,CAAC,UAAU,mCAAmC,EAAE,CAAC,CAAC;QAC/F,MAAM,aAAa,GAAW,kCAAkC,CAAC,sBAAsB,CACtF,kBAAkB,mCAAmC,EAAE,EACvD,4BAA4B,CAC5B,CAAC;QACF,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,KAAK;QACjD,MAAM,WAAW,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,CAAC;QACxE,MAAM,WAAW,CAAC,sBAAsB,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -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
|
}
|
|
@@ -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
|
+
});
|