@eclipse-che/che-e2e 7.74.0-dev-41d1364 → 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/.eslintrc.js +15 -1
- package/CODE_STYLE.md +144 -0
- package/configs/inversify.config.ts +26 -5
- package/configs/inversify.types.ts +17 -3
- package/constants/CHROME_DRIVER_CONSTANTS.ts +1 -13
- package/dist/configs/inversify.config.js +22 -1
- package/dist/configs/inversify.config.js.map +1 -1
- package/dist/configs/inversify.types.js +17 -3
- package/dist/configs/inversify.types.js.map +1 -1
- package/dist/constants/CHROME_DRIVER_CONSTANTS.js +1 -9
- package/dist/constants/CHROME_DRIVER_CONSTANTS.js.map +1 -1
- package/dist/driver/ChromeDriver.js +1 -7
- package/dist/driver/ChromeDriver.js.map +1 -1
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/pageobjects/dashboard/CreateWorkspace.js +5 -5
- package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -1
- package/dist/pageobjects/dashboard/Dashboard.js +5 -6
- package/dist/pageobjects/dashboard/Dashboard.js.map +1 -1
- package/dist/pageobjects/dashboard/Workspaces.js +34 -39
- package/dist/pageobjects/dashboard/Workspaces.js.map +1 -1
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +27 -28
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +1 -1
- package/dist/pageobjects/git-providers/OauthPage.js +2 -2
- package/dist/pageobjects/git-providers/OauthPage.js.map +1 -1
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js +18 -4
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js.map +1 -1
- package/dist/pageobjects/login/kubernetes/DexLoginPage.js +11 -11
- package/dist/pageobjects/login/kubernetes/DexLoginPage.js.map +1 -1
- package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js +2 -2
- package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpLoginPage.js +20 -24
- package/dist/pageobjects/login/openshift/OcpLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js +10 -13
- package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/OcpUserLoginPage.js +3 -3
- package/dist/pageobjects/login/openshift/OcpUserLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/RedHatLoginPage.js +16 -20
- package/dist/pageobjects/login/openshift/RedHatLoginPage.js.map +1 -1
- package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js +16 -15
- 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 +20 -20
- package/dist/pageobjects/openshift/OcpImportFromGitPage.js.map +1 -1
- package/dist/pageobjects/openshift/OcpMainPage.js +25 -25
- package/dist/pageobjects/openshift/OcpMainPage.js.map +1 -1
- package/dist/specs/MochaHooks.js +9 -6
- package/dist/specs/MochaHooks.js.map +1 -1
- package/dist/specs/SmokeTest.spec.js +6 -6
- package/dist/specs/SmokeTest.spec.js.map +1 -1
- package/dist/specs/api/ContainerOverridesAPI.spec.js +7 -14
- package/dist/specs/api/ContainerOverridesAPI.spec.js.map +1 -1
- package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js +11 -19
- package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js.map +1 -1
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js +10 -16
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js.map +1 -1
- package/dist/specs/api/PodOverridesAPI.spec.js +7 -14
- 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 +6 -6
- package/dist/specs/dashboard-samples/Quarkus.spec.js.map +1 -1
- package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js +11 -11
- package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js.map +1 -1
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js +11 -12
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js.map +1 -1
- package/dist/specs/factory/Factory.spec.js +13 -16
- package/dist/specs/factory/Factory.spec.js.map +1 -1
- package/dist/specs/factory/NoSetupRepoFactory.spec.js +17 -18
- package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +1 -1
- package/dist/specs/factory/RefusedOAuthFactory.spec.js +17 -19
- package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +1 -1
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +35 -41
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js.map +1 -1
- package/dist/tests-library/LoginTests.js +8 -8
- package/dist/tests-library/LoginTests.js.map +1 -1
- package/dist/tests-library/ProjectAndFileTests.js +2 -2
- package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
- package/dist/tests-library/WorkspaceHandlingTests.js +8 -8
- package/dist/tests-library/WorkspaceHandlingTests.js.map +1 -1
- package/dist/utils/BrowserTabsUtil.js +4 -9
- package/dist/utils/BrowserTabsUtil.js.map +1 -1
- package/dist/utils/CheReporter.js +49 -23
- package/dist/utils/CheReporter.js.map +1 -1
- package/dist/utils/DevWorkspaceConfigurationHelper.js +27 -17
- package/dist/utils/DevWorkspaceConfigurationHelper.js.map +1 -1
- package/dist/utils/DevfilesRegistryHelper.js +15 -5
- package/dist/utils/DevfilesRegistryHelper.js.map +1 -1
- package/dist/utils/DriverHelper.js +9 -2
- 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 +133 -98
- package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +1 -1
- package/dist/utils/ScreenCatcher.js +8 -4
- package/dist/utils/ScreenCatcher.js.map +1 -1
- package/dist/utils/ShellExecutor.js +20 -9
- package/dist/utils/ShellExecutor.js.map +1 -1
- package/dist/utils/StringUtil.js +4 -2
- package/dist/utils/StringUtil.js.map +1 -1
- package/dist/utils/request-handlers/CheApiRequestHandler.js +2 -2
- package/dist/utils/request-handlers/CheApiRequestHandler.js.map +1 -1
- package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js +2 -2
- package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +1 -1
- package/dist/utils/workspace/ApiUrlResolver.js +2 -2
- package/dist/utils/workspace/ApiUrlResolver.js.map +1 -1
- package/dist/utils/workspace/TestWorkspaceUtil.js +4 -4
- package/dist/utils/workspace/TestWorkspaceUtil.js.map +1 -1
- package/driver/ChromeDriver.ts +0 -7
- package/index.ts +2 -0
- package/package.json +3 -3
- package/pageobjects/dashboard/CreateWorkspace.ts +5 -4
- package/pageobjects/dashboard/Dashboard.ts +3 -4
- package/pageobjects/dashboard/Workspaces.ts +40 -48
- package/pageobjects/dashboard/workspace-details/WorkspaceDetails.ts +23 -26
- package/pageobjects/ide/CheCodeLocatorLoader.ts +3 -1
- package/pageobjects/login/interfaces/ICheLoginPage.ts +1 -1
- package/pageobjects/login/interfaces/IOcpLoginPage.ts +1 -1
- package/pageobjects/login/kubernetes/DexLoginPage.ts +9 -9
- package/pageobjects/login/openshift/OcpLoginPage.ts +18 -30
- package/pageobjects/login/openshift/OcpRedHatLoginPage.ts +6 -11
- package/pageobjects/login/openshift/OcpUserLoginPage.ts +1 -1
- package/pageobjects/login/openshift/RedHatLoginPage.ts +17 -16
- package/pageobjects/login/openshift/RegularUserOcpCheLoginPage.ts +16 -11
- package/pageobjects/openshift/OcpApplicationPage.ts +5 -4
- package/pageobjects/openshift/OcpImportFromGitPage.ts +18 -20
- package/pageobjects/openshift/OcpMainPage.ts +24 -25
- package/specs/MochaHooks.ts +3 -5
- package/specs/SmokeTest.spec.ts +4 -5
- package/specs/api/ContainerOverridesAPI.spec.ts +8 -2
- package/specs/api/DevfileAcceptanceTestAPI.spec.ts +9 -7
- package/specs/api/EmptyWorkspaceAPI.spec.ts +8 -4
- package/specs/api/PodOverridesAPI.spec.ts +8 -3
- package/specs/dashboard-samples/EmptyWorkspace.spec.ts +5 -5
- package/specs/dashboard-samples/Quarkus.spec.ts +7 -6
- package/specs/dashboard-samples/RecommendedExtensions.spec.ts +8 -7
- package/specs/devconsole-intergration/DevConsoleIntegration.spec.ts +12 -11
- package/specs/factory/Factory.spec.ts +8 -12
- package/specs/factory/NoSetupRepoFactory.spec.ts +10 -11
- package/specs/factory/RefusedOAuthFactory.spec.ts +8 -10
- package/specs/miscellaneous/PredefinedNamespace.spec.ts +40 -44
- package/tests-library/LoginTests.ts +3 -3
- package/tests-library/WorkspaceHandlingTests.ts +2 -2
- package/utils/BrowserTabsUtil.ts +7 -9
- package/utils/CheReporter.ts +26 -20
- package/utils/DevWorkspaceConfigurationHelper.ts +9 -24
- package/utils/DevfilesRegistryHelper.ts +8 -3
- package/utils/DriverHelper.ts +14 -12
- package/utils/IContextParams.ts +26 -0
- package/utils/IKubernetesCommandLineToolsExecutor.ts +42 -0
- package/utils/KubernetesCommandLineToolsExecutor.ts +133 -101
- package/utils/ShellExecutor.ts +10 -7
- package/utils/StringUtil.ts +6 -1
|
@@ -17,10 +17,10 @@ import { DriverHelper } from '../../../utils/DriverHelper';
|
|
|
17
17
|
|
|
18
18
|
@injectable()
|
|
19
19
|
export class DexLoginPage {
|
|
20
|
-
private static readonly
|
|
21
|
-
private static readonly
|
|
22
|
-
private static readonly
|
|
23
|
-
private static readonly
|
|
20
|
+
private static readonly DEX_PAGE_CONTENT_CONTAINER: By = By.className('dex-container');
|
|
21
|
+
private static readonly LOGIN_INPUT: By = By.id('login');
|
|
22
|
+
private static readonly PASSWORD_INPUT: By = By.id('password');
|
|
23
|
+
private static readonly SUBMIT_BUTTON: By = By.id('submit-login');
|
|
24
24
|
|
|
25
25
|
constructor(
|
|
26
26
|
@inject(CLASSES.DriverHelper)
|
|
@@ -30,30 +30,30 @@ export class DexLoginPage {
|
|
|
30
30
|
async waitDexLoginPage(): Promise<void> {
|
|
31
31
|
Logger.debug();
|
|
32
32
|
|
|
33
|
-
await this.driverHelper.waitVisibility(DexLoginPage.
|
|
33
|
+
await this.driverHelper.waitVisibility(DexLoginPage.DEX_PAGE_CONTENT_CONTAINER, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
async clickOnLoginButton(): Promise<void> {
|
|
37
37
|
Logger.debug();
|
|
38
38
|
|
|
39
|
-
await this.driverHelper.waitAndClick(DexLoginPage.
|
|
39
|
+
await this.driverHelper.waitAndClick(DexLoginPage.SUBMIT_BUTTON);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
async enterUserNameKubernetes(userName: string): Promise<void> {
|
|
43
43
|
Logger.debug();
|
|
44
44
|
|
|
45
|
-
await this.driverHelper.enterValue(DexLoginPage.
|
|
45
|
+
await this.driverHelper.enterValue(DexLoginPage.LOGIN_INPUT, userName);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
async enterPasswordKubernetes(password: string): Promise<void> {
|
|
49
49
|
Logger.debug();
|
|
50
50
|
|
|
51
|
-
await this.driverHelper.enterValue(DexLoginPage.
|
|
51
|
+
await this.driverHelper.enterValue(DexLoginPage.PASSWORD_INPUT, password);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
async waitDexLoginPageDisappearance(): Promise<void> {
|
|
55
55
|
Logger.debug();
|
|
56
56
|
|
|
57
|
-
await this.driverHelper.waitDisappearance(DexLoginPage.
|
|
57
|
+
await this.driverHelper.waitDisappearance(DexLoginPage.DEX_PAGE_CONTENT_CONTAINER, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -18,7 +18,13 @@ import { OAUTH_CONSTANTS } from '../../../constants/OAUTH_CONSTANTS';
|
|
|
18
18
|
|
|
19
19
|
@injectable()
|
|
20
20
|
export class OcpLoginPage {
|
|
21
|
-
private static readonly
|
|
21
|
+
private static readonly LOGIN_PAGE_WELCOME_MESSAGE: By = By.xpath('//*[contains(text(), "Welcome")]');
|
|
22
|
+
private static readonly LOGIN_BUTTON: By = By.css('button[type=submit]');
|
|
23
|
+
private static readonly LOGIN_PROVIDER_BUTTON: By = By.xpath(`//a[text()="${OAUTH_CONSTANTS.TS_OCP_LOGIN_PAGE_PROVIDER_TITLE}"]`);
|
|
24
|
+
private static readonly AUTHORIZE_OPENSHIFT_ACCESS_HEADER: By = By.xpath('//h1[text()="Authorize Access"]');
|
|
25
|
+
private static readonly APPROVE_ACCESS_BUTTON: By = By.css('input[name="approve"]');
|
|
26
|
+
private static readonly USERNAME_INPUT: By = By.id('inputUsername');
|
|
27
|
+
private static readonly PASSWORD_INPUT: By = By.id('inputPassword');
|
|
22
28
|
|
|
23
29
|
constructor(
|
|
24
30
|
@inject(CLASSES.DriverHelper)
|
|
@@ -28,72 +34,54 @@ export class OcpLoginPage {
|
|
|
28
34
|
async waitOpenShiftLoginWelcomePage(): Promise<void> {
|
|
29
35
|
Logger.debug();
|
|
30
36
|
|
|
31
|
-
await this.driverHelper.waitVisibility(
|
|
32
|
-
By.xpath(OcpLoginPage.LOGIN_PAGE_OPENSHIFT_XPATH),
|
|
33
|
-
TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT
|
|
34
|
-
);
|
|
37
|
+
await this.driverHelper.waitVisibility(OcpLoginPage.LOGIN_PAGE_WELCOME_MESSAGE, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
35
38
|
}
|
|
36
39
|
|
|
37
|
-
async
|
|
40
|
+
async waitAndClickOnLoginProviderTitle(): Promise<void> {
|
|
38
41
|
Logger.debug();
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
await this.driverHelper.waitAndClick(loginProviderTitleLocator, TIMEOUT_CONSTANTS.TS_SELENIUM_WAIT_FOR_URL);
|
|
43
|
+
await this.driverHelper.waitAndClick(OcpLoginPage.LOGIN_PROVIDER_BUTTON, TIMEOUT_CONSTANTS.TS_SELENIUM_WAIT_FOR_URL);
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
async isIdentityProviderLinkVisible(): Promise<boolean> {
|
|
45
47
|
Logger.debug();
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
return await this.driverHelper.waitVisibilityBoolean(loginWithHtpaswdLocator, 3, 5000);
|
|
49
|
+
return await this.driverHelper.waitVisibilityBoolean(OcpLoginPage.LOGIN_PROVIDER_BUTTON, 3, 5000);
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
async isAuthorizeOpenShiftIdentityProviderPageVisible(): Promise<boolean> {
|
|
52
53
|
Logger.debug();
|
|
53
54
|
|
|
54
|
-
|
|
55
|
-
return await this.driverHelper.isVisible(authorizeOpenshiftIdentityProviderPageLocator);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async waitAuthorizeOpenShiftIdentityProviderPage(): Promise<void> {
|
|
59
|
-
Logger.debug();
|
|
60
|
-
|
|
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
|
-
);
|
|
55
|
+
return await this.driverHelper.isVisible(OcpLoginPage.AUTHORIZE_OPENSHIFT_ACCESS_HEADER);
|
|
66
56
|
}
|
|
67
57
|
|
|
68
58
|
async clickOnApproveAuthorizeAccessButton(): Promise<void> {
|
|
69
59
|
Logger.debug();
|
|
70
60
|
|
|
71
|
-
|
|
72
|
-
await this.driverHelper.waitAndClick(approveAuthorizeAccessOcpLocator);
|
|
61
|
+
await this.driverHelper.waitAndClick(OcpLoginPage.APPROVE_ACCESS_BUTTON);
|
|
73
62
|
}
|
|
74
63
|
|
|
75
64
|
async enterUserNameOpenShift(userName: string): Promise<void> {
|
|
76
65
|
Logger.debug(`"${userName}"`);
|
|
77
66
|
|
|
78
|
-
await this.driverHelper.enterValue(
|
|
67
|
+
await this.driverHelper.enterValue(OcpLoginPage.USERNAME_INPUT, userName);
|
|
79
68
|
}
|
|
80
69
|
|
|
81
|
-
async enterPasswordOpenShift(
|
|
70
|
+
async enterPasswordOpenShift(userPassword: string): Promise<void> {
|
|
82
71
|
Logger.debug();
|
|
83
72
|
|
|
84
|
-
await this.driverHelper.enterValue(
|
|
73
|
+
await this.driverHelper.enterValue(OcpLoginPage.PASSWORD_INPUT, userPassword);
|
|
85
74
|
}
|
|
86
75
|
|
|
87
76
|
async clickOnLoginButton(): Promise<void> {
|
|
88
77
|
Logger.debug();
|
|
89
78
|
|
|
90
|
-
|
|
91
|
-
await this.driverHelper.waitAndClick(loginButtonLocator);
|
|
79
|
+
await this.driverHelper.waitAndClick(OcpLoginPage.LOGIN_BUTTON);
|
|
92
80
|
}
|
|
93
81
|
|
|
94
82
|
async waitDisappearanceOpenShiftLoginWelcomePage(): Promise<void> {
|
|
95
83
|
Logger.debug();
|
|
96
84
|
|
|
97
|
-
await this.driverHelper.waitDisappearance(
|
|
85
|
+
await this.driverHelper.waitDisappearance(OcpLoginPage.LOGIN_PAGE_WELCOME_MESSAGE);
|
|
98
86
|
}
|
|
99
87
|
}
|
|
@@ -20,8 +20,9 @@ import { Logger } from '../../../utils/Logger';
|
|
|
20
20
|
|
|
21
21
|
@injectable()
|
|
22
22
|
export class OcpRedHatLoginPage implements ICheLoginPage {
|
|
23
|
-
private readonly
|
|
24
|
-
|
|
23
|
+
private static readonly OPENSHIFT_LOGIN_LANDING_PAGE_BUTTON: By = By.xpath(
|
|
24
|
+
'//div[@class="panel-login"]/div[contains(@class, "panel-content")]/form/button'
|
|
25
|
+
);
|
|
25
26
|
|
|
26
27
|
constructor(
|
|
27
28
|
@inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage,
|
|
@@ -33,17 +34,11 @@ export class OcpRedHatLoginPage implements ICheLoginPage {
|
|
|
33
34
|
|
|
34
35
|
async login(): Promise<void> {
|
|
35
36
|
Logger.debug();
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
await this.driverHelper.waitPresence(
|
|
39
|
-
By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR),
|
|
37
|
+
await this.driverHelper.waitAndClick(
|
|
38
|
+
OcpRedHatLoginPage.OPENSHIFT_LOGIN_LANDING_PAGE_BUTTON,
|
|
40
39
|
TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT
|
|
41
40
|
);
|
|
42
|
-
await this.
|
|
43
|
-
|
|
44
|
-
await this.ocpLogin.isIdentityProviderLinkVisible();
|
|
45
|
-
await this.ocpLogin.clickOnLoginProviderTitle();
|
|
46
|
-
|
|
41
|
+
await this.ocpLogin.waitAndClickOnLoginProviderTitle();
|
|
47
42
|
await this.redHatLogin.waitRedHatLoginWelcomePage();
|
|
48
43
|
await this.redHatLogin.enterUserNameRedHat();
|
|
49
44
|
await this.redHatLogin.clickNextButton();
|
|
@@ -23,7 +23,7 @@ export class OcpUserLoginPage implements IOcpLoginPage {
|
|
|
23
23
|
Logger.debug();
|
|
24
24
|
|
|
25
25
|
if (OAUTH_CONSTANTS.TS_OCP_LOGIN_PAGE_PROVIDER_TITLE !== '') {
|
|
26
|
-
await this.ocpLogin.
|
|
26
|
+
await this.ocpLogin.waitAndClickOnLoginProviderTitle();
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
await this.ocpLogin.waitOpenShiftLoginWelcomePage();
|
|
@@ -14,13 +14,14 @@ import { CLASSES } from '../../../configs/inversify.types';
|
|
|
14
14
|
import { DriverHelper } from '../../../utils/DriverHelper';
|
|
15
15
|
import { Logger } from '../../../utils/Logger';
|
|
16
16
|
import { OAUTH_CONSTANTS } from '../../../constants/OAUTH_CONSTANTS';
|
|
17
|
+
import { TIMEOUT_CONSTANTS } from '../../../constants/TIMEOUT_CONSTANTS';
|
|
17
18
|
|
|
18
19
|
@injectable()
|
|
19
20
|
export class RedHatLoginPage {
|
|
20
|
-
private readonly
|
|
21
|
-
private readonly
|
|
22
|
-
private readonly
|
|
23
|
-
private readonly
|
|
21
|
+
private static readonly USERNAME_INPUT: By = By.id('username-verification');
|
|
22
|
+
private static readonly PASSWORD_INPUT: By = By.id('password');
|
|
23
|
+
private static readonly NEXT_BUTTON: By = By.id('login-show-step2');
|
|
24
|
+
private static readonly LOGIN_BUTTON: By = By.id('rh-password-verification-submit-button');
|
|
24
25
|
|
|
25
26
|
constructor(
|
|
26
27
|
@inject(CLASSES.DriverHelper)
|
|
@@ -29,37 +30,37 @@ export class RedHatLoginPage {
|
|
|
29
30
|
|
|
30
31
|
async waitRedHatLoginWelcomePage(): Promise<void> {
|
|
31
32
|
Logger.debug();
|
|
32
|
-
|
|
33
|
+
|
|
34
|
+
await this.driverHelper.waitVisibility(RedHatLoginPage.USERNAME_INPUT, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
async enterPasswordRedHat(): Promise<void> {
|
|
36
38
|
Logger.debug();
|
|
37
|
-
|
|
38
|
-
await this.driverHelper.
|
|
39
|
-
await this.driverHelper.enterValue(passwordFieldLocator, OAUTH_CONSTANTS.TS_SELENIUM_OCP_PASSWORD);
|
|
39
|
+
|
|
40
|
+
await this.driverHelper.enterValue(RedHatLoginPage.PASSWORD_INPUT, OAUTH_CONSTANTS.TS_SELENIUM_OCP_PASSWORD);
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
async clickOnLoginButton(): Promise<void> {
|
|
43
44
|
Logger.debug();
|
|
44
|
-
|
|
45
|
-
await this.driverHelper.waitAndClick(
|
|
45
|
+
|
|
46
|
+
await this.driverHelper.waitAndClick(RedHatLoginPage.LOGIN_BUTTON);
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
async waitDisappearanceRedHatLoginWelcomePage(): Promise<void> {
|
|
49
50
|
Logger.debug();
|
|
50
|
-
|
|
51
|
+
|
|
52
|
+
await this.driverHelper.waitDisappearance(RedHatLoginPage.LOGIN_BUTTON);
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
async enterUserNameRedHat(): Promise<void> {
|
|
54
56
|
Logger.debug();
|
|
55
|
-
|
|
56
|
-
await this.driverHelper.
|
|
57
|
-
await this.driverHelper.enterValue(usernameFieldLocator, OAUTH_CONSTANTS.TS_SELENIUM_OCP_USERNAME);
|
|
57
|
+
|
|
58
|
+
await this.driverHelper.enterValue(RedHatLoginPage.USERNAME_INPUT, OAUTH_CONSTANTS.TS_SELENIUM_OCP_USERNAME);
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
async clickNextButton(): Promise<void> {
|
|
61
62
|
Logger.debug();
|
|
62
|
-
|
|
63
|
-
await this.driverHelper.waitAndClick(
|
|
63
|
+
|
|
64
|
+
await this.driverHelper.waitAndClick(RedHatLoginPage.NEXT_BUTTON);
|
|
64
65
|
}
|
|
65
66
|
}
|
|
@@ -20,8 +20,9 @@ import { OAUTH_CONSTANTS } from '../../../constants/OAUTH_CONSTANTS';
|
|
|
20
20
|
|
|
21
21
|
@injectable()
|
|
22
22
|
export class RegularUserOcpCheLoginPage implements ICheLoginPage {
|
|
23
|
-
private readonly
|
|
24
|
-
|
|
23
|
+
private static readonly OPENSHIFT_LOGIN_LANDING_PAGE_BUTTON: By = By.xpath(
|
|
24
|
+
'//div[@class="panel-login"]/div[contains(@class, "panel-content")]/form/button'
|
|
25
|
+
);
|
|
25
26
|
|
|
26
27
|
constructor(
|
|
27
28
|
@inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage,
|
|
@@ -29,28 +30,32 @@ export class RegularUserOcpCheLoginPage implements ICheLoginPage {
|
|
|
29
30
|
private readonly driverHelper: DriverHelper
|
|
30
31
|
) {}
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
/**
|
|
34
|
+
* @param userName
|
|
35
|
+
* @param password
|
|
36
|
+
*/
|
|
37
|
+
async login(
|
|
38
|
+
userName: string = OAUTH_CONSTANTS.TS_SELENIUM_OCP_USERNAME,
|
|
39
|
+
password: string = OAUTH_CONSTANTS.TS_SELENIUM_OCP_PASSWORD
|
|
40
|
+
): Promise<void> {
|
|
33
41
|
Logger.debug();
|
|
34
42
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR),
|
|
43
|
+
await this.driverHelper.waitAndClick(
|
|
44
|
+
RegularUserOcpCheLoginPage.OPENSHIFT_LOGIN_LANDING_PAGE_BUTTON,
|
|
38
45
|
TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT
|
|
39
46
|
);
|
|
40
|
-
await this.driverHelper.waitAndClick(By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR));
|
|
41
47
|
|
|
42
48
|
if (await this.ocpLogin.isIdentityProviderLinkVisible()) {
|
|
43
|
-
await this.ocpLogin.
|
|
49
|
+
await this.ocpLogin.waitAndClickOnLoginProviderTitle();
|
|
44
50
|
}
|
|
45
51
|
|
|
46
52
|
await this.ocpLogin.waitOpenShiftLoginWelcomePage();
|
|
47
|
-
await this.ocpLogin.enterUserNameOpenShift(
|
|
48
|
-
await this.ocpLogin.enterPasswordOpenShift(
|
|
53
|
+
await this.ocpLogin.enterUserNameOpenShift(userName);
|
|
54
|
+
await this.ocpLogin.enterPasswordOpenShift(password);
|
|
49
55
|
await this.ocpLogin.clickOnLoginButton();
|
|
50
56
|
await this.ocpLogin.waitDisappearanceOpenShiftLoginWelcomePage();
|
|
51
57
|
|
|
52
58
|
if (await this.ocpLogin.isAuthorizeOpenShiftIdentityProviderPageVisible()) {
|
|
53
|
-
await this.ocpLogin.waitAuthorizeOpenShiftIdentityProviderPage();
|
|
54
59
|
await this.ocpLogin.clickOnApproveAuthorizeAccessButton();
|
|
55
60
|
}
|
|
56
61
|
}
|
|
@@ -18,8 +18,8 @@ import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
|
|
|
18
18
|
|
|
19
19
|
@injectable()
|
|
20
20
|
export class OcpApplicationPage {
|
|
21
|
-
private static readonly
|
|
22
|
-
private static readonly
|
|
21
|
+
private static readonly APPLICATION_ICON: By = By.xpath('//*[@data-test-id="base-node-handler"]');
|
|
22
|
+
private static readonly EDIT_SOURCE_CODE_ICON: By = By.xpath('//*[@aria-label="Edit source code"]');
|
|
23
23
|
|
|
24
24
|
constructor(
|
|
25
25
|
@inject(CLASSES.DriverHelper)
|
|
@@ -31,13 +31,14 @@ export class OcpApplicationPage {
|
|
|
31
31
|
async waitApplicationIcon(): Promise<void> {
|
|
32
32
|
Logger.debug();
|
|
33
33
|
|
|
34
|
-
await this.driverHelper.waitPresence(OcpApplicationPage.
|
|
34
|
+
await this.driverHelper.waitPresence(OcpApplicationPage.APPLICATION_ICON, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
async waitAndOpenEditSourceCodeIcon(): Promise<void> {
|
|
38
38
|
Logger.debug();
|
|
39
|
+
|
|
39
40
|
const parentGUID: string = await this.browserTabsUtil.getCurrentWindowHandle();
|
|
40
|
-
await this.driverHelper.waitAndClick(OcpApplicationPage.
|
|
41
|
+
await this.driverHelper.waitAndClick(OcpApplicationPage.EDIT_SOURCE_CODE_ICON);
|
|
41
42
|
await this.browserTabsUtil.waitAndSwitchToAnotherWindow(parentGUID, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
42
43
|
}
|
|
43
44
|
}
|
|
@@ -18,17 +18,15 @@ import { e2eContainer } from '../../configs/inversify.config';
|
|
|
18
18
|
|
|
19
19
|
@injectable()
|
|
20
20
|
export class OcpImportFromGitPage {
|
|
21
|
-
private static readonly
|
|
22
|
-
private static readonly
|
|
23
|
-
|
|
24
|
-
);
|
|
25
|
-
private static readonly
|
|
26
|
-
private static readonly
|
|
27
|
-
private static readonly
|
|
28
|
-
private static readonly
|
|
29
|
-
private static readonly
|
|
30
|
-
private static readonly ADD_LABEL_INPUT_LOCATOR: By = By.id('form-selector-labels-field');
|
|
31
|
-
private static readonly SUBMIT_BUTTON_LOCATOR: By = By.xpath('//*[@data-test-id="submit-button"]');
|
|
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"]');
|
|
32
30
|
|
|
33
31
|
constructor(
|
|
34
32
|
@inject(CLASSES.DriverHelper)
|
|
@@ -38,41 +36,41 @@ export class OcpImportFromGitPage {
|
|
|
38
36
|
async enterGitRepoUrl(gitRepoUrl: string): Promise<void> {
|
|
39
37
|
Logger.debug();
|
|
40
38
|
|
|
41
|
-
await this.driverHelper.enterValue(OcpImportFromGitPage.
|
|
39
|
+
await this.driverHelper.enterValue(OcpImportFromGitPage.GIT_URL_INPUT, gitRepoUrl);
|
|
42
40
|
}
|
|
43
41
|
|
|
44
42
|
async clickOnAdvancedOptionsButton(): Promise<void> {
|
|
45
43
|
Logger.debug();
|
|
46
44
|
|
|
47
|
-
if (!(await this.driverHelper.isVisible(OcpImportFromGitPage.
|
|
48
|
-
await this.driverHelper.waitAndClick(OcpImportFromGitPage.
|
|
45
|
+
if (!(await this.driverHelper.isVisible(OcpImportFromGitPage.HIDE_ADVANCED_GIT_OPTIONS))) {
|
|
46
|
+
await this.driverHelper.waitAndClick(OcpImportFromGitPage.SHOW_ADVANCED_GIT_OPTIONS_LINK);
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
49
|
|
|
52
50
|
async enterGitReference(gitReference: string): Promise<void> {
|
|
53
51
|
Logger.debug(`"${gitReference}"`);
|
|
54
52
|
|
|
55
|
-
await this.driverHelper.enterValue(OcpImportFromGitPage.
|
|
53
|
+
await this.driverHelper.enterValue(OcpImportFromGitPage.GIT_REFERENCE_INPUT, gitReference);
|
|
56
54
|
}
|
|
57
55
|
|
|
58
56
|
async selectBuilderImageImportStrategy(): Promise<void> {
|
|
59
57
|
Logger.debug();
|
|
60
58
|
|
|
61
|
-
await this.driverHelper.scrollToAndClick(OcpImportFromGitPage.
|
|
62
|
-
await this.driverHelper.scrollToAndClick(OcpImportFromGitPage.
|
|
59
|
+
await this.driverHelper.scrollToAndClick(OcpImportFromGitPage.EDIT_IMPORT_STRATEGY_LINK);
|
|
60
|
+
await this.driverHelper.scrollToAndClick(OcpImportFromGitPage.BUILDER_IMAGE_STRATEGY_ITEM);
|
|
63
61
|
}
|
|
64
62
|
|
|
65
63
|
async addLabel(label: string): Promise<void> {
|
|
66
64
|
Logger.debug(`"${label}"`);
|
|
67
65
|
|
|
68
|
-
await this.driverHelper.scrollToAndClick(OcpImportFromGitPage.
|
|
69
|
-
await this.driverHelper.scrollToAndEnterValue(OcpImportFromGitPage.
|
|
66
|
+
await this.driverHelper.scrollToAndClick(OcpImportFromGitPage.ADD_LABEL_LINK);
|
|
67
|
+
await this.driverHelper.scrollToAndEnterValue(OcpImportFromGitPage.ADD_LABEL_INPUT, label);
|
|
70
68
|
}
|
|
71
69
|
|
|
72
70
|
async submitConfiguration(): Promise<OcpApplicationPage> {
|
|
73
71
|
Logger.debug();
|
|
74
72
|
|
|
75
|
-
await this.driverHelper.waitAndClick(OcpImportFromGitPage.
|
|
73
|
+
await this.driverHelper.waitAndClick(OcpImportFromGitPage.SUBMIT_BUTTON);
|
|
76
74
|
return e2eContainer.get(CLASSES.OcpApplicationPage);
|
|
77
75
|
}
|
|
78
76
|
|
|
@@ -19,43 +19,35 @@ import { e2eContainer } from '../../configs/inversify.config';
|
|
|
19
19
|
|
|
20
20
|
@injectable()
|
|
21
21
|
export class OcpMainPage {
|
|
22
|
-
private static readonly
|
|
23
|
-
private static readonly
|
|
24
|
-
private static readonly
|
|
25
|
-
private static readonly
|
|
26
|
-
private static readonly
|
|
27
|
-
private static readonly
|
|
28
|
-
private static readonly
|
|
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"]');
|
|
29
29
|
|
|
30
30
|
constructor(
|
|
31
31
|
@inject(CLASSES.DriverHelper)
|
|
32
32
|
private readonly driverHelper: DriverHelper
|
|
33
33
|
) {}
|
|
34
34
|
|
|
35
|
-
private static getRoleLocator(role: string): By {
|
|
36
|
-
return By.xpath(`//a//*[text()="${role}"]`);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
private static getProjectDropdownItemLocator(projectName: string): By {
|
|
40
|
-
return By.xpath(`//button//*[text()="${projectName}"]`);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
35
|
async waitOpenMainPage(): Promise<void> {
|
|
44
36
|
Logger.debug();
|
|
45
37
|
|
|
46
|
-
await this.driverHelper.waitVisibility(OcpMainPage.
|
|
38
|
+
await this.driverHelper.waitVisibility(OcpMainPage.MAIN_PAGE_HEADER, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
|
|
47
39
|
}
|
|
48
40
|
|
|
49
41
|
async clickOnSelectRoleButton(): Promise<void> {
|
|
50
42
|
Logger.debug();
|
|
51
43
|
|
|
52
|
-
await this.driverHelper.waitAndClick(OcpMainPage.
|
|
44
|
+
await this.driverHelper.waitAndClick(OcpMainPage.SELECT_ROLE_BUTTON);
|
|
53
45
|
}
|
|
54
46
|
|
|
55
47
|
async clickAddToProjectButton(): Promise<void> {
|
|
56
48
|
Logger.debug();
|
|
57
49
|
|
|
58
|
-
await this.driverHelper.waitAndClick(OcpMainPage.
|
|
50
|
+
await this.driverHelper.waitAndClick(OcpMainPage.ADD_BUTTON);
|
|
59
51
|
}
|
|
60
52
|
|
|
61
53
|
async selectDeveloperRole(): Promise<void> {
|
|
@@ -71,7 +63,7 @@ export class OcpMainPage {
|
|
|
71
63
|
async selectImportFromGitMethod(): Promise<OcpImportFromGitPage> {
|
|
72
64
|
Logger.debug();
|
|
73
65
|
|
|
74
|
-
await this.driverHelper.waitAndClick(OcpMainPage.
|
|
66
|
+
await this.driverHelper.waitAndClick(OcpMainPage.IMPORT_FROM_GIT_ITEM);
|
|
75
67
|
return e2eContainer.get(CLASSES.OcpImportFromGitPage);
|
|
76
68
|
}
|
|
77
69
|
|
|
@@ -85,22 +77,29 @@ export class OcpMainPage {
|
|
|
85
77
|
async selectProject(projectName: string): Promise<void> {
|
|
86
78
|
Logger.debug();
|
|
87
79
|
|
|
88
|
-
await this.driverHelper.waitAndClick(OcpMainPage.
|
|
89
|
-
await this.driverHelper.enterValue(OcpMainPage.
|
|
90
|
-
await this.driverHelper.waitAndClick(
|
|
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
|
+
}
|
|
87
|
+
|
|
88
|
+
private getProjectDropdownItemLocator(projectName: string): By {
|
|
89
|
+
return By.xpath(`//button//*[text()="${projectName}"]`);
|
|
91
90
|
}
|
|
92
91
|
|
|
93
92
|
private async selectRole(role: string): Promise<void> {
|
|
94
93
|
Logger.debug(`selecting role ${role}`);
|
|
95
94
|
|
|
96
|
-
await this.driverHelper.waitAndClick(
|
|
95
|
+
await this.driverHelper.waitAndClick(this.getRoleLocator(role));
|
|
97
96
|
}
|
|
98
97
|
|
|
99
98
|
private async tryToSkipWebTour(): Promise<void> {
|
|
100
99
|
Logger.debug();
|
|
101
100
|
|
|
102
|
-
if (await this.driverHelper.isVisible(OcpMainPage.
|
|
103
|
-
await this.driverHelper.waitAndClick(OcpMainPage.
|
|
101
|
+
if (await this.driverHelper.isVisible(OcpMainPage.SKIP_TOUR_BUTTON)) {
|
|
102
|
+
await this.driverHelper.waitAndClick(OcpMainPage.SKIP_TOUR_BUTTON);
|
|
104
103
|
|
|
105
104
|
Logger.debug('welcome tour modal dialog was located and skipped');
|
|
106
105
|
} else {
|
package/specs/MochaHooks.ts
CHANGED
|
@@ -23,8 +23,6 @@ import { CHROME_DRIVER_CONSTANTS } from '../constants/CHROME_DRIVER_CONSTANTS';
|
|
|
23
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 {
|
|
@@ -44,8 +42,8 @@ exports.mochaHooks = {
|
|
|
44
42
|
CheApiRequestHandler.enableResponseInterceptor();
|
|
45
43
|
}
|
|
46
44
|
},
|
|
45
|
+
// init vscode-extension-tester monaco-page-objects
|
|
47
46
|
function initMonacoPageObjects(): void {
|
|
48
|
-
// init vscode-extension-tester monaco-page-objects
|
|
49
47
|
monacoPageObjects.initPageObjects(
|
|
50
48
|
MONACO_CONSTANTS.TS_SELENIUM_MONACO_PAGE_OBJECTS_USE_VERSION,
|
|
51
49
|
MONACO_CONSTANTS.TS_SELENIUM_MONACO_PAGE_OBJECTS_BASE_VERSION,
|
|
@@ -66,11 +64,11 @@ exports.mochaHooks = {
|
|
|
66
64
|
],
|
|
67
65
|
afterEach: [
|
|
68
66
|
// stop and remove running workspace
|
|
69
|
-
function (this: Mocha.Context): void {
|
|
67
|
+
function deleteWorkspaceOnFailedTest(this: Mocha.Context): void {
|
|
70
68
|
if (this.currentTest?.state === 'failed') {
|
|
71
69
|
if (BASE_TEST_CONSTANTS.DELETE_WORKSPACE_ON_FAILED_TEST) {
|
|
72
70
|
Logger.info('Property DELETE_WORKSPACE_ON_FAILED_TEST is true - trying to stop and delete running workspace with API.');
|
|
73
|
-
|
|
71
|
+
const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
|
|
74
72
|
testWorkspaceUtil.stopAndDeleteWorkspaceByName(latestWorkspace);
|
|
75
73
|
}
|
|
76
74
|
}
|
package/specs/SmokeTest.spec.ts
CHANGED
|
@@ -21,12 +21,11 @@ import { BrowserTabsUtil } from '../utils/BrowserTabsUtil';
|
|
|
21
21
|
import { expect } from 'chai';
|
|
22
22
|
import { BASE_TEST_CONSTANTS } from '../constants/BASE_TEST_CONSTANTS';
|
|
23
23
|
|
|
24
|
-
const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
|
|
25
|
-
const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
|
|
26
|
-
const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
|
|
27
|
-
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
28
|
-
|
|
29
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);
|
|
30
29
|
const factoryUrl: string =
|
|
31
30
|
FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL || 'https://github.com/che-incubator/quarkus-api-example.git';
|
|
32
31
|
let projectSection: ViewSection;
|
|
@@ -13,11 +13,17 @@ import path from 'path';
|
|
|
13
13
|
import YAML from 'yaml';
|
|
14
14
|
import { expect } from 'chai';
|
|
15
15
|
import { ShellExecutor } from '../../utils/ShellExecutor';
|
|
16
|
+
import { e2eContainer } from '../../configs/inversify.config';
|
|
17
|
+
import { CLASSES } from '../../configs/inversify.types';
|
|
16
18
|
|
|
17
19
|
suite('Test defining container overrides via attribute.', function (): void {
|
|
18
20
|
const pathToSampleFile: string = path.resolve('resources/container-overrides.yaml');
|
|
19
21
|
const workspaceName: string = YAML.parse(fs.readFileSync(pathToSampleFile, 'utf8')).metadata.name;
|
|
20
|
-
const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor =
|
|
22
|
+
const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = e2eContainer.get(
|
|
23
|
+
CLASSES.KubernetesCommandLineToolsExecutor
|
|
24
|
+
);
|
|
25
|
+
kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
|
|
26
|
+
const shellExecutor: ShellExecutor = e2eContainer.get(CLASSES.ShellExecutor);
|
|
21
27
|
|
|
22
28
|
suiteSetup('Login into OC client', function (): void {
|
|
23
29
|
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
@@ -29,7 +35,7 @@ suite('Test defining container overrides via attribute.', function (): void {
|
|
|
29
35
|
|
|
30
36
|
test('Apply container-overrides sample as DevWorkspace with OC client', function (): void {
|
|
31
37
|
kubernetesCommandLineToolsExecutor.applyYamlConfigurationAsFile(pathToSampleFile);
|
|
32
|
-
|
|
38
|
+
shellExecutor.wait(5);
|
|
33
39
|
});
|
|
34
40
|
|
|
35
41
|
test('Check that fields are overridden in the Deployment for DevWorkspace', function (): void {
|