@eclipse-che/che-e2e 7.73.0 → 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 +14 -10
- 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} +13 -13
- package/dist/constants/API_TEST_CONSTANTS.js.map +1 -0
- package/dist/constants/{BaseTestConstants.js → BASE_TEST_CONSTANTS.js} +17 -16
- package/dist/constants/BASE_TEST_CONSTANTS.js.map +1 -0
- package/dist/constants/{ChromeDriverConstants.js → CHROME_DRIVER_CONSTANTS.js} +14 -14
- package/dist/constants/CHROME_DRIVER_CONSTANTS.js.map +1 -0
- package/dist/constants/{FactoryTestConstants.js → FACTORY_TEST_CONSTANTS.js} +15 -14
- package/dist/constants/FACTORY_TEST_CONSTANTS.js.map +1 -0
- package/dist/constants/{MonacoConstants.js → MONACO_CONSTANTS.js} +8 -8
- package/dist/constants/MONACO_CONSTANTS.js.map +1 -0
- package/dist/constants/{OAuthConstants.js → OAUTH_CONSTANTS.js} +15 -15
- 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} +13 -13
- 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 +18 -18
- package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -1
- package/dist/pageobjects/dashboard/Dashboard.js +27 -27
- package/dist/pageobjects/dashboard/Dashboard.js.map +1 -1
- package/dist/pageobjects/dashboard/Workspaces.js +42 -42
- package/dist/pageobjects/dashboard/Workspaces.js.map +1 -1
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +44 -33
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +1 -1
- package/dist/pageobjects/git-providers/OauthPage.js +37 -35
- package/dist/pageobjects/git-providers/OauthPage.js.map +1 -1
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js +10 -10
- 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 +10 -10
- package/dist/pageobjects/login/kubernetes/DexLoginPage.js.map +1 -1
- package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js +6 -6
- package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpLoginPage.js +23 -23
- package/dist/pageobjects/login/openshift/OcpLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js +7 -7
- package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpUserLoginPage.js +7 -7
- package/dist/pageobjects/login/openshift/OcpUserLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/RedHatLoginPage.js +11 -11
- package/dist/pageobjects/login/openshift/RedHatLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js +10 -10
- package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js.map +1 -1
- package/dist/pageobjects/openshift/OcpApplicationPage.js +7 -7
- package/dist/pageobjects/openshift/OcpApplicationPage.js.map +1 -1
- package/dist/pageobjects/openshift/OcpImportFromGitPage.js +9 -9
- package/dist/pageobjects/openshift/OcpImportFromGitPage.js.map +1 -1
- package/dist/pageobjects/openshift/OcpMainPage.js +15 -15
- package/dist/pageobjects/openshift/OcpMainPage.js.map +1 -1
- package/dist/specs/MochaHooks.js +27 -24
- package/dist/specs/MochaHooks.js.map +1 -1
- package/dist/specs/SmokeTest.spec.js +17 -13
- 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 +31 -18
- package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js.map +1 -1
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js +18 -12
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js.map +1 -1
- package/dist/specs/api/PodOverridesAPI.spec.js +12 -2
- package/dist/specs/api/PodOverridesAPI.spec.js.map +1 -1
- package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js +12 -8
- package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js.map +1 -1
- package/dist/specs/dashboard-samples/Quarkus.spec.js +13 -9
- package/dist/specs/dashboard-samples/Quarkus.spec.js.map +1 -1
- package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js +47 -43
- package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js.map +1 -1
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js +17 -10
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js.map +1 -1
- package/dist/specs/factory/Factory.spec.js +28 -26
- package/dist/specs/factory/Factory.spec.js.map +1 -1
- package/dist/specs/factory/NoSetupRepoFactory.spec.js +41 -36
- package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +1 -1
- package/dist/specs/factory/RefusedOAuthFactory.spec.js +37 -35
- package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +1 -1
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +18 -5
- 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 +9 -7
- package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
- package/dist/tests-library/WorkspaceHandlingTests.js +61 -78
- package/dist/tests-library/WorkspaceHandlingTests.js.map +1 -1
- package/dist/utils/BrowserTabsUtil.js +29 -24
- 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 +19 -10
- package/dist/utils/DevWorkspaceConfigurationHelper.js.map +1 -1
- package/dist/utils/DevfilesRegistryHelper.js +25 -19
- package/dist/utils/DevfilesRegistryHelper.js.map +1 -1
- package/dist/utils/DriverHelper.js +126 -128
- package/dist/utils/DriverHelper.js.map +1 -1
- package/dist/utils/KubernetesCommandLineToolsExecutor.js +53 -46
- package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +1 -1
- package/dist/utils/Logger.js +62 -39
- 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 +17 -9
- package/dist/utils/StringUtil.js.map +1 -1
- package/dist/utils/request-handlers/CheApiRequestHandler.js +36 -34
- 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 +5 -5
- package/dist/utils/workspace/ApiUrlResolver.js.map +1 -1
- package/dist/utils/workspace/ITestWorkspaceUtil.js +2 -2
- package/dist/utils/workspace/TestWorkspaceUtil.js +36 -30
- 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 +45 -51
- package/driver/IDriver.ts +3 -3
- package/index.ts +9 -9
- package/package.json +59 -49
- package/pageobjects/dashboard/CreateWorkspace.ts +65 -56
- package/pageobjects/dashboard/Dashboard.ts +101 -100
- package/pageobjects/dashboard/Workspaces.ts +197 -166
- package/pageobjects/dashboard/workspace-details/WorkspaceDetails.ts +151 -127
- 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 +32 -31
- package/pageobjects/login/kubernetes/KubernetesLoginPage.ts +16 -15
- package/pageobjects/login/openshift/OcpLoginPage.ts +62 -55
- package/pageobjects/login/openshift/OcpRedHatLoginPage.ts +30 -25
- package/pageobjects/login/openshift/OcpUserLoginPage.ts +16 -19
- package/pageobjects/login/openshift/RedHatLoginPage.ts +49 -44
- package/pageobjects/login/openshift/RegularUserOcpCheLoginPage.ts +39 -35
- package/pageobjects/openshift/OcpApplicationPage.ts +21 -20
- package/pageobjects/openshift/OcpImportFromGitPage.ts +70 -68
- package/pageobjects/openshift/OcpMainPage.ts +69 -68
- package/resources/pod-overrides-airgap.yaml +37 -0
- package/specs/MochaHooks.ts +59 -50
- package/specs/SmokeTest.spec.ts +43 -36
- package/specs/api/ContainerOverridesAPI.spec.ts +33 -26
- package/specs/api/DevfileAcceptanceTestAPI.spec.ts +107 -94
- package/specs/api/EmptyWorkspaceAPI.spec.ts +62 -57
- package/specs/api/PodOverridesAPI.spec.ts +42 -32
- package/specs/dashboard-samples/EmptyWorkspace.spec.ts +31 -27
- package/specs/dashboard-samples/Quarkus.spec.ts +34 -30
- package/specs/dashboard-samples/RecommendedExtensions.spec.ts +192 -170
- package/specs/devconsole-intergration/DevConsoleIntegration.spec.ts +62 -55
- package/specs/factory/Factory.spec.ts +178 -166
- package/specs/factory/NoSetupRepoFactory.spec.ts +227 -210
- package/specs/factory/RefusedOAuthFactory.spec.ts +219 -203
- package/specs/miscellaneous/PredefinedNamespace.spec.ts +64 -50
- package/tests-library/LoginTests.ts +34 -32
- package/tests-library/ProjectAndFileTests.ts +21 -18
- package/tests-library/WorkspaceHandlingTests.ts +98 -108
- package/tsconfig.json +15 -15
- package/utils/BrowserTabsUtil.ts +104 -98
- package/utils/CheReporter.ts +142 -148
- package/utils/DevWorkspaceConfigurationHelper.ts +70 -61
- package/utils/DevfilesRegistryHelper.ts +67 -58
- package/utils/DriverHelper.ts +726 -701
- package/utils/KubernetesCommandLineToolsExecutor.ts +196 -172
- package/utils/Logger.ts +104 -75
- package/utils/ScreenCatcher.ts +59 -48
- package/utils/ShellExecutor.ts +19 -11
- package/utils/StringUtil.ts +40 -32
- package/utils/request-handlers/CheApiRequestHandler.ts +92 -87
- 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 +153 -142
- package/utils/workspace/WorkspaceStatus.ts +5 -5
- package/constants/APITestConstants.ts +0 -56
- package/constants/BaseTestConstants.ts +0 -65
- 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-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
|
|
@@ -8,26 +8,27 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
**********************************************************************/
|
|
10
10
|
import 'reflect-metadata';
|
|
11
|
-
import {
|
|
11
|
+
import { inject, injectable } from 'inversify';
|
|
12
12
|
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
|
|
@@ -8,85 +8,92 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
**********************************************************************/
|
|
10
10
|
import 'reflect-metadata';
|
|
11
|
-
import {
|
|
11
|
+
import { inject, injectable } from 'inversify';
|
|
12
12
|
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
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
**********************************************************************/
|
|
10
10
|
import 'reflect-metadata';
|
|
11
|
-
import {
|
|
11
|
+
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
|
|
@@ -9,30 +9,27 @@
|
|
|
9
9
|
**********************************************************************/
|
|
10
10
|
import 'reflect-metadata';
|
|
11
11
|
import { IOcpLoginPage } from '../interfaces/IOcpLoginPage';
|
|
12
|
-
import {
|
|
12
|
+
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
|
}
|
|
@@ -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
|
|
@@ -8,53 +8,58 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
**********************************************************************/
|
|
10
10
|
import 'reflect-metadata';
|
|
11
|
-
import {
|
|
11
|
+
import { inject, injectable } from 'inversify';
|
|
12
12
|
import { By } from 'selenium-webdriver';
|
|
13
13
|
import { CLASSES } from '../../../configs/inversify.types';
|
|
14
14
|
import { DriverHelper } from '../../../utils/DriverHelper';
|
|
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 RedHatLoginPage {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
20
|
+
private readonly USERNAME_INPUT_ID: string = 'username-verification';
|
|
21
|
+
private readonly PASSWORD_INPUT_ID: string = 'password';
|
|
22
|
+
private readonly NEXT_BUTTON_ID: string = 'login-show-step2';
|
|
23
|
+
private readonly LOGIN_BUTTON_ID: string = 'rh-password-verification-submit-button';
|
|
24
|
+
|
|
25
|
+
constructor(
|
|
26
|
+
@inject(CLASSES.DriverHelper)
|
|
27
|
+
private readonly driverHelper: DriverHelper
|
|
28
|
+
) {}
|
|
29
|
+
|
|
30
|
+
async waitRedHatLoginWelcomePage(): Promise<void> {
|
|
31
|
+
Logger.debug();
|
|
32
|
+
await this.driverHelper.waitVisibility(By.id(this.USERNAME_INPUT_ID));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async enterPasswordRedHat(): Promise<void> {
|
|
36
|
+
Logger.debug();
|
|
37
|
+
const passwordFieldLocator: By = By.id(this.PASSWORD_INPUT_ID);
|
|
38
|
+
await this.driverHelper.waitVisibility(passwordFieldLocator, 3000);
|
|
39
|
+
await this.driverHelper.enterValue(passwordFieldLocator, OAUTH_CONSTANTS.TS_SELENIUM_OCP_PASSWORD);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async clickOnLoginButton(): Promise<void> {
|
|
43
|
+
Logger.debug();
|
|
44
|
+
const loginButtonLocator: By = By.id(this.LOGIN_BUTTON_ID);
|
|
45
|
+
await this.driverHelper.waitAndClick(loginButtonLocator);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async waitDisappearanceRedHatLoginWelcomePage(): Promise<void> {
|
|
49
|
+
Logger.debug();
|
|
50
|
+
await this.driverHelper.waitDisappearance(By.id(this.LOGIN_BUTTON_ID));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async enterUserNameRedHat(): Promise<void> {
|
|
54
|
+
Logger.debug();
|
|
55
|
+
const usernameFieldLocator: By = By.id(this.USERNAME_INPUT_ID);
|
|
56
|
+
await this.driverHelper.waitVisibility(usernameFieldLocator, 20000);
|
|
57
|
+
await this.driverHelper.enterValue(usernameFieldLocator, OAUTH_CONSTANTS.TS_SELENIUM_OCP_USERNAME);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async clickNextButton(): Promise<void> {
|
|
61
|
+
Logger.debug();
|
|
62
|
+
const nextButtonLocator: By = By.id(this.NEXT_BUTTON_ID);
|
|
63
|
+
await this.driverHelper.waitAndClick(nextButtonLocator);
|
|
64
|
+
}
|
|
60
65
|
}
|
|
@@ -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
|
|
@@ -10,44 +10,48 @@
|
|
|
10
10
|
import 'reflect-metadata';
|
|
11
11
|
import { ICheLoginPage } from '../interfaces/ICheLoginPage';
|
|
12
12
|
import { OcpLoginPage } from './OcpLoginPage';
|
|
13
|
-
import {
|
|
13
|
+
import { inject, injectable } from 'inversify';
|
|
14
14
|
import { CLASSES } from '../../../configs/inversify.types';
|
|
15
15
|
import { Logger } from '../../../utils/Logger';
|
|
16
|
-
import {
|
|
16
|
+
import { TIMEOUT_CONSTANTS } from '../../../constants/TIMEOUT_CONSTANTS';
|
|
17
17
|
import { By } from 'selenium-webdriver';
|
|
18
18
|
import { DriverHelper } from '../../../utils/DriverHelper';
|
|
19
|
-
import {
|
|
19
|
+
import { OAUTH_CONSTANTS } from '../../../constants/OAUTH_CONSTANTS';
|
|
20
20
|
|
|
21
21
|
@injectable()
|
|
22
22
|
export class RegularUserOcpCheLoginPage implements ICheLoginPage {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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`;
|
|
25
|
+
|
|
26
|
+
constructor(
|
|
27
|
+
@inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage,
|
|
28
|
+
@inject(CLASSES.DriverHelper)
|
|
29
|
+
private readonly driverHelper: DriverHelper
|
|
30
|
+
) {}
|
|
31
|
+
|
|
32
|
+
async login(): Promise<void> {
|
|
33
|
+
Logger.debug();
|
|
34
|
+
|
|
35
|
+
Logger.debug('wait for LogInWithOpenShift page and click button');
|
|
36
|
+
await this.driverHelper.waitPresence(
|
|
37
|
+
By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR),
|
|
38
|
+
TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT
|
|
39
|
+
);
|
|
40
|
+
await this.driverHelper.waitAndClick(By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR));
|
|
41
|
+
|
|
42
|
+
if (await this.ocpLogin.isIdentityProviderLinkVisible()) {
|
|
43
|
+
await this.ocpLogin.clickOnLoginProviderTitle();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
await this.ocpLogin.waitOpenShiftLoginWelcomePage();
|
|
47
|
+
await this.ocpLogin.enterUserNameOpenShift(OAUTH_CONSTANTS.TS_SELENIUM_OCP_USERNAME);
|
|
48
|
+
await this.ocpLogin.enterPasswordOpenShift(OAUTH_CONSTANTS.TS_SELENIUM_OCP_PASSWORD);
|
|
49
|
+
await this.ocpLogin.clickOnLoginButton();
|
|
50
|
+
await this.ocpLogin.waitDisappearanceOpenShiftLoginWelcomePage();
|
|
51
|
+
|
|
52
|
+
if (await this.ocpLogin.isAuthorizeOpenShiftIdentityProviderPageVisible()) {
|
|
53
|
+
await this.ocpLogin.waitAuthorizeOpenShiftIdentityProviderPage();
|
|
54
|
+
await this.ocpLogin.clickOnApproveAuthorizeAccessButton();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
53
57
|
}
|
|
@@ -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,30 +13,31 @@ 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 {
|
|
16
|
+
import { TIMEOUT_CONSTANTS } from '../../constants/TIMEOUT_CONSTANTS';
|
|
17
17
|
import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
|
|
18
18
|
|
|
19
19
|
@injectable()
|
|
20
20
|
export class OcpApplicationPage {
|
|
21
|
+
private static readonly APPLICATION_ICON_LOCATOR: By = By.xpath('//*[@data-test-id="base-node-handler"]');
|
|
22
|
+
private static readonly EDIT_SOURCE_CODE_ICON_LOCATOR: By = By.xpath('//*[@aria-label="Edit source code"]');
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
constructor(
|
|
25
|
+
@inject(CLASSES.DriverHelper)
|
|
26
|
+
private readonly driverHelper: DriverHelper,
|
|
27
|
+
@inject(CLASSES.BrowserTabsUtil)
|
|
28
|
+
private readonly browserTabsUtil: BrowserTabsUtil
|
|
29
|
+
) {}
|
|
24
30
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
@inject(CLASSES.BrowserTabsUtil) private readonly browserTabsUtil: BrowserTabsUtil) {
|
|
28
|
-
}
|
|
31
|
+
async waitApplicationIcon(): Promise<void> {
|
|
32
|
+
Logger.debug();
|
|
29
33
|
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
await this.driverHelper.waitPresence(OcpApplicationPage.APPLICATION_ICON_LOCATOR, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
35
|
+
}
|
|
32
36
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
await this.driverHelper.waitAndClick(OcpApplicationPage.EDIT_SOURCE_CODE_ICON_LOCATOR);
|
|
40
|
-
await this.browserTabsUtil.waitAndSwitchToAnotherWindow(parentGUID, TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
41
|
-
}
|
|
37
|
+
async waitAndOpenEditSourceCodeIcon(): Promise<void> {
|
|
38
|
+
Logger.debug();
|
|
39
|
+
const parentGUID: string = await this.browserTabsUtil.getCurrentWindowHandle();
|
|
40
|
+
await this.driverHelper.waitAndClick(OcpApplicationPage.EDIT_SOURCE_CODE_ICON_LOCATOR);
|
|
41
|
+
await this.browserTabsUtil.waitAndSwitchToAnotherWindow(parentGUID, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
42
|
+
}
|
|
42
43
|
}
|