@eclipse-che/che-e2e 7.68.0-dev-e7cb474 → 7.69.0-dev-ac76de0
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/index.ts +5 -5
- package/package.json +2 -2
- package/dist/configs/inversify.config.js +0 -70
- package/dist/configs/inversify.config.js.map +0 -1
- package/dist/configs/inversify.types.js +0 -45
- package/dist/configs/inversify.types.js.map +0 -1
- package/dist/configs/mocharc.js +0 -27
- package/dist/configs/mocharc.js.map +0 -1
- package/dist/constants/TestConstants.js +0 -206
- package/dist/constants/TestConstants.js.map +0 -1
- package/dist/constants/TimeoutConstants.js +0 -184
- package/dist/constants/TimeoutConstants.js.map +0 -1
- package/dist/driver/ChromeDriver.js +0 -79
- package/dist/driver/ChromeDriver.js.map +0 -1
- package/dist/driver/IDriver.js +0 -3
- package/dist/driver/IDriver.js.map +0 -1
- package/dist/index.js +0 -69
- package/dist/index.js.map +0 -1
- package/dist/pageobjects/dashboard/CreateWorkspace.js +0 -98
- package/dist/pageobjects/dashboard/CreateWorkspace.js.map +0 -1
- package/dist/pageobjects/dashboard/Dashboard.js +0 -135
- package/dist/pageobjects/dashboard/Dashboard.js.map +0 -1
- package/dist/pageobjects/dashboard/Workspaces.js +0 -184
- package/dist/pageobjects/dashboard/Workspaces.js.map +0 -1
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +0 -140
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +0 -1
- package/dist/pageobjects/git-providers/OauthPage.js +0 -150
- package/dist/pageobjects/git-providers/OauthPage.js.map +0 -1
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js +0 -70
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js.map +0 -1
- package/dist/pageobjects/login/ICheLoginPage.js +0 -12
- package/dist/pageobjects/login/ICheLoginPage.js.map +0 -1
- package/dist/pageobjects/login/IOcpLoginPage.js +0 -12
- package/dist/pageobjects/login/IOcpLoginPage.js.map +0 -1
- package/dist/pageobjects/login/OcpRedHatLoginPage.js +0 -67
- package/dist/pageobjects/login/OcpRedHatLoginPage.js.map +0 -1
- package/dist/pageobjects/login/OcpUserLoginPage.js +0 -53
- package/dist/pageobjects/login/OcpUserLoginPage.js.map +0 -1
- package/dist/pageobjects/login/RedHatLoginPage.js +0 -77
- package/dist/pageobjects/login/RedHatLoginPage.js.map +0 -1
- package/dist/pageobjects/login/RegularUserOcpCheLoginPage.js +0 -68
- package/dist/pageobjects/login/RegularUserOcpCheLoginPage.js.map +0 -1
- package/dist/pageobjects/openshift/CheLoginPage.js +0 -55
- package/dist/pageobjects/openshift/CheLoginPage.js.map +0 -1
- package/dist/pageobjects/openshift/OcpApplicationPage.js +0 -60
- package/dist/pageobjects/openshift/OcpApplicationPage.js.map +0 -1
- package/dist/pageobjects/openshift/OcpImportFromGitPage.js +0 -91
- package/dist/pageobjects/openshift/OcpImportFromGitPage.js.map +0 -1
- package/dist/pageobjects/openshift/OcpLoginPage.js +0 -92
- package/dist/pageobjects/openshift/OcpLoginPage.js.map +0 -1
- package/dist/pageobjects/openshift/OcpMainPage.js +0 -108
- package/dist/pageobjects/openshift/OcpMainPage.js.map +0 -1
- package/dist/specs/MochaHooks.js +0 -89
- package/dist/specs/MochaHooks.js.map +0 -1
- package/dist/specs/SmokeTest.spec.js +0 -49
- package/dist/specs/SmokeTest.spec.js.map +0 -1
- package/dist/specs/api/ContainerOverridesAPI.spec.js +0 -37
- package/dist/specs/api/ContainerOverridesAPI.spec.js.map +0 -1
- package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js +0 -93
- package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js.map +0 -1
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js +0 -61
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js.map +0 -1
- package/dist/specs/api/PodOverridesAPI.spec.js +0 -43
- package/dist/specs/api/PodOverridesAPI.spec.js.map +0 -1
- package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js +0 -48
- package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js.map +0 -1
- package/dist/specs/dashboard-samples/Quarkus.spec.js +0 -50
- package/dist/specs/dashboard-samples/Quarkus.spec.js.map +0 -1
- package/dist/specs/dashboard-samples/RecomendedExtentions.spec.js +0 -161
- package/dist/specs/dashboard-samples/RecomendedExtentions.spec.js.map +0 -1
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js +0 -75
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js.map +0 -1
- package/dist/specs/factory/Factory.spec.js +0 -160
- package/dist/specs/factory/Factory.spec.js.map +0 -1
- package/dist/specs/factory/NoSetupRepoFactory.spec.js +0 -228
- package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +0 -1
- package/dist/specs/factory/RefusedOAuthFactory.spec.js +0 -220
- package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +0 -1
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +0 -66
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js.map +0 -1
- package/dist/tests-library/LoginTests.js +0 -70
- package/dist/tests-library/LoginTests.js.map +0 -1
- package/dist/tests-library/ProjectAndFileTests.js +0 -56
- package/dist/tests-library/ProjectAndFileTests.js.map +0 -1
- package/dist/tests-library/WorkspaceHandlingTests.js +0 -160
- package/dist/tests-library/WorkspaceHandlingTests.js.map +0 -1
- package/dist/utils/BrowserTabsUtil.js +0 -111
- package/dist/utils/BrowserTabsUtil.js.map +0 -1
- package/dist/utils/CheReporter.js +0 -172
- package/dist/utils/CheReporter.js.map +0 -1
- package/dist/utils/DevWorkspaceConfigurationHelper.js +0 -72
- package/dist/utils/DevWorkspaceConfigurationHelper.js.map +0 -1
- package/dist/utils/DevfilesRegistryHelper.js +0 -82
- package/dist/utils/DevfilesRegistryHelper.js.map +0 -1
- package/dist/utils/DriverHelper.js +0 -591
- package/dist/utils/DriverHelper.js.map +0 -1
- package/dist/utils/KubernetesCommandLineToolsExecutor.js +0 -173
- package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +0 -1
- package/dist/utils/Logger.js +0 -89
- package/dist/utils/Logger.js.map +0 -1
- package/dist/utils/ScreenCatcher.js +0 -104
- package/dist/utils/ScreenCatcher.js.map +0 -1
- package/dist/utils/ShellExecutor.js +0 -18
- package/dist/utils/ShellExecutor.js.map +0 -1
- package/dist/utils/StringUtil.js +0 -54
- package/dist/utils/StringUtil.js.map +0 -1
- package/dist/utils/request-handlers/CheApiRequestHandler.js +0 -126
- package/dist/utils/request-handlers/CheApiRequestHandler.js.map +0 -1
- package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js +0 -49
- package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +0 -1
- package/dist/utils/request-handlers/headers/IAuthorizationHeaderHandler.js +0 -12
- package/dist/utils/request-handlers/headers/IAuthorizationHeaderHandler.js.map +0 -1
- package/dist/utils/workspace/ApiUrlResolver.js +0 -64
- package/dist/utils/workspace/ApiUrlResolver.js.map +0 -1
- package/dist/utils/workspace/ITestWorkspaceUtil.js +0 -12
- package/dist/utils/workspace/ITestWorkspaceUtil.js.map +0 -1
- package/dist/utils/workspace/TestWorkspaceUtil.js +0 -167
- package/dist/utils/workspace/TestWorkspaceUtil.js.map +0 -1
- package/dist/utils/workspace/WorkspaceStatus.js +0 -19
- package/dist/utils/workspace/WorkspaceStatus.js.map +0 -1
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*********************************************************************
|
|
3
|
-
* Copyright (c) 2019-2023 Red Hat, Inc.
|
|
4
|
-
*
|
|
5
|
-
* This program and the accompanying materials are made
|
|
6
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
7
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
8
|
-
*
|
|
9
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
10
|
-
**********************************************************************/
|
|
11
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
12
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
14
|
-
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;
|
|
15
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
16
|
-
};
|
|
17
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
18
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
19
|
-
};
|
|
20
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
21
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
22
|
-
};
|
|
23
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.BrowserTabsUtil = void 0;
|
|
25
|
-
const inversify_1 = require("inversify");
|
|
26
|
-
const inversify_types_1 = require("../configs/inversify.types");
|
|
27
|
-
const DriverHelper_1 = require("./DriverHelper");
|
|
28
|
-
const Logger_1 = require("./Logger");
|
|
29
|
-
const TimeoutConstants_1 = require("../constants/TimeoutConstants");
|
|
30
|
-
const TestConstants_1 = require("../constants/TestConstants");
|
|
31
|
-
let BrowserTabsUtil = class BrowserTabsUtil {
|
|
32
|
-
constructor(driverHelper) {
|
|
33
|
-
this.driverHelper = driverHelper;
|
|
34
|
-
}
|
|
35
|
-
async switchToWindow(windowHandle) {
|
|
36
|
-
Logger_1.Logger.debug('BrowserTabsUtil.switchToWindow');
|
|
37
|
-
await this.driverHelper.getDriver().switchTo().window(windowHandle);
|
|
38
|
-
}
|
|
39
|
-
async getAllWindowHandles() {
|
|
40
|
-
Logger_1.Logger.debug('BrowserTabsUtil.getAllWindowHandles');
|
|
41
|
-
return (await this.driverHelper.getDriver()).getAllWindowHandles();
|
|
42
|
-
}
|
|
43
|
-
async getCurrentWindowHandle() {
|
|
44
|
-
Logger_1.Logger.debug('BrowserTabsUtil.getCurrentWindowHandle');
|
|
45
|
-
return await this.driverHelper.getDriver().getWindowHandle();
|
|
46
|
-
}
|
|
47
|
-
async navigateTo(url) {
|
|
48
|
-
Logger_1.Logger.debug(`BrowserTabsUtil.navigateTo ${url}`);
|
|
49
|
-
await this.driverHelper.getDriver().navigate().to(url);
|
|
50
|
-
}
|
|
51
|
-
async navigateAndWaitToUrl(url, timeout = TimeoutConstants_1.TimeoutConstants.TS_SELENIUM_WAIT_FOR_URL) {
|
|
52
|
-
Logger_1.Logger.trace(`BrowserTabsUtil.navigateAndWaitToUrl ${url}`);
|
|
53
|
-
await this.navigateTo(url);
|
|
54
|
-
await this.waitURL(url, timeout);
|
|
55
|
-
}
|
|
56
|
-
async waitAndSwitchToAnotherWindow(currentWindowHandle, timeout) {
|
|
57
|
-
Logger_1.Logger.debug('BrowserTabsUtil.waitAndSwitchToAnotherWindow');
|
|
58
|
-
await this.driverHelper.waitUntilTrue(async () => {
|
|
59
|
-
const windowHandles = await this.getAllWindowHandles();
|
|
60
|
-
return windowHandles.length > 1;
|
|
61
|
-
}, timeout);
|
|
62
|
-
const windowHandles = await this.getAllWindowHandles();
|
|
63
|
-
for (const windowHandle of windowHandles) {
|
|
64
|
-
if (windowHandle !== currentWindowHandle) {
|
|
65
|
-
await this.switchToWindow(windowHandle);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
async refreshPage() {
|
|
70
|
-
Logger_1.Logger.debug('BrowserTabsUtil.refreshPage');
|
|
71
|
-
await (await this.driverHelper.getDriver()).navigate().refresh();
|
|
72
|
-
}
|
|
73
|
-
async getCurrentUrl() {
|
|
74
|
-
return await this.driverHelper.getDriver().getCurrentUrl();
|
|
75
|
-
}
|
|
76
|
-
async waitURL(expectedUrl, timeout) {
|
|
77
|
-
Logger_1.Logger.trace(`BrowserTabsUtil.waitURL ${expectedUrl}`);
|
|
78
|
-
await this.driverHelper.getDriver().wait(async () => {
|
|
79
|
-
const currentUrl = await this.driverHelper.getDriver().getCurrentUrl();
|
|
80
|
-
const urlEquals = currentUrl === expectedUrl;
|
|
81
|
-
if (urlEquals) {
|
|
82
|
-
return true;
|
|
83
|
-
}
|
|
84
|
-
}, timeout);
|
|
85
|
-
}
|
|
86
|
-
async maximize() {
|
|
87
|
-
Logger_1.Logger.trace(`BrowserTabsUtil.maximize`);
|
|
88
|
-
if (TestConstants_1.TestConstants.TS_SELENIUM_LAUNCH_FULLSCREEN) {
|
|
89
|
-
Logger_1.Logger.debug(`TS_SELENIUM_LAUNCH_FULLSCREEN is set to true, maximizing window.`);
|
|
90
|
-
await this.driverHelper.getDriver().manage().window().maximize();
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
async closeAllTabsExceptCurrent() {
|
|
94
|
-
Logger_1.Logger.trace(`${this.constructor.name}.${this.closeAllTabsExceptCurrent.name}`);
|
|
95
|
-
const allTabsHandles = await this.getAllWindowHandles();
|
|
96
|
-
const currentTabHandle = await this.getCurrentWindowHandle();
|
|
97
|
-
allTabsHandles.splice(allTabsHandles.indexOf(currentTabHandle), 1);
|
|
98
|
-
for (const tabHandle of allTabsHandles) {
|
|
99
|
-
await this.switchToWindow(tabHandle);
|
|
100
|
-
await this.driverHelper.getDriver().close();
|
|
101
|
-
}
|
|
102
|
-
await this.switchToWindow(currentTabHandle);
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
BrowserTabsUtil = __decorate([
|
|
106
|
-
inversify_1.injectable(),
|
|
107
|
-
__param(0, inversify_1.inject(inversify_types_1.CLASSES.DriverHelper)),
|
|
108
|
-
__metadata("design:paramtypes", [DriverHelper_1.DriverHelper])
|
|
109
|
-
], BrowserTabsUtil);
|
|
110
|
-
exports.BrowserTabsUtil = BrowserTabsUtil;
|
|
111
|
-
//# sourceMappingURL=BrowserTabsUtil.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserTabsUtil.js","sourceRoot":"","sources":["../../utils/BrowserTabsUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
/*********************************************************************
|
|
22
|
-
* Copyright (c) 2019-2023 Red Hat, Inc.
|
|
23
|
-
*
|
|
24
|
-
* This program and the accompanying materials are made
|
|
25
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
26
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
27
|
-
*
|
|
28
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
29
|
-
**********************************************************************/
|
|
30
|
-
const mocha = __importStar(require("mocha"));
|
|
31
|
-
const inversify_types_1 = require("../configs/inversify.types");
|
|
32
|
-
const fs = __importStar(require("fs"));
|
|
33
|
-
const rm = __importStar(require("rimraf"));
|
|
34
|
-
const TestConstants_1 = require("../constants/TestConstants");
|
|
35
|
-
const TimeoutConstants_1 = require("../constants/TimeoutConstants");
|
|
36
|
-
const Logger_1 = require("./Logger");
|
|
37
|
-
const inversify_config_1 = require("../configs/inversify.config");
|
|
38
|
-
const StringUtil_1 = require("./StringUtil");
|
|
39
|
-
const driverHelper = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.DriverHelper);
|
|
40
|
-
const screenCatcher = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ScreenCatcher);
|
|
41
|
-
let methodIndex = 0;
|
|
42
|
-
let deleteScreencast = true;
|
|
43
|
-
let testWorkspaceUtil = inversify_config_1.e2eContainer.get(inversify_types_1.TYPES.WorkspaceUtil);
|
|
44
|
-
class CheReporter extends mocha.reporters.Spec {
|
|
45
|
-
constructor(runner, options) {
|
|
46
|
-
super(runner, options);
|
|
47
|
-
runner.on('start', async () => {
|
|
48
|
-
let launchInformation = `################## Launch Information ##################
|
|
49
|
-
|
|
50
|
-
TS_SELENIUM_BASE_URL: ${TestConstants_1.TestConstants.TS_SELENIUM_BASE_URL}
|
|
51
|
-
TS_SELENIUM_HEADLESS: ${TestConstants_1.TestConstants.TS_SELENIUM_HEADLESS}
|
|
52
|
-
TS_SELENIUM_OCP_USERNAME: ${TestConstants_1.TestConstants.TS_SELENIUM_OCP_USERNAME}
|
|
53
|
-
TS_SELENIUM_EDITOR: ${TestConstants_1.TestConstants.TS_SELENIUM_EDITOR}
|
|
54
|
-
|
|
55
|
-
TS_SELENIUM_HAPPY_PATH_WORKSPACE_NAME: ${TestConstants_1.TestConstants.TS_SELENIUM_HAPPY_PATH_WORKSPACE_NAME}
|
|
56
|
-
TS_SELENIUM_DELAY_BETWEEN_SCREENSHOTS: ${TestConstants_1.TestConstants.TS_SELENIUM_DELAY_BETWEEN_SCREENSHOTS}
|
|
57
|
-
TS_SELENIUM_REPORT_FOLDER: ${TestConstants_1.TestConstants.TS_SELENIUM_REPORT_FOLDER}
|
|
58
|
-
TS_SELENIUM_EXECUTION_SCREENCAST: ${TestConstants_1.TestConstants.TS_SELENIUM_EXECUTION_SCREENCAST}
|
|
59
|
-
DELETE_SCREENCAST_IF_TEST_PASS: ${TestConstants_1.TestConstants.DELETE_SCREENCAST_IF_TEST_PASS}
|
|
60
|
-
TS_SELENIUM_REMOTE_DRIVER_URL: ${TestConstants_1.TestConstants.TS_SELENIUM_REMOTE_DRIVER_URL}
|
|
61
|
-
DELETE_WORKSPACE_ON_FAILED_TEST: ${TestConstants_1.TestConstants.DELETE_WORKSPACE_ON_FAILED_TEST}
|
|
62
|
-
TS_SELENIUM_LOG_LEVEL: ${TestConstants_1.TestConstants.TS_SELENIUM_LOG_LEVEL}
|
|
63
|
-
TS_SELENIUM_LAUNCH_FULLSCREEN: ${TestConstants_1.TestConstants.TS_SELENIUM_LAUNCH_FULLSCREEN}
|
|
64
|
-
|
|
65
|
-
TS_COMMON_DASHBOARD_WAIT_TIMEOUT: ${TimeoutConstants_1.TimeoutConstants.TS_COMMON_DASHBOARD_WAIT_TIMEOUT}
|
|
66
|
-
TS_SELENIUM_START_WORKSPACE_TIMEOUT: ${TimeoutConstants_1.TimeoutConstants.TS_SELENIUM_START_WORKSPACE_TIMEOUT}
|
|
67
|
-
TS_WAIT_LOADER_PRESENCE_TIMEOUT: ${TimeoutConstants_1.TimeoutConstants.TS_WAIT_LOADER_PRESENCE_TIMEOUT}
|
|
68
|
-
|
|
69
|
-
TS_SAMPLE_LIST: ${TestConstants_1.TestConstants.TS_SAMPLE_LIST}
|
|
70
|
-
|
|
71
|
-
${process.env.MOCHA_DIRECTORY ? 'MOCHA_DIRECTORY: ' + process.env.MOCHA_DIRECTORY : 'MOCHA_DRIRECTORY is not set'}
|
|
72
|
-
${process.env.USERSTORY ? 'USERSTORY: ' + process.env.USERSTORY : 'USERSTORY is not set'}
|
|
73
|
-
`;
|
|
74
|
-
if (TestConstants_1.TestConstants.TS_SELENIUM_PRINT_TIMEOUT_VARIABLES) {
|
|
75
|
-
launchInformation += `\n TS_SELENIUM_PRINT_TIMEOUT_VARIABLES is set to true: \n`;
|
|
76
|
-
Object.entries(TimeoutConstants_1.TimeoutConstants).forEach(([key, value]) => launchInformation += `\n ${key}: ${value}`);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
launchInformation += `\n to output timeout variables, set TS_SELENIUM_PRINT_TIMEOUT_VARIABLES to true`;
|
|
80
|
-
}
|
|
81
|
-
launchInformation += `\n ######################################################## \n`;
|
|
82
|
-
console.log(launchInformation);
|
|
83
|
-
rm.sync(TestConstants_1.TestConstants.TS_SELENIUM_REPORT_FOLDER);
|
|
84
|
-
});
|
|
85
|
-
runner.on('test', async function (test) {
|
|
86
|
-
if (!TestConstants_1.TestConstants.TS_SELENIUM_EXECUTION_SCREENCAST) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
methodIndex = methodIndex + 1;
|
|
90
|
-
const currentMethodIndex = methodIndex;
|
|
91
|
-
let iterationIndex = 1;
|
|
92
|
-
while (!(test.state === 'passed' || test.state === 'failed')) {
|
|
93
|
-
await screenCatcher.catchMethodScreen(test.title, currentMethodIndex, iterationIndex);
|
|
94
|
-
iterationIndex = iterationIndex + 1;
|
|
95
|
-
await driverHelper.wait(TestConstants_1.TestConstants.TS_SELENIUM_DELAY_BETWEEN_SCREENSHOTS);
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
runner.on('pass', async (test) => {
|
|
99
|
-
if (TestConstants_1.TestConstants.TS_LOAD_TESTS) {
|
|
100
|
-
const loadTestReportFolder = TestConstants_1.TestConstants.TS_SELENIUM_LOAD_TEST_REPORT_FOLDER;
|
|
101
|
-
const loadTestFilePath = loadTestReportFolder + '/load-test-results.txt';
|
|
102
|
-
const report = test.title + ': ' + test.duration + '\r';
|
|
103
|
-
if (!fs.existsSync(loadTestReportFolder)) {
|
|
104
|
-
fs.mkdirSync(loadTestReportFolder);
|
|
105
|
-
}
|
|
106
|
-
fs.appendFileSync(loadTestFilePath, report);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
runner.on('end', async function () {
|
|
110
|
-
// ensure that fired events done
|
|
111
|
-
await driverHelper.wait(5000);
|
|
112
|
-
// close driver
|
|
113
|
-
await driverHelper.getDriver().quit();
|
|
114
|
-
// delete screencast folder if conditions matched
|
|
115
|
-
if (deleteScreencast && TestConstants_1.TestConstants.DELETE_SCREENCAST_IF_TEST_PASS) {
|
|
116
|
-
rm.sync(TestConstants_1.TestConstants.TS_SELENIUM_REPORT_FOLDER);
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
runner.on('fail', async function (test) {
|
|
120
|
-
Logger_1.Logger.error(`CheReporter runner.on.fail: ${test.fullTitle()} failed after ${test.duration}ms`);
|
|
121
|
-
// raise flag for keeping the screencast
|
|
122
|
-
deleteScreencast = false;
|
|
123
|
-
Logger_1.Logger.trace(`FullTitle:${test.fullTitle()}`);
|
|
124
|
-
const testFullTitle = StringUtil_1.StringUtil.sanitizeTitle(test.fullTitle());
|
|
125
|
-
Logger_1.Logger.trace(`FullTitleSanitized:${testFullTitle}`);
|
|
126
|
-
Logger_1.Logger.trace(`TestTitle:${test.title}`);
|
|
127
|
-
const testTitle = StringUtil_1.StringUtil.sanitizeTitle(test.title);
|
|
128
|
-
Logger_1.Logger.trace(`TestTitleSanitized:${testTitle}`);
|
|
129
|
-
const testReportDirPath = `${TestConstants_1.TestConstants.TS_SELENIUM_REPORT_FOLDER}/${testFullTitle}`;
|
|
130
|
-
const screenshotFileName = `${testReportDirPath}/screenshot-${testTitle}.png`;
|
|
131
|
-
const pageSourceFileName = `${testReportDirPath}/pagesource-${testTitle}.html`;
|
|
132
|
-
const browserLogsFileName = `${testReportDirPath}/browserlogs-${testTitle}.txt`;
|
|
133
|
-
// create reporter dir if not exist
|
|
134
|
-
const reportDirExists = fs.existsSync(TestConstants_1.TestConstants.TS_SELENIUM_REPORT_FOLDER);
|
|
135
|
-
if (!reportDirExists) {
|
|
136
|
-
fs.mkdirSync(TestConstants_1.TestConstants.TS_SELENIUM_REPORT_FOLDER);
|
|
137
|
-
}
|
|
138
|
-
// create dir for failed test report if not exist
|
|
139
|
-
const testReportDirExists = fs.existsSync(testReportDirPath);
|
|
140
|
-
if (!testReportDirExists) {
|
|
141
|
-
fs.mkdirSync(testReportDirPath);
|
|
142
|
-
}
|
|
143
|
-
// take screenshot and write to file
|
|
144
|
-
const screenshot = await driverHelper.getDriver().takeScreenshot();
|
|
145
|
-
const screenshotStream = fs.createWriteStream(screenshotFileName);
|
|
146
|
-
screenshotStream.write(Buffer.from(screenshot, 'base64'));
|
|
147
|
-
screenshotStream.end();
|
|
148
|
-
// take page source and write to file
|
|
149
|
-
const pageSource = await driverHelper.getDriver().getPageSource();
|
|
150
|
-
const pageSourceStream = fs.createWriteStream(pageSourceFileName);
|
|
151
|
-
pageSourceStream.write(Buffer.from(pageSource));
|
|
152
|
-
pageSourceStream.end();
|
|
153
|
-
// take browser console logs and write to file
|
|
154
|
-
const browserLogsEntries = await driverHelper.getDriver().manage().logs().get('browser');
|
|
155
|
-
let browserLogs = '';
|
|
156
|
-
browserLogsEntries.forEach(log => {
|
|
157
|
-
browserLogs += `\"${log.level}\" \"${log.type}\" \"${log.message}\"\n`;
|
|
158
|
-
});
|
|
159
|
-
const browserLogsStream = fs.createWriteStream(browserLogsFileName);
|
|
160
|
-
browserLogsStream.write(Buffer.from(browserLogs));
|
|
161
|
-
browserLogsStream.end();
|
|
162
|
-
// stop and remove running workspace
|
|
163
|
-
if (TestConstants_1.TestConstants.DELETE_WORKSPACE_ON_FAILED_TEST) {
|
|
164
|
-
Logger_1.Logger.warn('Property DELETE_WORKSPACE_ON_FAILED_TEST se to true - trying to stop and delete running workspace.');
|
|
165
|
-
await testWorkspaceUtil.stopAndDeleteWorkspaceByName(CheReporter.latestWorkspace);
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
CheReporter.latestWorkspace = '';
|
|
171
|
-
module.exports = CheReporter;
|
|
172
|
-
//# sourceMappingURL=CheReporter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CheReporter.js","sourceRoot":"","sources":["../../utils/CheReporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
-
};
|
|
24
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.DevWorkspaceConfigurationHelper = void 0;
|
|
26
|
-
const main_1 = require("@eclipse-che/che-devworkspace-generator/lib/main");
|
|
27
|
-
const yaml_1 = __importDefault(require("yaml"));
|
|
28
|
-
const axios = __importStar(require("axios"));
|
|
29
|
-
const Logger_1 = require("./Logger");
|
|
30
|
-
const TestConstants_1 = require("../constants/TestConstants");
|
|
31
|
-
const ShellExecutor_1 = require("./ShellExecutor");
|
|
32
|
-
class DevWorkspaceConfigurationHelper {
|
|
33
|
-
constructor(params) {
|
|
34
|
-
this.generator = new main_1.Main();
|
|
35
|
-
// check if all undefined
|
|
36
|
-
if (!(params.editorPath || params.editorEntry || params.editorContent)) {
|
|
37
|
-
params.editorEntry = 'che-incubator/che-code/latest';
|
|
38
|
-
}
|
|
39
|
-
// check if one or both has value
|
|
40
|
-
if (TestConstants_1.TestConstants.TS_API_TEST_UDI_IMAGE || params.defaultComponentImage) {
|
|
41
|
-
params.injectDefaultComponent = 'true';
|
|
42
|
-
// check if not explicitly passed than assign value from the constants
|
|
43
|
-
if (!params.defaultComponentImage) {
|
|
44
|
-
params.defaultComponentImage = TestConstants_1.TestConstants.TS_API_TEST_UDI_IMAGE;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
// assign value from the constants if not explicitly passed
|
|
48
|
-
if (TestConstants_1.TestConstants.TS_API_TEST_PLUGIN_REGISTRY_URL && !params.pluginRegistryUrl) {
|
|
49
|
-
params.pluginRegistryUrl = TestConstants_1.TestConstants.TS_API_TEST_PLUGIN_REGISTRY_URL;
|
|
50
|
-
}
|
|
51
|
-
if (TestConstants_1.TestConstants.TS_API_TEST_CHE_CODE_EDITOR_DEVFILE_URI && !params.editorContent) {
|
|
52
|
-
params.editorContent = ShellExecutor_1.ShellExecutor.curl(TestConstants_1.TestConstants.TS_API_TEST_CHE_CODE_EDITOR_DEVFILE_URI).stdout;
|
|
53
|
-
}
|
|
54
|
-
this.params = params;
|
|
55
|
-
}
|
|
56
|
-
async generateDevfileContext() {
|
|
57
|
-
Logger_1.Logger.debug(`${this.constructor.name}.${this.generateDevfileContext.name}`);
|
|
58
|
-
if (!this.params.projects) {
|
|
59
|
-
this.params.projects = [];
|
|
60
|
-
}
|
|
61
|
-
return await this.generator.generateDevfileContext(Object.assign(Object.assign({}, this.params), { projects: this.params.projects }), axios.default);
|
|
62
|
-
}
|
|
63
|
-
// write templates and then DevWorkspace in a single file
|
|
64
|
-
async getDevWorkspaceConfigurationYamlAsString(context) {
|
|
65
|
-
Logger_1.Logger.debug(`${this.constructor.name}.${this.getDevWorkspaceConfigurationYamlAsString.name}`);
|
|
66
|
-
const allContentArray = context.devWorkspaceTemplates.map((template) => yaml_1.default.stringify(template));
|
|
67
|
-
allContentArray.push(yaml_1.default.stringify(context.devWorkspace));
|
|
68
|
-
return allContentArray.join('---\n');
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
exports.DevWorkspaceConfigurationHelper = DevWorkspaceConfigurationHelper;
|
|
72
|
-
//# sourceMappingURL=DevWorkspaceConfigurationHelper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DevWorkspaceConfigurationHelper.js","sourceRoot":"","sources":["../../utils/DevWorkspaceConfigurationHelper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2EAAqF;AAGrF,gDAAwB;AACxB,6CAA+B;AAC/B,qCAAkC;AAClC,8DAA2D;AAC3D,mDAAgD;AAwBhD,MAAa,+BAA+B;IAIxC,YAAY,MAAsB;QAH1B,cAAS,GAAc,IAAI,WAAS,EAAE,CAAC;QAI3C,yBAAyB;QACzB,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE;YACpE,MAAM,CAAC,WAAW,GAAG,+BAA+B,CAAC;SACxD;QACD,iCAAiC;QACjC,IAAI,6BAAa,CAAC,qBAAqB,IAAI,MAAM,CAAC,qBAAqB,EAAE;YACrE,MAAM,CAAC,sBAAsB,GAAG,MAAM,CAAC;YACvC,sEAAsE;YACtE,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;gBAC/B,MAAM,CAAC,qBAAqB,GAAG,6BAAa,CAAC,qBAAqB,CAAC;aACtE;SACJ;QACD,2DAA2D;QAC3D,IAAI,6BAAa,CAAC,+BAA+B,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;YAC5E,MAAM,CAAC,iBAAiB,GAAG,6BAAa,CAAC,+BAA+B,CAAC;SAC5E;QACD,IAAI,6BAAa,CAAC,uCAAuC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;YAChF,MAAM,CAAC,aAAa,GAAG,6BAAa,CAAC,IAAI,CAAC,6BAAa,CAAC,uCAAuC,CAAC,CAAC,MAAM,CAAC;SAC3G;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,sBAAsB;QACxB,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;SAC7B;QACD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,sBAAsB,iCAEvC,IAAI,CAAC,MAAM,KACd,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,KAElC,KAAK,CAAC,OAAc,CACvB,CAAC;IACN,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,wCAAwC,CAAC,OAAuB;QAClE,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,wCAAwC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/F,MAAM,eAAe,GAAU,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAC5D,CAAC,QAAsC,EAAE,EAAE,CAAC,cAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACvE,CAAC;QACF,eAAe,CAAC,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAE3D,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;CACJ;AAnDD,0EAmDC"}
|
|
@@ -1,82 +0,0 @@
|
|
|
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
|
-
exports.DevfilesRegistryHelper = void 0;
|
|
7
|
-
/*********************************************************************
|
|
8
|
-
* Copyright (c) 2023 Red Hat, Inc.
|
|
9
|
-
*
|
|
10
|
-
* This program and the accompanying materials are made
|
|
11
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
12
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
13
|
-
*
|
|
14
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
15
|
-
**********************************************************************/
|
|
16
|
-
const TestConstants_1 = require("../constants/TestConstants");
|
|
17
|
-
const axios_1 = __importDefault(require("axios"));
|
|
18
|
-
const Logger_1 = require("./Logger");
|
|
19
|
-
const yaml_1 = __importDefault(require("yaml"));
|
|
20
|
-
class DevfilesRegistryHelper {
|
|
21
|
-
async getInbuiltDevfilesRegistryContent() {
|
|
22
|
-
Logger_1.Logger.debug(`${this.constructor.name}.${this.getInbuiltDevfilesRegistryContent.name}`);
|
|
23
|
-
return await this.getContent(TestConstants_1.SupportedDevfilesRegistries.INBUILT_APPLICATION_DEVFILE_REGISTRY_URL());
|
|
24
|
-
}
|
|
25
|
-
async getGitHubCheDevfileRegistryContent() {
|
|
26
|
-
Logger_1.Logger.debug(`${this.constructor.name}.${this.getGitHubCheDevfileRegistryContent.name}`);
|
|
27
|
-
return await this.getContent(TestConstants_1.SupportedDevfilesRegistries.GIT_HUB_CHE_DEVFILE_REGISTRY_URL);
|
|
28
|
-
}
|
|
29
|
-
async collectPathsToDevfilesFromRegistry() {
|
|
30
|
-
Logger_1.Logger.debug(`${this.constructor.name}.${this.collectPathsToDevfilesFromRegistry.name}`);
|
|
31
|
-
const devfileSamples = [];
|
|
32
|
-
const sampleNames = [];
|
|
33
|
-
switch (TestConstants_1.TestConstants.TS_API_ACCEPTANCE_TEST_REGISTRY_URL()) {
|
|
34
|
-
case (TestConstants_1.SupportedDevfilesRegistries.GIT_HUB_CHE_DEVFILE_REGISTRY_URL):
|
|
35
|
-
{
|
|
36
|
-
const content = await this.getGitHubCheDevfileRegistryContent();
|
|
37
|
-
content.forEach((e) => {
|
|
38
|
-
if (e.name[0] !== '.') {
|
|
39
|
-
sampleNames.push(e.name);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
for (const sample of sampleNames) {
|
|
43
|
-
const sampleEndpoint = `${TestConstants_1.SupportedDevfilesRegistries.GIT_HUB_CHE_DEVFILE_REGISTRY_URL}${sample}/meta.yaml`;
|
|
44
|
-
const sampleEndpointContent = await this.getContent(sampleEndpoint);
|
|
45
|
-
const decodedFileContent = Buffer.from(sampleEndpointContent.content, 'base64').toString();
|
|
46
|
-
const metaYamlContent = yaml_1.default.parse(decodedFileContent);
|
|
47
|
-
devfileSamples.push({ name: sample, link: metaYamlContent.links.v2 });
|
|
48
|
-
}
|
|
49
|
-
Logger_1.Logger.debug(`${this.constructor.name}.${this.collectPathsToDevfilesFromRegistry.name}: samples list: ${JSON.stringify(devfileSamples)}`);
|
|
50
|
-
}
|
|
51
|
-
break;
|
|
52
|
-
case (TestConstants_1.SupportedDevfilesRegistries.INBUILT_APPLICATION_DEVFILE_REGISTRY_URL()):
|
|
53
|
-
{
|
|
54
|
-
const content = await this.getInbuiltDevfilesRegistryContent();
|
|
55
|
-
for (const sample of content) {
|
|
56
|
-
devfileSamples.push({ name: sample.displayName, link: sample.links.v2 });
|
|
57
|
-
}
|
|
58
|
-
Logger_1.Logger.debug(`${this.constructor.name}.${this.collectPathsToDevfilesFromRegistry.name}: samples list: ${JSON.stringify(devfileSamples)}`);
|
|
59
|
-
}
|
|
60
|
-
break;
|
|
61
|
-
default: {
|
|
62
|
-
Logger_1.Logger.error(`${this.constructor.name}.${this.collectPathsToDevfilesFromRegistry.name}: unsupported registry url - ${TestConstants_1.TestConstants.TS_API_ACCEPTANCE_TEST_REGISTRY_URL()}\n
|
|
63
|
-
supported registries: ${JSON.stringify(TestConstants_1.SupportedDevfilesRegistries)}`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return devfileSamples;
|
|
67
|
-
}
|
|
68
|
-
async getContent(url, headers) {
|
|
69
|
-
Logger_1.Logger.debug(`${this.constructor.name}.${this.getContent.name}: ${url}`);
|
|
70
|
-
let response;
|
|
71
|
-
try {
|
|
72
|
-
response = await axios_1.default.get(url, headers);
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
Logger_1.Logger.error(`${error} + ${url}`);
|
|
76
|
-
throw error;
|
|
77
|
-
}
|
|
78
|
-
return response === null || response === void 0 ? void 0 : response.data;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.DevfilesRegistryHelper = DevfilesRegistryHelper;
|
|
82
|
-
//# sourceMappingURL=DevfilesRegistryHelper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DevfilesRegistryHelper.js","sourceRoot":"","sources":["../../utils/DevfilesRegistryHelper.ts"],"names":[],"mappings":"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"}
|