@eclipse-che/che-e2e 7.74.0-dev-1d09cb7 → 7.74.0-dev-aace77a
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 +197 -0
- package/.prettierignore +10 -0
- package/.prettierrc.json +10 -0
- package/CODE_STYLE.md +144 -0
- package/README.md +47 -47
- package/configs/inversify.config.ts +39 -14
- package/configs/inversify.types.ts +44 -30
- 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 +42 -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 +36 -9
- package/dist/configs/inversify.config.js.map +1 -1
- package/dist/configs/inversify.types.js +19 -5
- 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/CHROME_DRIVER_CONSTANTS.js +36 -0
- 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 -22
- package/dist/driver/ChromeDriver.js.map +1 -1
- package/dist/index.js +18 -12
- package/dist/index.js.map +1 -1
- package/dist/pageobjects/dashboard/CreateWorkspace.js +15 -15
- package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -1
- package/dist/pageobjects/dashboard/Dashboard.js +20 -21
- package/dist/pageobjects/dashboard/Dashboard.js.map +1 -1
- package/dist/pageobjects/dashboard/Workspaces.js +55 -60
- package/dist/pageobjects/dashboard/Workspaces.js.map +1 -1
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +58 -48
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +1 -1
- package/dist/pageobjects/git-providers/OauthPage.js +22 -20
- package/dist/pageobjects/git-providers/OauthPage.js.map +1 -1
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js +26 -12
- 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 +14 -14
- package/dist/pageobjects/login/kubernetes/DexLoginPage.js.map +1 -1
- package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js +7 -7
- package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpLoginPage.js +24 -28
- package/dist/pageobjects/login/openshift/OcpLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js +13 -16
- package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpUserLoginPage.js +9 -9
- package/dist/pageobjects/login/openshift/OcpUserLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/RedHatLoginPage.js +19 -23
- package/dist/pageobjects/login/openshift/RedHatLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js +20 -19
- package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js.map +1 -1
- package/dist/pageobjects/openshift/OcpApplicationPage.js +11 -11
- package/dist/pageobjects/openshift/OcpApplicationPage.js.map +1 -1
- package/dist/pageobjects/openshift/OcpImportFromGitPage.js +24 -24
- package/dist/pageobjects/openshift/OcpImportFromGitPage.js.map +1 -1
- package/dist/pageobjects/openshift/OcpMainPage.js +30 -30
- package/dist/pageobjects/openshift/OcpMainPage.js.map +1 -1
- package/dist/specs/MochaHooks.js +33 -27
- package/dist/specs/MochaHooks.js.map +1 -1
- package/dist/specs/SmokeTest.spec.js +17 -17
- package/dist/specs/SmokeTest.spec.js.map +1 -1
- package/dist/specs/api/ContainerOverridesAPI.spec.js +8 -6
- package/dist/specs/api/ContainerOverridesAPI.spec.js.map +1 -1
- package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js +27 -24
- package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js.map +1 -1
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js +17 -17
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js.map +1 -1
- package/dist/specs/api/PodOverridesAPI.spec.js +10 -8
- package/dist/specs/api/PodOverridesAPI.spec.js.map +1 -1
- package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js +10 -10
- package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js.map +1 -1
- package/dist/specs/dashboard-samples/Quarkus.spec.js +13 -13
- package/dist/specs/dashboard-samples/Quarkus.spec.js.map +1 -1
- package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js +52 -52
- package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js.map +1 -1
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js +23 -19
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js.map +1 -1
- package/dist/specs/factory/Factory.spec.js +38 -41
- package/dist/specs/factory/Factory.spec.js.map +1 -1
- package/dist/specs/factory/NoSetupRepoFactory.spec.js +52 -50
- package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +1 -1
- package/dist/specs/factory/RefusedOAuthFactory.spec.js +49 -51
- package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +1 -1
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +45 -42
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js.map +1 -1
- package/dist/tests-library/LoginTests.js +13 -13
- 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 +22 -19
- package/dist/tests-library/WorkspaceHandlingTests.js.map +1 -1
- package/dist/utils/BrowserTabsUtil.js +21 -21
- package/dist/utils/BrowserTabsUtil.js.map +1 -1
- package/dist/utils/CheReporter.js +91 -65
- package/dist/utils/CheReporter.js.map +1 -1
- package/dist/utils/DevWorkspaceConfigurationHelper.js +34 -15
- package/dist/utils/DevWorkspaceConfigurationHelper.js.map +1 -1
- package/dist/utils/DevfilesRegistryHelper.js +34 -18
- package/dist/utils/DevfilesRegistryHelper.js.map +1 -1
- package/dist/utils/DriverHelper.js +73 -68
- package/dist/utils/DriverHelper.js.map +1 -1
- package/dist/utils/IContextParams.js +12 -0
- package/dist/utils/IContextParams.js.map +1 -0
- package/dist/utils/IKubernetesCommandLineToolsExecutor.js +3 -0
- package/dist/utils/IKubernetesCommandLineToolsExecutor.js.map +1 -0
- package/dist/utils/KubernetesCommandLineToolsExecutor.js +146 -107
- 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 +26 -16
- package/dist/utils/ScreenCatcher.js.map +1 -1
- package/dist/utils/ShellExecutor.js +29 -9
- package/dist/utils/ShellExecutor.js.map +1 -1
- package/dist/utils/StringUtil.js +19 -9
- package/dist/utils/StringUtil.js.map +1 -1
- package/dist/utils/request-handlers/CheApiRequestHandler.js +29 -29
- package/dist/utils/request-handlers/CheApiRequestHandler.js.map +1 -1
- package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js +12 -8
- 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 +25 -23
- 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 -58
- package/driver/IDriver.ts +3 -3
- package/index.ts +11 -9
- package/package.json +59 -49
- package/pageobjects/dashboard/CreateWorkspace.ts +65 -55
- package/pageobjects/dashboard/Dashboard.ts +100 -100
- package/pageobjects/dashboard/Workspaces.ts +210 -186
- package/pageobjects/dashboard/workspace-details/WorkspaceDetails.ts +153 -131
- package/pageobjects/git-providers/OauthPage.ts +177 -166
- package/pageobjects/ide/CheCodeLocatorLoader.ts +51 -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 +51 -56
- package/pageobjects/login/openshift/OcpRedHatLoginPage.ts +27 -27
- package/pageobjects/login/openshift/OcpUserLoginPage.ts +15 -18
- package/pageobjects/login/openshift/RedHatLoginPage.ts +49 -46
- package/pageobjects/login/openshift/RegularUserOcpCheLoginPage.ts +43 -34
- package/pageobjects/openshift/OcpApplicationPage.ts +21 -19
- package/pageobjects/openshift/OcpImportFromGitPage.ts +68 -68
- package/pageobjects/openshift/OcpMainPage.ts +69 -69
- package/specs/MochaHooks.ts +59 -52
- package/specs/SmokeTest.spec.ts +47 -45
- package/specs/api/ContainerOverridesAPI.spec.ts +39 -26
- package/specs/api/DevfileAcceptanceTestAPI.spec.ts +110 -97
- package/specs/api/EmptyWorkspaceAPI.spec.ts +67 -58
- package/specs/api/PodOverridesAPI.spec.ts +48 -34
- package/specs/dashboard-samples/EmptyWorkspace.spec.ts +36 -36
- package/specs/dashboard-samples/Quarkus.spec.ts +41 -40
- package/specs/dashboard-samples/RecommendedExtensions.spec.ts +202 -183
- package/specs/devconsole-intergration/DevConsoleIntegration.spec.ts +85 -75
- package/specs/factory/Factory.spec.ts +184 -178
- package/specs/factory/NoSetupRepoFactory.spec.ts +233 -219
- package/specs/factory/RefusedOAuthFactory.spec.ts +223 -211
- package/specs/miscellaneous/PredefinedNamespace.spec.ts +70 -64
- 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 +78 -74
- package/utils/CheReporter.ts +159 -157
- package/utils/DevWorkspaceConfigurationHelper.ts +63 -69
- package/utils/DevfilesRegistryHelper.ts +71 -57
- package/utils/DriverHelper.ts +728 -700
- package/utils/IContextParams.ts +26 -0
- package/utils/IKubernetesCommandLineToolsExecutor.ts +42 -0
- package/utils/KubernetesCommandLineToolsExecutor.ts +231 -183
- package/utils/Logger.ts +102 -125
- package/utils/ScreenCatcher.ts +57 -46
- package/utils/ShellExecutor.ts +23 -12
- package/utils/StringUtil.ts +49 -36
- 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 +0 -44
- 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
|
|
@@ -18,70 +18,70 @@ import { e2eContainer } from '../../configs/inversify.config';
|
|
|
18
18
|
|
|
19
19
|
@injectable()
|
|
20
20
|
export class OcpImportFromGitPage {
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
21
|
+
private static readonly GIT_URL_INPUT: By = By.id('form-input-git-url-field');
|
|
22
|
+
private static readonly SHOW_ADVANCED_GIT_OPTIONS_LINK: By = By.xpath('//*[text()="Show advanced Git options"]//ancestor::button');
|
|
23
|
+
private static readonly HIDE_ADVANCED_GIT_OPTIONS: By = By.xpath('//*[text()="Hide advanced Git options"]');
|
|
24
|
+
private static readonly GIT_REFERENCE_INPUT: By = By.id('form-input-git-ref-field');
|
|
25
|
+
private static readonly EDIT_IMPORT_STRATEGY_LINK: By = By.xpath('//*[text()="Edit Import Strategy"]//ancestor::button');
|
|
26
|
+
private static readonly BUILDER_IMAGE_STRATEGY_ITEM: By = By.xpath('//*[text()="Builder Image"]//parent::div//parent::div');
|
|
27
|
+
private static readonly ADD_LABEL_LINK: By = By.xpath('//button[text()="Labels"]');
|
|
28
|
+
private static readonly ADD_LABEL_INPUT: By = By.id('form-selector-labels-field');
|
|
29
|
+
private static readonly SUBMIT_BUTTON: By = By.xpath('//*[@data-test-id="submit-button"]');
|
|
30
|
+
|
|
31
|
+
constructor(
|
|
32
|
+
@inject(CLASSES.DriverHelper)
|
|
33
|
+
private readonly driverHelper: DriverHelper
|
|
34
|
+
) {}
|
|
35
|
+
|
|
36
|
+
async enterGitRepoUrl(gitRepoUrl: string): Promise<void> {
|
|
37
|
+
Logger.debug();
|
|
38
|
+
|
|
39
|
+
await this.driverHelper.enterValue(OcpImportFromGitPage.GIT_URL_INPUT, gitRepoUrl);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async clickOnAdvancedOptionsButton(): Promise<void> {
|
|
43
|
+
Logger.debug();
|
|
44
|
+
|
|
45
|
+
if (!(await this.driverHelper.isVisible(OcpImportFromGitPage.HIDE_ADVANCED_GIT_OPTIONS))) {
|
|
46
|
+
await this.driverHelper.waitAndClick(OcpImportFromGitPage.SHOW_ADVANCED_GIT_OPTIONS_LINK);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async enterGitReference(gitReference: string): Promise<void> {
|
|
51
|
+
Logger.debug(`"${gitReference}"`);
|
|
52
|
+
|
|
53
|
+
await this.driverHelper.enterValue(OcpImportFromGitPage.GIT_REFERENCE_INPUT, gitReference);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async selectBuilderImageImportStrategy(): Promise<void> {
|
|
57
|
+
Logger.debug();
|
|
58
|
+
|
|
59
|
+
await this.driverHelper.scrollToAndClick(OcpImportFromGitPage.EDIT_IMPORT_STRATEGY_LINK);
|
|
60
|
+
await this.driverHelper.scrollToAndClick(OcpImportFromGitPage.BUILDER_IMAGE_STRATEGY_ITEM);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async addLabel(label: string): Promise<void> {
|
|
64
|
+
Logger.debug(`"${label}"`);
|
|
65
|
+
|
|
66
|
+
await this.driverHelper.scrollToAndClick(OcpImportFromGitPage.ADD_LABEL_LINK);
|
|
67
|
+
await this.driverHelper.scrollToAndEnterValue(OcpImportFromGitPage.ADD_LABEL_INPUT, label);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async submitConfiguration(): Promise<OcpApplicationPage> {
|
|
71
|
+
Logger.debug();
|
|
72
|
+
|
|
73
|
+
await this.driverHelper.waitAndClick(OcpImportFromGitPage.SUBMIT_BUTTON);
|
|
74
|
+
return e2eContainer.get(CLASSES.OcpApplicationPage);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async fitAndSubmitConfiguration(gitRepoUrl: string, gitReference: string, label: string): Promise<OcpApplicationPage> {
|
|
78
|
+
Logger.debug();
|
|
79
|
+
|
|
80
|
+
await this.enterGitRepoUrl(gitRepoUrl);
|
|
81
|
+
await this.clickOnAdvancedOptionsButton();
|
|
82
|
+
await this.enterGitReference(gitReference);
|
|
83
|
+
await this.selectBuilderImageImportStrategy();
|
|
84
|
+
await this.addLabel(label);
|
|
85
|
+
return await this.submitConfiguration();
|
|
86
|
+
}
|
|
87
87
|
}
|
|
@@ -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,97 +13,97 @@ 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 { OcpImportFromGitPage } from './OcpImportFromGitPage';
|
|
18
18
|
import { e2eContainer } from '../../configs/inversify.config';
|
|
19
19
|
|
|
20
20
|
@injectable()
|
|
21
21
|
export class OcpMainPage {
|
|
22
|
+
private static readonly MAIN_PAGE_HEADER: By = By.id('page-main-header');
|
|
23
|
+
private static readonly SELECT_ROLE_BUTTON: By = By.xpath('//*[@data-test-id="perspective-switcher-toggle"]');
|
|
24
|
+
private static readonly ADD_BUTTON: By = By.xpath('//*[@data-test-id="+Add-header"]');
|
|
25
|
+
private static readonly IMPORT_FROM_GIT_ITEM: By = By.xpath('//*[@data-test="item import-from-git"]');
|
|
26
|
+
private static readonly SELECT_PROJECT_DROPDOWN: By = By.xpath('//div[@class="co-namespace-dropdown"]//button');
|
|
27
|
+
private static readonly PROJECT_FILTER_INPUT: By = By.xpath('//*[@data-test="dropdown-text-filter"]');
|
|
28
|
+
private static readonly SKIP_TOUR_BUTTON: By = By.xpath('//*[text()="Skip tour"]');
|
|
22
29
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
private static readonly SELECT_PROJECT_DROPDOWN_LOCATOR: By = By.xpath('//div[@class="co-namespace-dropdown"]//button');
|
|
28
|
-
private static readonly PROJECT_FILTER_INPUT_LOCATOR: By = By.xpath('//*[@data-test="dropdown-text-filter"]');
|
|
29
|
-
private static readonly SKIP_TOUR_BUTTON_LOCATOR: By = By.xpath('//*[text()="Skip tour"]');
|
|
30
|
+
constructor(
|
|
31
|
+
@inject(CLASSES.DriverHelper)
|
|
32
|
+
private readonly driverHelper: DriverHelper
|
|
33
|
+
) {}
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
35
|
+
async waitOpenMainPage(): Promise<void> {
|
|
36
|
+
Logger.debug();
|
|
34
37
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
+
await this.driverHelper.waitVisibility(OcpMainPage.MAIN_PAGE_HEADER, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
39
|
+
}
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
async clickOnSelectRoleButton(): Promise<void> {
|
|
42
|
+
Logger.debug();
|
|
41
43
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
await this.driverHelper.waitAndClick(OcpMainPage.SELECT_ROLE_BUTTON);
|
|
45
|
+
}
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
async clickAddToProjectButton(): Promise<void> {
|
|
48
|
+
Logger.debug();
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
await this.driverHelper.waitAndClick(OcpMainPage.ADD_BUTTON);
|
|
51
|
+
}
|
|
50
52
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
async selectDeveloperRole(): Promise<void> {
|
|
54
|
+
Logger.debug();
|
|
53
55
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
await this.waitOpenMainPage();
|
|
57
|
+
await this.tryToSkipWebTour();
|
|
58
|
+
await this.clickOnSelectRoleButton();
|
|
59
|
+
await this.selectRole('Developer');
|
|
60
|
+
await this.tryToSkipWebTour();
|
|
61
|
+
}
|
|
56
62
|
|
|
57
|
-
|
|
58
|
-
|
|
63
|
+
async selectImportFromGitMethod(): Promise<OcpImportFromGitPage> {
|
|
64
|
+
Logger.debug();
|
|
59
65
|
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
await this.driverHelper.waitAndClick(OcpMainPage.IMPORT_FROM_GIT_ITEM);
|
|
67
|
+
return e2eContainer.get(CLASSES.OcpImportFromGitPage);
|
|
68
|
+
}
|
|
62
69
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
await this.clickOnSelectRoleButton();
|
|
66
|
-
await this.selectRole('Developer');
|
|
67
|
-
await this.tryToSkipWebTour();
|
|
68
|
-
}
|
|
70
|
+
async openImportFromGitPage(): Promise<OcpImportFromGitPage> {
|
|
71
|
+
Logger.debug();
|
|
69
72
|
|
|
70
|
-
|
|
71
|
-
|
|
73
|
+
await this.clickAddToProjectButton();
|
|
74
|
+
return await this.selectImportFromGitMethod();
|
|
75
|
+
}
|
|
72
76
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
77
|
+
async selectProject(projectName: string): Promise<void> {
|
|
78
|
+
Logger.debug();
|
|
76
79
|
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
await this.driverHelper.waitAndClick(OcpMainPage.SELECT_PROJECT_DROPDOWN);
|
|
81
|
+
await this.driverHelper.enterValue(OcpMainPage.PROJECT_FILTER_INPUT, projectName);
|
|
82
|
+
await this.driverHelper.waitAndClick(this.getProjectDropdownItemLocator(projectName));
|
|
83
|
+
}
|
|
84
|
+
private getRoleLocator(role: string): By {
|
|
85
|
+
return By.xpath(`//a//*[text()="${role}"]`);
|
|
86
|
+
}
|
|
79
87
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
88
|
+
private getProjectDropdownItemLocator(projectName: string): By {
|
|
89
|
+
return By.xpath(`//button//*[text()="${projectName}"]`);
|
|
90
|
+
}
|
|
83
91
|
|
|
84
|
-
|
|
85
|
-
|
|
92
|
+
private async selectRole(role: string): Promise<void> {
|
|
93
|
+
Logger.debug(`selecting role ${role}`);
|
|
86
94
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
await this.driverHelper.waitAndClick(OcpMainPage.getProjectDropdownItemLocator(projectName));
|
|
90
|
-
}
|
|
95
|
+
await this.driverHelper.waitAndClick(this.getRoleLocator(role));
|
|
96
|
+
}
|
|
91
97
|
|
|
92
|
-
|
|
93
|
-
|
|
98
|
+
private async tryToSkipWebTour(): Promise<void> {
|
|
99
|
+
Logger.debug();
|
|
94
100
|
|
|
95
|
-
|
|
96
|
-
|
|
101
|
+
if (await this.driverHelper.isVisible(OcpMainPage.SKIP_TOUR_BUTTON)) {
|
|
102
|
+
await this.driverHelper.waitAndClick(OcpMainPage.SKIP_TOUR_BUTTON);
|
|
97
103
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
Logger.debug(`welcome tour modal dialog was located and skipped`);
|
|
105
|
-
} else {
|
|
106
|
-
Logger.debug(`welcome tour modal dialog was not located`);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
104
|
+
Logger.debug('welcome tour modal dialog was located and skipped');
|
|
105
|
+
} else {
|
|
106
|
+
Logger.debug('welcome tour modal dialog was not located');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
109
|
}
|
package/specs/MochaHooks.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 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
|
|
@@ -11,68 +11,75 @@
|
|
|
11
11
|
import 'reflect-metadata';
|
|
12
12
|
import { CLASSES, TYPES } from '../configs/inversify.types';
|
|
13
13
|
import { CheApiRequestHandler } from '../utils/request-handlers/CheApiRequestHandler';
|
|
14
|
-
import {
|
|
14
|
+
import { TIMEOUT_CONSTANTS } from '../constants/TIMEOUT_CONSTANTS';
|
|
15
15
|
import * as monacoPageObjects from 'monaco-page-objects';
|
|
16
16
|
import * as vscodeExtensionTesterLocators from 'vscode-extension-tester-locators';
|
|
17
17
|
import { e2eContainer } from '../configs/inversify.config';
|
|
18
18
|
import { DriverHelper } from '../utils/DriverHelper';
|
|
19
19
|
import { ITestWorkspaceUtil } from '../utils/workspace/ITestWorkspaceUtil';
|
|
20
20
|
import { Logger } from '../utils/Logger';
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
21
|
+
import { BASE_TEST_CONSTANTS } from '../constants/BASE_TEST_CONSTANTS';
|
|
22
|
+
import { CHROME_DRIVER_CONSTANTS } from '../constants/CHROME_DRIVER_CONSTANTS';
|
|
23
|
+
import { MONACO_CONSTANTS } from '../constants/MONACO_CONSTANTS';
|
|
24
24
|
|
|
25
25
|
const driverHelper: DriverHelper = e2eContainer.get(CLASSES.DriverHelper);
|
|
26
|
-
const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
|
|
27
|
-
|
|
28
26
|
let latestWorkspace: string = '';
|
|
29
27
|
|
|
30
28
|
export function registerRunningWorkspace(workspaceName: string): void {
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
Logger.debug(`with workspaceName:${workspaceName}`);
|
|
30
|
+
latestWorkspace = workspaceName;
|
|
33
31
|
}
|
|
34
32
|
|
|
35
33
|
exports.mochaHooks = {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
34
|
+
beforeAll: [
|
|
35
|
+
function enableRequestInterceptor(): void {
|
|
36
|
+
if (BASE_TEST_CONSTANTS.TS_SELENIUM_REQUEST_INTERCEPTOR) {
|
|
37
|
+
CheApiRequestHandler.enableRequestInterceptor();
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
function enableResponseInterceptor(): void {
|
|
41
|
+
if (BASE_TEST_CONSTANTS.TS_SELENIUM_RESPONSE_INTERCEPTOR) {
|
|
42
|
+
CheApiRequestHandler.enableResponseInterceptor();
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
// init vscode-extension-tester monaco-page-objects
|
|
46
|
+
function initMonacoPageObjects(): void {
|
|
47
|
+
monacoPageObjects.initPageObjects(
|
|
48
|
+
MONACO_CONSTANTS.TS_SELENIUM_MONACO_PAGE_OBJECTS_USE_VERSION,
|
|
49
|
+
MONACO_CONSTANTS.TS_SELENIUM_MONACO_PAGE_OBJECTS_BASE_VERSION,
|
|
50
|
+
vscodeExtensionTesterLocators.getLocatorsPath(),
|
|
51
|
+
driverHelper.getDriver(),
|
|
52
|
+
'google-chrome'
|
|
53
|
+
);
|
|
54
|
+
},
|
|
55
|
+
function prolongTimeoutConstantsInDebugMode(): void {
|
|
56
|
+
if (BASE_TEST_CONSTANTS.TS_DEBUG_MODE) {
|
|
57
|
+
for (const [timeout, seconds] of Object.entries(TIMEOUT_CONSTANTS)) {
|
|
58
|
+
Object.defineProperty(TIMEOUT_CONSTANTS, timeout, {
|
|
59
|
+
value: seconds * 100
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
afterEach: [
|
|
66
|
+
// stop and remove running workspace
|
|
67
|
+
function deleteWorkspaceOnFailedTest(this: Mocha.Context): void {
|
|
68
|
+
if (this.currentTest?.state === 'failed') {
|
|
69
|
+
if (BASE_TEST_CONSTANTS.DELETE_WORKSPACE_ON_FAILED_TEST) {
|
|
70
|
+
Logger.info('Property DELETE_WORKSPACE_ON_FAILED_TEST is true - trying to stop and delete running workspace with API.');
|
|
71
|
+
const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
|
|
72
|
+
testWorkspaceUtil.stopAndDeleteWorkspaceByName(latestWorkspace);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
afterAll: [
|
|
78
|
+
async function stopTheDriver(): Promise<void> {
|
|
79
|
+
if (!BASE_TEST_CONSTANTS.TS_DEBUG_MODE && CHROME_DRIVER_CONSTANTS.TS_USE_WEB_DRIVER_FOR_TEST) {
|
|
80
|
+
await driverHelper.getDriver().quit();
|
|
81
|
+
Logger.info('Chrome driver session stopped.');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
]
|
|
78
85
|
};
|
package/specs/SmokeTest.spec.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 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
|
|
@@ -16,50 +16,52 @@ import { registerRunningWorkspace } from './MochaHooks';
|
|
|
16
16
|
import { Logger } from '../utils/Logger';
|
|
17
17
|
import { LoginTests } from '../tests-library/LoginTests';
|
|
18
18
|
import { StringUtil } from '../utils/StringUtil';
|
|
19
|
-
import {
|
|
19
|
+
import { FACTORY_TEST_CONSTANTS } from '../constants/FACTORY_TEST_CONSTANTS';
|
|
20
20
|
import { BrowserTabsUtil } from '../utils/BrowserTabsUtil';
|
|
21
21
|
import { expect } from 'chai';
|
|
22
|
-
import {
|
|
22
|
+
import { BASE_TEST_CONSTANTS } from '../constants/BASE_TEST_CONSTANTS';
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
24
|
+
suite('The SmokeTest userstory', function (): void {
|
|
25
|
+
const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
|
|
26
|
+
const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
|
|
27
|
+
const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
|
|
28
|
+
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
29
|
+
const factoryUrl: string =
|
|
30
|
+
FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL || 'https://github.com/che-incubator/quarkus-api-example.git';
|
|
31
|
+
let projectSection: ViewSection;
|
|
32
|
+
suite(`Create workspace from factory:${factoryUrl}`, function (): void {
|
|
33
|
+
loginTests.loginIntoChe();
|
|
34
|
+
test(`Create and open new workspace from factory:${factoryUrl}`, async function (): Promise<void> {
|
|
35
|
+
await workspaceHandlingTests.createAndOpenWorkspaceFromGitRepository(factoryUrl);
|
|
36
|
+
});
|
|
37
|
+
test('Obtain workspace name from workspace loader page', async function (): Promise<void> {
|
|
38
|
+
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
39
|
+
});
|
|
40
|
+
test('Register running workspace', function (): void {
|
|
41
|
+
registerRunningWorkspace(WorkspaceHandlingTests.getWorkspaceName());
|
|
42
|
+
});
|
|
43
|
+
test('Wait workspace readiness', async function (): Promise<void> {
|
|
44
|
+
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
45
|
+
});
|
|
46
|
+
test('Check a project folder has been created', async function (): Promise<void> {
|
|
47
|
+
const projectName: string = FACTORY_TEST_CONSTANTS.TS_SELENIUM_PROJECT_NAME || StringUtil.getProjectNameFromGitUrl(factoryUrl);
|
|
48
|
+
projectSection = await new SideBarView().getContent().getSection(projectName);
|
|
49
|
+
Logger.debug(`new SideBarView().getContent().getSection: get ${projectName}`);
|
|
50
|
+
});
|
|
51
|
+
test('Check the project files was imported', async function (): Promise<void> {
|
|
52
|
+
Logger.debug(`projectSection.findItem: find ${BASE_TEST_CONSTANTS.TS_SELENIUM_PROJECT_ROOT_FILE_NAME}`);
|
|
53
|
+
const isFileImported: ViewItem | undefined = await projectSection.findItem(
|
|
54
|
+
BASE_TEST_CONSTANTS.TS_SELENIUM_PROJECT_ROOT_FILE_NAME
|
|
55
|
+
);
|
|
56
|
+
expect(isFileImported).not.eqls(undefined);
|
|
57
|
+
});
|
|
58
|
+
test('Stop the workspace', async function (): Promise<void> {
|
|
59
|
+
await workspaceHandlingTests.stopWorkspace(WorkspaceHandlingTests.getWorkspaceName());
|
|
60
|
+
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
61
|
+
});
|
|
62
|
+
test('Delete the workspace', async function (): Promise<void> {
|
|
63
|
+
await workspaceHandlingTests.removeWorkspace(WorkspaceHandlingTests.getWorkspaceName());
|
|
64
|
+
});
|
|
65
|
+
loginTests.logoutFromChe();
|
|
66
|
+
});
|
|
65
67
|
});
|