@eclipse-che/che-e2e 7.46.1-dev-957e450 → 7.46.1-dev-21b7d9f
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/login/RegularUserOcpCheLoginPage.js +13 -2
- package/dist/pageobjects/login/RegularUserOcpCheLoginPage.js.map +1 -1
- package/dist/tests/load_test/LoadTest.spec.js +19 -23
- package/dist/tests/load_test/LoadTest.spec.js.map +1 -1
- package/dist/tests/login/Login.spec.js +8 -6
- package/dist/tests/login/Login.spec.js.map +1 -1
- package/dist/utils/requestHandlers/CheApiRequestHandler.js +2 -0
- package/dist/utils/requestHandlers/CheApiRequestHandler.js.map +1 -1
- package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.js +16 -3
- package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +1 -1
- package/mocha-load.json +4 -1
- package/package.json +2 -2
- package/pageobjects/login/RegularUserOcpCheLoginPage.ts +12 -1
- package/tests/load_test/LoadTest.spec.ts +22 -31
- package/tests/login/Login.spec.ts +5 -1
- package/utils/requestHandlers/CheApiRequestHandler.ts +2 -0
- package/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.ts +6 -3
|
@@ -29,13 +29,22 @@ const inversify_1 = require("inversify");
|
|
|
29
29
|
const inversify_types_1 = require("../../inversify.types");
|
|
30
30
|
const TestConstants_1 = require("../../TestConstants");
|
|
31
31
|
const Logger_1 = require("../../utils/Logger");
|
|
32
|
+
const TimeoutConstants_1 = require("../../TimeoutConstants");
|
|
33
|
+
const selenium_webdriver_1 = require("selenium-webdriver");
|
|
34
|
+
const DriverHelper_1 = require("../../utils/DriverHelper");
|
|
32
35
|
let RegularUserOcpCheLoginPage = class RegularUserOcpCheLoginPage {
|
|
33
|
-
constructor(ocpLogin, cheLogin) {
|
|
36
|
+
constructor(ocpLogin, cheLogin, driverHelper) {
|
|
34
37
|
this.ocpLogin = ocpLogin;
|
|
35
38
|
this.cheLogin = cheLogin;
|
|
39
|
+
this.driverHelper = driverHelper;
|
|
40
|
+
this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR = `//div[@class='panel-login']`;
|
|
41
|
+
this.OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR = `${this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR}/div[contains(@class, 'panel-content')]/form/button`;
|
|
36
42
|
}
|
|
37
43
|
async login() {
|
|
38
44
|
Logger_1.Logger.debug('RegularUserOcpCheLoginPage.login');
|
|
45
|
+
Logger_1.Logger.debug('OcpRedHatLoginPage.login wait for LogInWithOpenShift page and click button');
|
|
46
|
+
await this.driverHelper.waitPresence(selenium_webdriver_1.By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR), TimeoutConstants_1.TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
47
|
+
await this.driverHelper.waitAndClick(selenium_webdriver_1.By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR));
|
|
39
48
|
if (await this.ocpLogin.isIdentityProviderLinkVisible()) {
|
|
40
49
|
await this.ocpLogin.clickOnLoginProviderTitle();
|
|
41
50
|
}
|
|
@@ -68,8 +77,10 @@ RegularUserOcpCheLoginPage = __decorate([
|
|
|
68
77
|
inversify_1.injectable(),
|
|
69
78
|
__param(0, inversify_1.inject(inversify_types_1.CLASSES.OcpLoginPage)),
|
|
70
79
|
__param(1, inversify_1.inject(inversify_types_1.CLASSES.CheLoginPage)),
|
|
80
|
+
__param(2, inversify_1.inject(inversify_types_1.CLASSES.DriverHelper)),
|
|
71
81
|
__metadata("design:paramtypes", [OcpLoginPage_1.OcpLoginPage,
|
|
72
|
-
CheLoginPage_1.CheLoginPage
|
|
82
|
+
CheLoginPage_1.CheLoginPage,
|
|
83
|
+
DriverHelper_1.DriverHelper])
|
|
73
84
|
], RegularUserOcpCheLoginPage);
|
|
74
85
|
exports.RegularUserOcpCheLoginPage = RegularUserOcpCheLoginPage;
|
|
75
86
|
//# sourceMappingURL=RegularUserOcpCheLoginPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegularUserOcpCheLoginPage.js","sourceRoot":"","sources":["../../../pageobjects/login/RegularUserOcpCheLoginPage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;wEAQwE;AACxE,4BAA0B;AAE1B,4DAAyD;AACzD,4DAAyD;AACzD,yCAA+C;AAC/C,2DAAgD;AAChD,uDAAoD;AACpD,+CAA4C;
|
|
1
|
+
{"version":3,"file":"RegularUserOcpCheLoginPage.js","sourceRoot":"","sources":["../../../pageobjects/login/RegularUserOcpCheLoginPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*********************************************************************
|
|
3
|
-
* Copyright (c)
|
|
3
|
+
* Copyright (c) 2022 Red Hat, Inc.
|
|
4
4
|
*
|
|
5
5
|
* This program and the accompanying materials are made
|
|
6
6
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -11,31 +11,27 @@
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const inversify_config_1 = require("../../inversify.config");
|
|
13
13
|
const inversify_types_1 = require("../../inversify.types");
|
|
14
|
-
const
|
|
15
|
-
const
|
|
14
|
+
const TestConstants_1 = require("../../TestConstants");
|
|
15
|
+
const projectAndFileTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ProjectAndFileTests);
|
|
16
16
|
const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
const workspacePrefixUrl = `${__1.TestConstants.TS_SELENIUM_BASE_URL}/dashboard/#/ide/${__1.TestConstants.TS_SELENIUM_USERNAME}/`;
|
|
17
|
+
const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
|
|
18
|
+
const devfileUrl = 'https://github.com/che-samples/web-nodejs-sample/tree/devfilev2';
|
|
19
|
+
const factoryUrl = `${TestConstants_1.TestConstants.TS_SELENIUM_BASE_URL}/f?url=${devfileUrl}`;
|
|
20
|
+
const projectName = 'web-nodejs-sample';
|
|
21
|
+
const subRootFolder = 'app';
|
|
22
|
+
let workspaceName = 'nodejs-web-app';
|
|
24
23
|
suite('Load test suite', async () => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
suite('Create workspace', async () => {
|
|
25
|
+
test('Create workspace using factory', async () => {
|
|
26
|
+
await browserTabsUtil.navigateTo(factoryUrl);
|
|
27
|
+
});
|
|
28
|
+
workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
29
|
+
projectAndFileTests.waitWorkspaceReadiness(projectName, subRootFolder);
|
|
30
30
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
test('Wait loading workspace and get time', async () => {
|
|
36
|
-
WorkspaceHandlingTests_1.WorkspaceHandlingTests.setWorkspaceName(workspaceName);
|
|
37
|
-
await ide.waitWorkspaceAndIde();
|
|
38
|
-
await projectTree.openProjectTreeContainer();
|
|
31
|
+
suite('Stopping and deleting the workspace', async () => {
|
|
32
|
+
test('Stop and remove workspace', async () => {
|
|
33
|
+
await workspaceHandlingTests.stopAndRemoveWorkspace(workspaceName);
|
|
34
|
+
});
|
|
39
35
|
});
|
|
40
36
|
});
|
|
41
37
|
//# sourceMappingURL=LoadTest.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadTest.spec.js","sourceRoot":"","sources":["../../../tests/load_test/LoadTest.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;AAExE,6DAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"LoadTest.spec.js","sourceRoot":"","sources":["../../../tests/load_test/LoadTest.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;AAExE,6DAAsD;AACtD,2DAAgD;AAChD,uDAAoD;AAKpD,MAAM,mBAAmB,GAAwB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,mBAAmB,CAAC,CAAC;AAC/F,MAAM,eAAe,GAAoB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,eAAe,CAAC,CAAC;AACnF,MAAM,sBAAsB,GAA2B,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,sBAAsB,CAAC,CAAC;AAExG,MAAM,UAAU,GAAW,iEAAiE,CAAC;AAC7F,MAAM,UAAU,GAAW,GAAG,6BAAa,CAAC,oBAAoB,UAAU,UAAU,EAAE,CAAC;AACvF,MAAM,WAAW,GAAW,mBAAmB,CAAC;AAChD,MAAM,aAAa,GAAW,KAAK,CAAC;AACpC,IAAI,aAAa,GAAW,gBAAgB,CAAC;AAE7C,KAAK,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;IAChC,KAAK,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACjC,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,sBAAsB,CAAC,mCAAmC,EAAE,CAAC;QAE7D,mBAAmB,CAAC,sBAAsB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,KAAK,CAAE,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,IAAI,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,sBAAsB,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC"}
|
|
@@ -9,16 +9,18 @@
|
|
|
9
9
|
* SPDX-License-Identifier: EPL-2.0
|
|
10
10
|
**********************************************************************/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const __1 = require("../..");
|
|
13
12
|
const inversify_config_1 = require("../../inversify.config");
|
|
14
|
-
const
|
|
15
|
-
const
|
|
13
|
+
const inversify_types_1 = require("../../inversify.types");
|
|
14
|
+
const TestConstants_1 = require("../../TestConstants");
|
|
15
|
+
const Logger_1 = require("../../utils/Logger");
|
|
16
|
+
const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
|
|
17
|
+
const loginPage = inversify_config_1.e2eContainer.get(inversify_types_1.TYPES.CheLogin);
|
|
16
18
|
suite('Login test', async () => {
|
|
17
19
|
test('Login', async () => {
|
|
18
|
-
await browserTabsUtil.navigateTo(
|
|
20
|
+
await browserTabsUtil.navigateTo(TestConstants_1.TestConstants.TS_SELENIUM_BASE_URL);
|
|
19
21
|
await loginPage.login();
|
|
20
|
-
if (
|
|
21
|
-
|
|
22
|
+
if (TestConstants_1.TestConstants.TS_SELENIUM_LAUNCH_FULLSCREEN) {
|
|
23
|
+
Logger_1.Logger.debug(`TS_SELENIUM_LAUNCH_FULLSCREEN is set to true, maximizing window.`);
|
|
22
24
|
await browserTabsUtil.maximize();
|
|
23
25
|
}
|
|
24
26
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Login.spec.js","sourceRoot":"","sources":["../../../tests/login/Login.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;AAExE,
|
|
1
|
+
{"version":3,"file":"Login.spec.js","sourceRoot":"","sources":["../../../tests/login/Login.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;AAExE,6DAAsD;AACtD,2DAAuD;AAEvD,uDAAoD;AAEpD,+CAA4C;AAE5C,MAAM,eAAe,GAAoB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,eAAe,CAAC,CAAC;AACnF,MAAM,SAAS,GAAkB,+BAAY,CAAC,GAAG,CAAgB,uBAAK,CAAC,QAAQ,CAAC,CAAC;AAEjF,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;IAC3B,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QACrB,MAAM,eAAe,CAAC,UAAU,CAAC,6BAAa,CAAC,oBAAoB,CAAC,CAAC;QAErE,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,6BAAa,CAAC,6BAA6B,EAAE;YAC7C,eAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACjF,MAAM,eAAe,CAAC,QAAQ,EAAE,CAAC;SACpC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -51,6 +51,7 @@ let CheApiRequestHandler = class CheApiRequestHandler {
|
|
|
51
51
|
return request;
|
|
52
52
|
}
|
|
53
53
|
request_censored.headers.Authorization = 'CENSORED';
|
|
54
|
+
request_censored.headers.Cookie = 'CENSORED';
|
|
54
55
|
Logger_1.Logger.info(`RequestHandler request:\n` + request_censored);
|
|
55
56
|
}
|
|
56
57
|
catch (err) {
|
|
@@ -85,6 +86,7 @@ let CheApiRequestHandler = class CheApiRequestHandler {
|
|
|
85
86
|
return response;
|
|
86
87
|
}
|
|
87
88
|
response_censored.config.headers.Authorization = 'CENSORED';
|
|
89
|
+
response_censored.config.headers.Cookie = 'CENSORED';
|
|
88
90
|
if (response_censored.data.access_token != null) {
|
|
89
91
|
response_censored.data.access_token = 'CENSORED';
|
|
90
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheApiRequestHandler.js","sourceRoot":"","sources":["../../../utils/requestHandlers/CheApiRequestHandler.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;;;;;;;;;;;;;;;;;AAExE,kDAAiE;AACjE,uDAAoD;AACpD,2DAA8C;AAC9C,yCAA+C;AAE/C,sCAAmC;AAGnC,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;
|
|
1
|
+
{"version":3,"file":"CheApiRequestHandler.js","sourceRoot":"","sources":["../../../utils/requestHandlers/CheApiRequestHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,17 +5,30 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
8
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
15
|
exports.CheMultiuserAuthorizationHeaderHandler = void 0;
|
|
10
16
|
const inversify_1 = require("inversify");
|
|
17
|
+
const DriverHelper_1 = require("../../DriverHelper");
|
|
18
|
+
const inversify_types_1 = require("../../../inversify.types");
|
|
11
19
|
let CheMultiuserAuthorizationHeaderHandler = class CheMultiuserAuthorizationHeaderHandler {
|
|
20
|
+
constructor(driverHelper) {
|
|
21
|
+
this.driverHelper = driverHelper;
|
|
22
|
+
}
|
|
12
23
|
async get() {
|
|
13
|
-
|
|
14
|
-
return { headers: { 'cookie':
|
|
24
|
+
let token = await this.driverHelper.getDriver().manage().getCookie('_oauth_proxy');
|
|
25
|
+
return { headers: { 'cookie': `_oauth_proxy=${token.value}` } };
|
|
15
26
|
}
|
|
16
27
|
};
|
|
17
28
|
CheMultiuserAuthorizationHeaderHandler = __decorate([
|
|
18
|
-
inversify_1.injectable()
|
|
29
|
+
inversify_1.injectable(),
|
|
30
|
+
__param(0, inversify_1.inject(inversify_types_1.CLASSES.DriverHelper)),
|
|
31
|
+
__metadata("design:paramtypes", [DriverHelper_1.DriverHelper])
|
|
19
32
|
], CheMultiuserAuthorizationHeaderHandler);
|
|
20
33
|
exports.CheMultiuserAuthorizationHeaderHandler = CheMultiuserAuthorizationHeaderHandler;
|
|
21
34
|
//# sourceMappingURL=CheMultiuserAuthorizationHeaderHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheMultiuserAuthorizationHeaderHandler.js","sourceRoot":"","sources":["../../../../utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CheMultiuserAuthorizationHeaderHandler.js","sourceRoot":"","sources":["../../../../utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAWA,yCAA+C;AAC/C,qDAAkD;AAClD,8DAAmD;AAGnD,IAAa,sCAAsC,GAAnD,MAAa,sCAAsC;IAC/C,YAA2D,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAI,CAAC;IAE1F,KAAK,CAAC,GAAG;QACL,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACnF,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,gBAAgB,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC;IACpE,CAAC;CACJ,CAAA;AAPY,sCAAsC;IADlD,sBAAU,EAAE;IAEI,WAAA,kBAAM,CAAC,yBAAO,CAAC,YAAY,CAAC,CAAA;qCAAgC,2BAAY;GAD5E,sCAAsC,CAOlD;AAPY,wFAAsC"}
|
package/mocha-load.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eclipse-che/che-e2e",
|
|
3
|
-
"version": "7.46.1-dev-
|
|
3
|
+
"version": "7.46.1-dev-21b7d9f",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@types/selenium-webdriver": "3.0.16",
|
|
40
40
|
"axios": "^0.25.0",
|
|
41
41
|
"chai": "4.2.0",
|
|
42
|
-
"chromedriver": "^
|
|
42
|
+
"chromedriver": "^101.0.0",
|
|
43
43
|
"mocha": "^9.1.3",
|
|
44
44
|
"rimraf": "2.6.2",
|
|
45
45
|
"selenium-webdriver": "3.6.0",
|
|
@@ -15,17 +15,28 @@ import { injectable, inject } from 'inversify';
|
|
|
15
15
|
import { CLASSES } from '../../inversify.types';
|
|
16
16
|
import { TestConstants } from '../../TestConstants';
|
|
17
17
|
import { Logger } from '../../utils/Logger';
|
|
18
|
+
import { TimeoutConstants } from '../../TimeoutConstants';
|
|
19
|
+
import { By } from 'selenium-webdriver';
|
|
20
|
+
import { DriverHelper } from '../../utils/DriverHelper';
|
|
18
21
|
|
|
19
22
|
@injectable()
|
|
20
23
|
export class RegularUserOcpCheLoginPage implements ICheLoginPage {
|
|
21
24
|
|
|
25
|
+
private readonly OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR: string = `//div[@class='panel-login']`;
|
|
26
|
+
private readonly OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR: string = `${this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR}/div[contains(@class, 'panel-content')]/form/button`;
|
|
27
|
+
|
|
22
28
|
constructor(
|
|
23
29
|
@inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage,
|
|
24
|
-
@inject(CLASSES.CheLoginPage) private readonly cheLogin: CheLoginPage
|
|
30
|
+
@inject(CLASSES.CheLoginPage) private readonly cheLogin: CheLoginPage,
|
|
31
|
+
@inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper) { }
|
|
25
32
|
|
|
26
33
|
async login() {
|
|
27
34
|
Logger.debug('RegularUserOcpCheLoginPage.login');
|
|
28
35
|
|
|
36
|
+
Logger.debug('OcpRedHatLoginPage.login wait for LogInWithOpenShift page and click button');
|
|
37
|
+
await this.driverHelper.waitPresence(By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR), TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
38
|
+
await this.driverHelper.waitAndClick(By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR));
|
|
39
|
+
|
|
29
40
|
if (await this.ocpLogin.isIdentityProviderLinkVisible()) {
|
|
30
41
|
await this.ocpLogin.clickOnLoginProviderTitle();
|
|
31
42
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*********************************************************************
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 2022 Red Hat, Inc.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made
|
|
5
5
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -9,46 +9,37 @@
|
|
|
9
9
|
**********************************************************************/
|
|
10
10
|
|
|
11
11
|
import { e2eContainer } from '../../inversify.config';
|
|
12
|
-
import { CLASSES
|
|
13
|
-
import {
|
|
14
|
-
import { ProjectTree } from '../../pageobjects/ide/ProjectTree';
|
|
15
|
-
import { ICheLoginPage } from '../../pageobjects/login/ICheLoginPage';
|
|
16
|
-
import { TestWorkspaceUtil } from '../../utils/workspace/TestWorkspaceUtil';
|
|
17
|
-
import { TestConstants, WorkspaceNameHandler } from '../..';
|
|
18
|
-
import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
|
|
12
|
+
import { CLASSES } from '../../inversify.types';
|
|
13
|
+
import { TestConstants } from '../../TestConstants';
|
|
19
14
|
import { WorkspaceHandlingTests } from '../../testsLibrary/WorkspaceHandlingTests';
|
|
15
|
+
import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
|
|
16
|
+
import { ProjectAndFileTests } from '../../testsLibrary/ProjectAndFileTests';
|
|
20
17
|
|
|
18
|
+
const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
|
|
21
19
|
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
22
|
-
const
|
|
23
|
-
const projectTree: ProjectTree = e2eContainer.get(CLASSES.ProjectTree);
|
|
24
|
-
const cheLoginPage: ICheLoginPage = e2eContainer.get<ICheLoginPage>(TYPES.CheLogin);
|
|
25
|
-
const testWorkspaceUtils: TestWorkspaceUtil = e2eContainer.get<TestWorkspaceUtil>(TYPES.WorkspaceUtil);
|
|
26
|
-
const workspaceNameHandler: WorkspaceNameHandler = e2eContainer.get(CLASSES.WorkspaceNameHandler);
|
|
20
|
+
const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
|
|
27
21
|
|
|
28
|
-
const
|
|
29
|
-
const
|
|
22
|
+
const devfileUrl: string = 'https://github.com/che-samples/web-nodejs-sample/tree/devfilev2';
|
|
23
|
+
const factoryUrl: string = `${TestConstants.TS_SELENIUM_BASE_URL}/f?url=${devfileUrl}`;
|
|
24
|
+
const projectName: string = 'web-nodejs-sample';
|
|
25
|
+
const subRootFolder: string = 'app';
|
|
26
|
+
let workspaceName: string = 'nodejs-web-app';
|
|
30
27
|
|
|
31
28
|
suite('Load test suite', async () => {
|
|
29
|
+
suite('Create workspace', async () => {
|
|
30
|
+
test('Create workspace using factory', async () => {
|
|
31
|
+
await browserTabsUtil.navigateTo(factoryUrl);
|
|
32
|
+
});
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
suiteSetup(async function () {
|
|
36
|
-
const wsConfig = await testWorkspaceUtils.getBaseDevfile();
|
|
37
|
-
wsConfig.metadata!.name = workspaceName;
|
|
38
|
-
await testWorkspaceUtils.createWsFromDevFile(wsConfig);
|
|
39
|
-
});
|
|
34
|
+
workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
await browserTabsUtil.navigateTo(workspacePrefixUrl + workspaceName);
|
|
43
|
-
await cheLoginPage.login();
|
|
36
|
+
projectAndFileTests.waitWorkspaceReadiness(projectName, subRootFolder);
|
|
44
37
|
});
|
|
45
38
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
39
|
+
suite ('Stopping and deleting the workspace', async () => {
|
|
40
|
+
test('Stop and remove workspace', async () => {
|
|
41
|
+
await workspaceHandlingTests.stopAndRemoveWorkspace(workspaceName);
|
|
42
|
+
});
|
|
50
43
|
});
|
|
51
44
|
|
|
52
45
|
});
|
|
53
|
-
|
|
54
|
-
|
|
@@ -8,9 +8,12 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
**********************************************************************/
|
|
10
10
|
|
|
11
|
-
import { TestConstants, CLASSES, ICheLoginPage, TYPES, Logger } from '../..';
|
|
12
11
|
import { e2eContainer } from '../../inversify.config';
|
|
12
|
+
import { CLASSES, TYPES } from '../../inversify.types';
|
|
13
|
+
import { ICheLoginPage } from '../../pageobjects/login/ICheLoginPage';
|
|
14
|
+
import { TestConstants } from '../../TestConstants';
|
|
13
15
|
import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
|
|
16
|
+
import { Logger } from '../../utils/Logger';
|
|
14
17
|
|
|
15
18
|
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
16
19
|
const loginPage: ICheLoginPage = e2eContainer.get<ICheLoginPage>(TYPES.CheLogin);
|
|
@@ -18,6 +21,7 @@ const loginPage: ICheLoginPage = e2eContainer.get<ICheLoginPage>(TYPES.CheLogin)
|
|
|
18
21
|
suite('Login test', async () => {
|
|
19
22
|
test('Login', async () => {
|
|
20
23
|
await browserTabsUtil.navigateTo(TestConstants.TS_SELENIUM_BASE_URL);
|
|
24
|
+
|
|
21
25
|
await loginPage.login();
|
|
22
26
|
if (TestConstants.TS_SELENIUM_LAUNCH_FULLSCREEN) {
|
|
23
27
|
Logger.debug(`TS_SELENIUM_LAUNCH_FULLSCREEN is set to true, maximizing window.`);
|
|
@@ -35,6 +35,7 @@ export class CheApiRequestHandler {
|
|
|
35
35
|
return request;
|
|
36
36
|
}
|
|
37
37
|
request_censored.headers.Authorization = 'CENSORED';
|
|
38
|
+
request_censored.headers.Cookie = 'CENSORED';
|
|
38
39
|
Logger.info(`RequestHandler request:\n` + request_censored);
|
|
39
40
|
} catch (err) {
|
|
40
41
|
Logger.error(`RequestHandler request: Failed to deep clone AxiosRequestConfig:` + err);
|
|
@@ -69,6 +70,7 @@ export class CheApiRequestHandler {
|
|
|
69
70
|
return response;
|
|
70
71
|
}
|
|
71
72
|
response_censored.config.headers.Authorization = 'CENSORED';
|
|
73
|
+
response_censored.config.headers.Cookie = 'CENSORED';
|
|
72
74
|
if (response_censored.data.access_token != null) {
|
|
73
75
|
response_censored.data.access_token = 'CENSORED';
|
|
74
76
|
}
|
|
@@ -9,13 +9,16 @@
|
|
|
9
9
|
**********************************************************************/
|
|
10
10
|
import { AxiosRequestConfig } from 'axios';
|
|
11
11
|
import { IAuthorizationHeaderHandler } from './IAuthorizationHeaderHandler';
|
|
12
|
-
import { injectable } from 'inversify';
|
|
12
|
+
import { inject, injectable } from 'inversify';
|
|
13
|
+
import { DriverHelper } from '../../DriverHelper';
|
|
14
|
+
import { CLASSES } from '../../../inversify.types';
|
|
13
15
|
|
|
14
16
|
@injectable()
|
|
15
17
|
export class CheMultiuserAuthorizationHeaderHandler implements IAuthorizationHeaderHandler {
|
|
18
|
+
constructor(@inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper) { }
|
|
16
19
|
|
|
17
20
|
async get(): Promise<AxiosRequestConfig> {
|
|
18
|
-
|
|
19
|
-
return { headers: { 'cookie':
|
|
21
|
+
let token = await this.driverHelper.getDriver().manage().getCookie('_oauth_proxy');
|
|
22
|
+
return { headers: { 'cookie': `_oauth_proxy=${token.value}` } };
|
|
20
23
|
}
|
|
21
24
|
}
|