@eclipse-che/che-e2e 7.74.0-dev-1d09cb7 → 7.74.0-dev-41d1364
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/.eslintignore +10 -0
- package/.eslintrc.js +183 -0
- package/.prettierignore +10 -0
- package/.prettierrc.json +10 -0
- package/README.md +47 -47
- package/configs/inversify.config.ts +13 -9
- package/configs/inversify.types.ts +29 -29
- package/configs/mocharc.ts +21 -24
- package/constants/API_TEST_CONSTANTS.ts +67 -0
- package/constants/BASE_TEST_CONSTANTS.ts +80 -0
- package/constants/CHROME_DRIVER_CONSTANTS.ts +54 -0
- package/constants/FACTORY_TEST_CONSTANTS.ts +61 -0
- package/constants/MONACO_CONSTANTS.ts +25 -0
- package/constants/OAUTH_CONSTANTS.ts +67 -0
- package/constants/PLUGIN_TEST_CONSTANTS.ts +15 -0
- package/constants/REPORTER_CONSTANTS.ts +53 -0
- package/constants/TIMEOUT_CONSTANTS.ts +131 -0
- package/dist/configs/inversify.config.js +14 -8
- package/dist/configs/inversify.config.js.map +1 -1
- package/dist/configs/inversify.types.js +2 -2
- package/dist/configs/inversify.types.js.map +1 -1
- package/dist/configs/mocharc.js +13 -16
- package/dist/configs/mocharc.js.map +1 -1
- package/dist/constants/{APITestConstants.js → API_TEST_CONSTANTS.js} +12 -12
- package/dist/constants/API_TEST_CONSTANTS.js.map +1 -0
- package/dist/constants/{BaseTestConstants.js → BASE_TEST_CONSTANTS.js} +16 -16
- package/dist/constants/BASE_TEST_CONSTANTS.js.map +1 -0
- package/dist/constants/{ChromeDriverConstants.js → CHROME_DRIVER_CONSTANTS.js} +13 -13
- package/dist/constants/CHROME_DRIVER_CONSTANTS.js.map +1 -0
- package/dist/constants/{FactoryTestConstants.js → FACTORY_TEST_CONSTANTS.js} +14 -13
- package/dist/constants/FACTORY_TEST_CONSTANTS.js.map +1 -0
- package/dist/constants/{MonacoConstants.js → MONACO_CONSTANTS.js} +7 -7
- package/dist/constants/MONACO_CONSTANTS.js.map +1 -0
- package/dist/constants/{OAuthConstants.js → OAUTH_CONSTANTS.js} +14 -14
- package/dist/constants/OAUTH_CONSTANTS.js.map +1 -0
- package/dist/constants/{PluginsTestConstants.js → PLUGIN_TEST_CONSTANTS.js} +7 -7
- package/dist/constants/PLUGIN_TEST_CONSTANTS.js.map +1 -0
- package/dist/constants/{ReporterConstants.js → REPORTER_CONSTANTS.js} +12 -12
- package/dist/constants/REPORTER_CONSTANTS.js.map +1 -0
- package/dist/constants/{TimeoutConstants.js → TIMEOUT_CONSTANTS.js} +24 -24
- package/dist/constants/TIMEOUT_CONSTANTS.js.map +1 -0
- package/dist/driver/ChromeDriver.js +12 -16
- package/dist/driver/ChromeDriver.js.map +1 -1
- package/dist/index.js +9 -9
- package/dist/index.js.map +1 -1
- package/dist/pageobjects/dashboard/CreateWorkspace.js +11 -11
- package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -1
- package/dist/pageobjects/dashboard/Dashboard.js +16 -16
- package/dist/pageobjects/dashboard/Dashboard.js.map +1 -1
- package/dist/pageobjects/dashboard/Workspaces.js +28 -28
- package/dist/pageobjects/dashboard/Workspaces.js.map +1 -1
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +36 -25
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +1 -1
- package/dist/pageobjects/git-providers/OauthPage.js +20 -18
- package/dist/pageobjects/git-providers/OauthPage.js.map +1 -1
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js +9 -9
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js.map +1 -1
- package/dist/pageobjects/login/interfaces/ICheLoginPage.js +2 -2
- package/dist/pageobjects/login/interfaces/IOcpLoginPage.js +2 -2
- package/dist/pageobjects/login/kubernetes/DexLoginPage.js +5 -5
- package/dist/pageobjects/login/kubernetes/DexLoginPage.js.map +1 -1
- package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js +5 -5
- package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpLoginPage.js +13 -13
- package/dist/pageobjects/login/openshift/OcpLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js +5 -5
- package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpUserLoginPage.js +6 -6
- package/dist/pageobjects/login/openshift/OcpUserLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/RedHatLoginPage.js +5 -5
- package/dist/pageobjects/login/openshift/RedHatLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js +8 -8
- package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js.map +1 -1
- package/dist/pageobjects/openshift/OcpApplicationPage.js +5 -5
- package/dist/pageobjects/openshift/OcpApplicationPage.js.map +1 -1
- package/dist/pageobjects/openshift/OcpImportFromGitPage.js +4 -4
- package/dist/pageobjects/openshift/OcpImportFromGitPage.js.map +1 -1
- package/dist/pageobjects/openshift/OcpMainPage.js +6 -6
- package/dist/pageobjects/openshift/OcpMainPage.js.map +1 -1
- package/dist/specs/MochaHooks.js +26 -23
- package/dist/specs/MochaHooks.js.map +1 -1
- package/dist/specs/SmokeTest.spec.js +11 -11
- package/dist/specs/SmokeTest.spec.js.map +1 -1
- package/dist/specs/api/ContainerOverridesAPI.spec.js +10 -1
- package/dist/specs/api/ContainerOverridesAPI.spec.js.map +1 -1
- package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js +26 -15
- package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js.map +1 -1
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js +17 -11
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js.map +1 -1
- package/dist/specs/api/PodOverridesAPI.spec.js +12 -3
- package/dist/specs/api/PodOverridesAPI.spec.js.map +1 -1
- package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js +5 -5
- package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js.map +1 -1
- package/dist/specs/dashboard-samples/Quarkus.spec.js +7 -7
- package/dist/specs/dashboard-samples/Quarkus.spec.js.map +1 -1
- package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js +41 -41
- package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js.map +1 -1
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js +14 -9
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js.map +1 -1
- package/dist/specs/factory/Factory.spec.js +25 -25
- package/dist/specs/factory/Factory.spec.js.map +1 -1
- package/dist/specs/factory/NoSetupRepoFactory.spec.js +37 -34
- package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +1 -1
- package/dist/specs/factory/RefusedOAuthFactory.spec.js +33 -33
- package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +1 -1
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +12 -3
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js.map +1 -1
- package/dist/tests-library/LoginTests.js +7 -7
- package/dist/tests-library/LoginTests.js.map +1 -1
- package/dist/tests-library/ProjectAndFileTests.js +7 -5
- package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
- package/dist/tests-library/WorkspaceHandlingTests.js +16 -13
- package/dist/tests-library/WorkspaceHandlingTests.js.map +1 -1
- package/dist/utils/BrowserTabsUtil.js +19 -14
- package/dist/utils/BrowserTabsUtil.js.map +1 -1
- package/dist/utils/CheReporter.js +44 -44
- package/dist/utils/CheReporter.js.map +1 -1
- package/dist/utils/DevWorkspaceConfigurationHelper.js +17 -8
- package/dist/utils/DevWorkspaceConfigurationHelper.js.map +1 -1
- package/dist/utils/DevfilesRegistryHelper.js +19 -13
- package/dist/utils/DevfilesRegistryHelper.js.map +1 -1
- package/dist/utils/DriverHelper.js +64 -66
- package/dist/utils/DriverHelper.js.map +1 -1
- package/dist/utils/KubernetesCommandLineToolsExecutor.js +28 -24
- package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +1 -1
- package/dist/utils/Logger.js +18 -19
- package/dist/utils/Logger.js.map +1 -1
- package/dist/utils/ScreenCatcher.js +18 -12
- package/dist/utils/ScreenCatcher.js.map +1 -1
- package/dist/utils/ShellExecutor.js +9 -0
- package/dist/utils/ShellExecutor.js.map +1 -1
- package/dist/utils/StringUtil.js +15 -7
- package/dist/utils/StringUtil.js.map +1 -1
- package/dist/utils/request-handlers/CheApiRequestHandler.js +27 -27
- package/dist/utils/request-handlers/CheApiRequestHandler.js.map +1 -1
- package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js +10 -6
- package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +1 -1
- package/dist/utils/request-handlers/headers/IAuthorizationHeaderHandler.js +2 -2
- package/dist/utils/workspace/ApiUrlResolver.js +3 -3
- package/dist/utils/workspace/ApiUrlResolver.js.map +1 -1
- package/dist/utils/workspace/ITestWorkspaceUtil.js +2 -2
- package/dist/utils/workspace/TestWorkspaceUtil.js +21 -19
- package/dist/utils/workspace/TestWorkspaceUtil.js.map +1 -1
- package/dist/utils/workspace/WorkspaceStatus.js +2 -2
- package/dist/utils/workspace/WorkspaceStatus.js.map +1 -1
- package/driver/ChromeDriver.ts +44 -50
- package/driver/IDriver.ts +3 -3
- package/index.ts +9 -9
- package/package.json +59 -49
- package/pageobjects/dashboard/CreateWorkspace.ts +64 -55
- package/pageobjects/dashboard/Dashboard.ts +101 -100
- package/pageobjects/dashboard/Workspaces.ts +196 -164
- package/pageobjects/dashboard/workspace-details/WorkspaceDetails.ts +150 -125
- package/pageobjects/git-providers/OauthPage.ts +177 -166
- package/pageobjects/ide/CheCodeLocatorLoader.ts +49 -46
- package/pageobjects/login/interfaces/ICheLoginPage.ts +3 -3
- package/pageobjects/login/interfaces/IOcpLoginPage.ts +3 -3
- package/pageobjects/login/kubernetes/DexLoginPage.ts +31 -30
- package/pageobjects/login/kubernetes/KubernetesLoginPage.ts +15 -14
- package/pageobjects/login/openshift/OcpLoginPage.ts +61 -54
- package/pageobjects/login/openshift/OcpRedHatLoginPage.ts +29 -24
- package/pageobjects/login/openshift/OcpUserLoginPage.ts +15 -18
- package/pageobjects/login/openshift/RedHatLoginPage.ts +48 -46
- package/pageobjects/login/openshift/RegularUserOcpCheLoginPage.ts +38 -34
- package/pageobjects/openshift/OcpApplicationPage.ts +21 -20
- package/pageobjects/openshift/OcpImportFromGitPage.ts +70 -68
- package/pageobjects/openshift/OcpMainPage.ts +69 -68
- package/specs/MochaHooks.ts +59 -50
- package/specs/SmokeTest.spec.ts +43 -40
- package/specs/api/ContainerOverridesAPI.spec.ts +33 -26
- package/specs/api/DevfileAcceptanceTestAPI.spec.ts +106 -95
- package/specs/api/EmptyWorkspaceAPI.spec.ts +62 -57
- package/specs/api/PodOverridesAPI.spec.ts +42 -33
- package/specs/dashboard-samples/EmptyWorkspace.spec.ts +31 -31
- package/specs/dashboard-samples/Quarkus.spec.ts +34 -34
- package/specs/dashboard-samples/RecommendedExtensions.spec.ts +192 -174
- package/specs/devconsole-intergration/DevConsoleIntegration.spec.ts +61 -52
- package/specs/factory/Factory.spec.ts +178 -168
- package/specs/factory/NoSetupRepoFactory.spec.ts +226 -211
- package/specs/factory/RefusedOAuthFactory.spec.ts +218 -204
- package/specs/miscellaneous/PredefinedNamespace.spec.ts +64 -54
- package/tests-library/LoginTests.ts +34 -32
- package/tests-library/ProjectAndFileTests.ts +21 -18
- package/tests-library/WorkspaceHandlingTests.ts +98 -89
- package/tsconfig.json +15 -15
- package/utils/BrowserTabsUtil.ts +103 -97
- package/utils/CheReporter.ts +141 -145
- package/utils/DevWorkspaceConfigurationHelper.ts +70 -61
- package/utils/DevfilesRegistryHelper.ts +67 -58
- package/utils/DriverHelper.ts +726 -700
- package/utils/KubernetesCommandLineToolsExecutor.ts +196 -180
- package/utils/Logger.ts +102 -125
- package/utils/ScreenCatcher.ts +57 -46
- package/utils/ShellExecutor.ts +19 -11
- package/utils/StringUtil.ts +40 -32
- package/utils/request-handlers/CheApiRequestHandler.ts +91 -88
- package/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.ts +32 -21
- package/utils/request-handlers/headers/IAuthorizationHeaderHandler.ts +3 -3
- package/utils/workspace/ApiUrlResolver.ts +31 -26
- package/utils/workspace/ITestWorkspaceUtil.ts +31 -31
- package/utils/workspace/TestWorkspaceUtil.ts +152 -145
- package/utils/workspace/WorkspaceStatus.ts +5 -5
- package/constants/APITestConstants.ts +0 -57
- package/constants/BaseTestConstants.ts +0 -68
- package/constants/ChromeDriverConstants.ts +0 -46
- package/constants/FactoryTestConstants.ts +0 -51
- package/constants/MonacoConstants.ts +0 -22
- package/constants/OAuthConstants.ts +0 -57
- package/constants/PluginsTestConstants.ts +0 -15
- package/constants/ReporterConstants.ts +0 -45
- package/constants/TimeoutConstants.ts +0 -113
- package/dist/constants/APITestConstants.js.map +0 -1
- package/dist/constants/BaseTestConstants.js.map +0 -1
- package/dist/constants/ChromeDriverConstants.js.map +0 -1
- package/dist/constants/FactoryTestConstants.js.map +0 -1
- package/dist/constants/MonacoConstants.js.map +0 -1
- package/dist/constants/OAuthConstants.js.map +0 -1
- package/dist/constants/PluginsTestConstants.js.map +0 -1
- package/dist/constants/ReporterConstants.js.map +0 -1
- package/dist/constants/TimeoutConstants.js.map +0 -1
- package/tslint.json +0 -126
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2019 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
|
|
@@ -12,63 +12,66 @@ import { getLocatorsPath } from 'vscode-extension-tester-locators';
|
|
|
12
12
|
import { LocatorDiff, Locators } from 'monaco-page-objects';
|
|
13
13
|
import { By } from 'selenium-webdriver';
|
|
14
14
|
import clone from 'clone-deep';
|
|
15
|
-
import {
|
|
15
|
+
import { MONACO_CONSTANTS } from '../../constants/MONACO_CONSTANTS';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* this class allows us to change or add some specific locators base on "monaco-page-object" and "vscode-extension-tester-locators".
|
|
19
19
|
* Use method webLocatorDiff(). To change place locator into field "locators", to add - "extras".
|
|
20
20
|
* To see full locators list check "node_modules/vscode-extension-tester-locators/out/lib".
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
export class CheCodeLocatorLoader extends LocatorLoader {
|
|
24
|
-
|
|
24
|
+
readonly webCheCodeLocators: Locators;
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
constructor() {
|
|
27
|
+
super(
|
|
28
|
+
MONACO_CONSTANTS.TS_SELENIUM_MONACO_PAGE_OBJECTS_BASE_VERSION,
|
|
29
|
+
MONACO_CONSTANTS.TS_SELENIUM_MONACO_PAGE_OBJECTS_BASE_VERSION,
|
|
30
|
+
getLocatorsPath()
|
|
31
|
+
);
|
|
32
|
+
this.webCheCodeLocators = this.mergeLocators();
|
|
33
|
+
}
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
35
|
+
private webLocatorDiff(): LocatorDiff {
|
|
36
|
+
return {
|
|
37
|
+
locators: {
|
|
38
|
+
WelcomeContent: {
|
|
39
|
+
text: By.xpath('//*[@class="dialog-message-text" and contains(text(), "trust")]'),
|
|
40
|
+
button: By.xpath('//a[contains(., "trust")]')
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
extras: {
|
|
44
|
+
ExtensionsViewSection: {
|
|
45
|
+
requireReloadButton: By.xpath('//a[text()="Reload Required"]')
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
46
50
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
private merge(target: any, obj: any): object {
|
|
52
|
+
for (const key in obj) {
|
|
53
|
+
if (!Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
52
56
|
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
const oldVal: any = obj[key];
|
|
58
|
+
const newVal: any = target[key];
|
|
55
59
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
if (typeof newVal === 'object' && typeof oldVal === 'object') {
|
|
61
|
+
target[key] = this.merge(newVal, oldVal);
|
|
62
|
+
} else {
|
|
63
|
+
target[key] = clone(oldVal);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return target;
|
|
67
|
+
}
|
|
64
68
|
|
|
65
|
-
|
|
66
|
-
|
|
69
|
+
private mergeLocators(): Locators {
|
|
70
|
+
const target: Locators = super.loadLocators();
|
|
67
71
|
|
|
68
|
-
|
|
69
|
-
|
|
72
|
+
this.merge(target, this.webLocatorDiff().locators as Locators);
|
|
73
|
+
this.merge(target, this.webLocatorDiff().extras as Locators);
|
|
70
74
|
|
|
71
|
-
|
|
72
|
-
|
|
75
|
+
return target;
|
|
76
|
+
}
|
|
73
77
|
}
|
|
74
|
-
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2019-2023 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,5 +9,5 @@
|
|
|
9
9
|
**********************************************************************/
|
|
10
10
|
|
|
11
11
|
export interface ICheLoginPage {
|
|
12
|
-
|
|
12
|
+
login(): Promise<void>;
|
|
13
13
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2019-2023 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,5 +9,5 @@
|
|
|
9
9
|
**********************************************************************/
|
|
10
10
|
|
|
11
11
|
export interface IOcpLoginPage {
|
|
12
|
-
|
|
12
|
+
login(): void;
|
|
13
13
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2019-2023 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
|
|
@@ -12,47 +12,48 @@ import { inject, injectable } from 'inversify';
|
|
|
12
12
|
import { CLASSES } from '../../../configs/inversify.types';
|
|
13
13
|
import { Logger } from '../../../utils/Logger';
|
|
14
14
|
import { By } from 'selenium-webdriver';
|
|
15
|
-
import {
|
|
15
|
+
import { TIMEOUT_CONSTANTS } from '../../../constants/TIMEOUT_CONSTANTS';
|
|
16
16
|
import { DriverHelper } from '../../../utils/DriverHelper';
|
|
17
17
|
|
|
18
18
|
@injectable()
|
|
19
19
|
export class DexLoginPage {
|
|
20
|
+
private static readonly dexPageContentContainer: By = By.className('dex-container');
|
|
21
|
+
private static readonly loginInput: By = By.id('login');
|
|
22
|
+
private static readonly passwordInput: By = By.id('password');
|
|
23
|
+
private static readonly submitButton: By = By.id('submit-login');
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
constructor(
|
|
26
|
+
@inject(CLASSES.DriverHelper)
|
|
27
|
+
private readonly driverHelper: DriverHelper
|
|
28
|
+
) {}
|
|
25
29
|
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
async waitDexLoginPage(): Promise<void> {
|
|
31
|
+
Logger.debug();
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
await this.driverHelper.waitVisibility(DexLoginPage.dexPageContentContainer, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
34
|
+
}
|
|
31
35
|
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
async clickOnLoginButton(): Promise<void> {
|
|
37
|
+
Logger.debug();
|
|
34
38
|
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
await this.driverHelper.waitAndClick(DexLoginPage.submitButton);
|
|
40
|
+
}
|
|
37
41
|
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
async enterUserNameKubernetes(userName: string): Promise<void> {
|
|
43
|
+
Logger.debug();
|
|
40
44
|
|
|
41
|
-
|
|
42
|
-
|
|
45
|
+
await this.driverHelper.enterValue(DexLoginPage.loginInput, userName);
|
|
46
|
+
}
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
async enterPasswordKubernetes(password: string): Promise<void> {
|
|
49
|
+
Logger.debug();
|
|
46
50
|
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
await this.driverHelper.enterValue(DexLoginPage.passwordInput, password);
|
|
52
|
+
}
|
|
49
53
|
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
async waitDexLoginPageDisappearance(): Promise<void> {
|
|
55
|
+
Logger.debug();
|
|
52
56
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
await this.driverHelper.waitDisappearance(DexLoginPage.dexPageContentContainer, TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
57
|
-
}
|
|
57
|
+
await this.driverHelper.waitDisappearance(DexLoginPage.dexPageContentContainer, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
58
|
+
}
|
|
58
59
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2019-2023 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
|
|
@@ -13,21 +13,22 @@ import { CLASSES } from '../../../configs/inversify.types';
|
|
|
13
13
|
import { Logger } from '../../../utils/Logger';
|
|
14
14
|
import { ICheLoginPage } from '../interfaces/ICheLoginPage';
|
|
15
15
|
import { DexLoginPage } from './DexLoginPage';
|
|
16
|
-
import {
|
|
16
|
+
import { OAUTH_CONSTANTS } from '../../../constants/OAUTH_CONSTANTS';
|
|
17
17
|
|
|
18
18
|
@injectable()
|
|
19
19
|
export class KubernetesLoginPage implements ICheLoginPage {
|
|
20
|
+
constructor(
|
|
21
|
+
@inject(CLASSES.DexLoginPage)
|
|
22
|
+
private readonly dexLoginPage: DexLoginPage
|
|
23
|
+
) {}
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
async login(): Promise<void> {
|
|
26
|
+
Logger.debug();
|
|
23
27
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
await this.dexLoginPage.clickOnLoginButton();
|
|
31
|
-
await this.dexLoginPage.waitDexLoginPageDisappearance();
|
|
32
|
-
}
|
|
28
|
+
await this.dexLoginPage.waitDexLoginPage();
|
|
29
|
+
await this.dexLoginPage.enterUserNameKubernetes(OAUTH_CONSTANTS.TS_SELENIUM_K8S_USERNAME);
|
|
30
|
+
await this.dexLoginPage.enterPasswordKubernetes(OAUTH_CONSTANTS.TS_SELENIUM_K8S_PASSWORD);
|
|
31
|
+
await this.dexLoginPage.clickOnLoginButton();
|
|
32
|
+
await this.dexLoginPage.waitDexLoginPageDisappearance();
|
|
33
|
+
}
|
|
33
34
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2019-2023 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
|
|
@@ -13,80 +13,87 @@ import { DriverHelper } from '../../../utils/DriverHelper';
|
|
|
13
13
|
import { CLASSES } from '../../../configs/inversify.types';
|
|
14
14
|
import { By } from 'selenium-webdriver';
|
|
15
15
|
import { Logger } from '../../../utils/Logger';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
16
|
+
import { TIMEOUT_CONSTANTS } from '../../../constants/TIMEOUT_CONSTANTS';
|
|
17
|
+
import { OAUTH_CONSTANTS } from '../../../constants/OAUTH_CONSTANTS';
|
|
18
18
|
|
|
19
19
|
@injectable()
|
|
20
20
|
export class OcpLoginPage {
|
|
21
|
+
private static readonly LOGIN_PAGE_OPENSHIFT_XPATH: string = '//*[contains(text(), "Welcome")]';
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
constructor(
|
|
24
|
+
@inject(CLASSES.DriverHelper)
|
|
25
|
+
private readonly driverHelper: DriverHelper
|
|
26
|
+
) {}
|
|
23
27
|
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
async waitOpenShiftLoginWelcomePage(): Promise<void> {
|
|
29
|
+
Logger.debug();
|
|
26
30
|
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
await this.driverHelper.waitVisibility(
|
|
32
|
+
By.xpath(OcpLoginPage.LOGIN_PAGE_OPENSHIFT_XPATH),
|
|
33
|
+
TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT
|
|
34
|
+
);
|
|
35
|
+
}
|
|
29
36
|
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
async clickOnLoginProviderTitle(): Promise<void> {
|
|
38
|
+
Logger.debug();
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
const loginProviderTitleLocator: By = By.xpath(`//a[text()="${OAUTH_CONSTANTS.TS_OCP_LOGIN_PAGE_PROVIDER_TITLE}"]`);
|
|
41
|
+
await this.driverHelper.waitAndClick(loginProviderTitleLocator, TIMEOUT_CONSTANTS.TS_SELENIUM_WAIT_FOR_URL);
|
|
42
|
+
}
|
|
35
43
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
44
|
+
async isIdentityProviderLinkVisible(): Promise<boolean> {
|
|
45
|
+
Logger.debug();
|
|
39
46
|
|
|
40
|
-
|
|
41
|
-
|
|
47
|
+
const loginWithHtpaswdLocator: By = By.xpath(`//a[text()="${OAUTH_CONSTANTS.TS_OCP_LOGIN_PAGE_PROVIDER_TITLE}"]`);
|
|
48
|
+
return await this.driverHelper.waitVisibilityBoolean(loginWithHtpaswdLocator, 3, 5000);
|
|
49
|
+
}
|
|
42
50
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
51
|
+
async isAuthorizeOpenShiftIdentityProviderPageVisible(): Promise<boolean> {
|
|
52
|
+
Logger.debug();
|
|
46
53
|
|
|
47
|
-
|
|
48
|
-
|
|
54
|
+
const authorizeOpenshiftIdentityProviderPageLocator: By = By.xpath('//h1[text()="Authorize Access"]');
|
|
55
|
+
return await this.driverHelper.isVisible(authorizeOpenshiftIdentityProviderPageLocator);
|
|
56
|
+
}
|
|
49
57
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
58
|
+
async waitAuthorizeOpenShiftIdentityProviderPage(): Promise<void> {
|
|
59
|
+
Logger.debug();
|
|
53
60
|
|
|
54
|
-
|
|
55
|
-
|
|
61
|
+
const authorizeOpenshiftIdentityProviderPageLocator: By = By.xpath('//h1[text()="Authorize Access"]');
|
|
62
|
+
await this.driverHelper.waitVisibility(
|
|
63
|
+
authorizeOpenshiftIdentityProviderPageLocator,
|
|
64
|
+
TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT
|
|
65
|
+
);
|
|
66
|
+
}
|
|
56
67
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
68
|
+
async clickOnApproveAuthorizeAccessButton(): Promise<void> {
|
|
69
|
+
Logger.debug();
|
|
60
70
|
|
|
61
|
-
|
|
62
|
-
|
|
71
|
+
const approveAuthorizeAccessOcpLocator: By = By.css('input[name="approve"]');
|
|
72
|
+
await this.driverHelper.waitAndClick(approveAuthorizeAccessOcpLocator);
|
|
73
|
+
}
|
|
63
74
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
75
|
+
async enterUserNameOpenShift(userName: string): Promise<void> {
|
|
76
|
+
Logger.debug(`"${userName}"`);
|
|
67
77
|
|
|
68
|
-
|
|
69
|
-
|
|
78
|
+
await this.driverHelper.enterValue(By.id('inputUsername'), userName);
|
|
79
|
+
}
|
|
70
80
|
|
|
71
|
-
|
|
72
|
-
|
|
81
|
+
async enterPasswordOpenShift(passw: string): Promise<void> {
|
|
82
|
+
Logger.debug();
|
|
73
83
|
|
|
74
|
-
|
|
75
|
-
|
|
84
|
+
await this.driverHelper.enterValue(By.id('inputPassword'), passw);
|
|
85
|
+
}
|
|
76
86
|
|
|
77
|
-
|
|
78
|
-
|
|
87
|
+
async clickOnLoginButton(): Promise<void> {
|
|
88
|
+
Logger.debug();
|
|
79
89
|
|
|
80
|
-
|
|
81
|
-
|
|
90
|
+
const loginButtonLocator: By = By.css('button[type=submit]');
|
|
91
|
+
await this.driverHelper.waitAndClick(loginButtonLocator);
|
|
92
|
+
}
|
|
82
93
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
94
|
+
async waitDisappearanceOpenShiftLoginWelcomePage(): Promise<void> {
|
|
95
|
+
Logger.debug();
|
|
86
96
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
await this.driverHelper.waitDisappearance(By.xpath(OcpLoginPage.LOGIN_PAGE_OPENSHIFT_XPATH));
|
|
91
|
-
}
|
|
97
|
+
await this.driverHelper.waitDisappearance(By.xpath(OcpLoginPage.LOGIN_PAGE_OPENSHIFT_XPATH));
|
|
98
|
+
}
|
|
92
99
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2019 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
|
|
@@ -12,7 +12,7 @@ import { inject, injectable } from 'inversify';
|
|
|
12
12
|
import { RedHatLoginPage } from './RedHatLoginPage';
|
|
13
13
|
import { CLASSES } from '../../../configs/inversify.types';
|
|
14
14
|
import { By } from 'selenium-webdriver';
|
|
15
|
-
import {
|
|
15
|
+
import { TIMEOUT_CONSTANTS } from '../../../constants/TIMEOUT_CONSTANTS';
|
|
16
16
|
import { ICheLoginPage } from '../interfaces/ICheLoginPage';
|
|
17
17
|
import { OcpLoginPage } from './OcpLoginPage';
|
|
18
18
|
import { DriverHelper } from '../../../utils/DriverHelper';
|
|
@@ -20,30 +20,35 @@ import { Logger } from '../../../utils/Logger';
|
|
|
20
20
|
|
|
21
21
|
@injectable()
|
|
22
22
|
export class OcpRedHatLoginPage implements ICheLoginPage {
|
|
23
|
+
private readonly OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR: string = '//div[@class="panel-login"]';
|
|
24
|
+
private readonly OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR: string = `${this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR}/div[contains(@class, 'panel-content')]/form/button`;
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
constructor(
|
|
27
|
+
@inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage,
|
|
28
|
+
@inject(CLASSES.RedHatLoginPage)
|
|
29
|
+
private readonly redHatLogin: RedHatLoginPage,
|
|
30
|
+
@inject(CLASSES.DriverHelper)
|
|
31
|
+
private readonly driverHelper: DriverHelper
|
|
32
|
+
) {}
|
|
26
33
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
@inject(CLASSES.RedHatLoginPage) private readonly redHatLogin: RedHatLoginPage,
|
|
30
|
-
@inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper) { }
|
|
34
|
+
async login(): Promise<void> {
|
|
35
|
+
Logger.debug();
|
|
31
36
|
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
Logger.debug('wait for LogInWithOpenShift page and click button');
|
|
38
|
+
await this.driverHelper.waitPresence(
|
|
39
|
+
By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR),
|
|
40
|
+
TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT
|
|
41
|
+
);
|
|
42
|
+
await this.driverHelper.waitAndClick(By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR));
|
|
34
43
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
await this.driverHelper.waitAndClick(By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR));
|
|
44
|
+
await this.ocpLogin.isIdentityProviderLinkVisible();
|
|
45
|
+
await this.ocpLogin.clickOnLoginProviderTitle();
|
|
38
46
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
await this.redHatLogin.clickOnLoginButton();
|
|
47
|
-
await this.redHatLogin.waitDisappearanceRedHatLoginWelcomePage();
|
|
48
|
-
}
|
|
47
|
+
await this.redHatLogin.waitRedHatLoginWelcomePage();
|
|
48
|
+
await this.redHatLogin.enterUserNameRedHat();
|
|
49
|
+
await this.redHatLogin.clickNextButton();
|
|
50
|
+
await this.redHatLogin.enterPasswordRedHat();
|
|
51
|
+
await this.redHatLogin.clickOnLoginButton();
|
|
52
|
+
await this.redHatLogin.waitDisappearanceRedHatLoginWelcomePage();
|
|
53
|
+
}
|
|
49
54
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2019-2023 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
|
|
@@ -13,26 +13,23 @@ import { inject, injectable } from 'inversify';
|
|
|
13
13
|
import { OcpLoginPage } from './OcpLoginPage';
|
|
14
14
|
import { CLASSES } from '../../../configs/inversify.types';
|
|
15
15
|
import { Logger } from '../../../utils/Logger';
|
|
16
|
-
import {
|
|
16
|
+
import { OAUTH_CONSTANTS } from '../../../constants/OAUTH_CONSTANTS';
|
|
17
17
|
|
|
18
18
|
@injectable()
|
|
19
19
|
export class OcpUserLoginPage implements IOcpLoginPage {
|
|
20
|
+
constructor(@inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage) {}
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
async login(): Promise<void> {
|
|
23
|
+
Logger.debug();
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (OAuthConstants.TS_OCP_LOGIN_PAGE_PROVIDER_TITLE !== '') {
|
|
28
|
-
await this.ocpLogin.clickOnLoginProviderTitle();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
await this.ocpLogin.waitOpenShiftLoginWelcomePage();
|
|
32
|
-
await this.ocpLogin.enterUserNameOpenShift(OAuthConstants.TS_SELENIUM_OCP_USERNAME);
|
|
33
|
-
await this.ocpLogin.enterPasswordOpenShift(OAuthConstants.TS_SELENIUM_OCP_PASSWORD);
|
|
34
|
-
await this.ocpLogin.clickOnLoginButton();
|
|
35
|
-
await this.ocpLogin.waitDisappearanceOpenShiftLoginWelcomePage();
|
|
36
|
-
}
|
|
25
|
+
if (OAUTH_CONSTANTS.TS_OCP_LOGIN_PAGE_PROVIDER_TITLE !== '') {
|
|
26
|
+
await this.ocpLogin.clickOnLoginProviderTitle();
|
|
27
|
+
}
|
|
37
28
|
|
|
29
|
+
await this.ocpLogin.waitOpenShiftLoginWelcomePage();
|
|
30
|
+
await this.ocpLogin.enterUserNameOpenShift(OAUTH_CONSTANTS.TS_SELENIUM_OCP_USERNAME);
|
|
31
|
+
await this.ocpLogin.enterPasswordOpenShift(OAUTH_CONSTANTS.TS_SELENIUM_OCP_PASSWORD);
|
|
32
|
+
await this.ocpLogin.clickOnLoginButton();
|
|
33
|
+
await this.ocpLogin.waitDisappearanceOpenShiftLoginWelcomePage();
|
|
34
|
+
}
|
|
38
35
|
}
|