@eclipse-che/che-e2e 7.74.0-dev-41d1364 → 7.74.0-dev-715064a

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.
Files changed (159) hide show
  1. package/.eslintrc.js +15 -1
  2. package/CODE_STYLE.md +144 -0
  3. package/configs/inversify.config.ts +26 -5
  4. package/configs/inversify.types.ts +17 -3
  5. package/constants/CHROME_DRIVER_CONSTANTS.ts +1 -13
  6. package/dist/configs/inversify.config.js +22 -1
  7. package/dist/configs/inversify.config.js.map +1 -1
  8. package/dist/configs/inversify.types.js +17 -3
  9. package/dist/configs/inversify.types.js.map +1 -1
  10. package/dist/constants/CHROME_DRIVER_CONSTANTS.js +1 -9
  11. package/dist/constants/CHROME_DRIVER_CONSTANTS.js.map +1 -1
  12. package/dist/driver/ChromeDriver.js +1 -7
  13. package/dist/driver/ChromeDriver.js.map +1 -1
  14. package/dist/index.js +9 -3
  15. package/dist/index.js.map +1 -1
  16. package/dist/pageobjects/dashboard/CreateWorkspace.js +5 -5
  17. package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -1
  18. package/dist/pageobjects/dashboard/Dashboard.js +5 -6
  19. package/dist/pageobjects/dashboard/Dashboard.js.map +1 -1
  20. package/dist/pageobjects/dashboard/Workspaces.js +34 -39
  21. package/dist/pageobjects/dashboard/Workspaces.js.map +1 -1
  22. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +27 -28
  23. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +1 -1
  24. package/dist/pageobjects/git-providers/OauthPage.js +2 -2
  25. package/dist/pageobjects/git-providers/OauthPage.js.map +1 -1
  26. package/dist/pageobjects/ide/CheCodeLocatorLoader.js +18 -4
  27. package/dist/pageobjects/ide/CheCodeLocatorLoader.js.map +1 -1
  28. package/dist/pageobjects/login/kubernetes/DexLoginPage.js +11 -11
  29. package/dist/pageobjects/login/kubernetes/DexLoginPage.js.map +1 -1
  30. package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js +2 -2
  31. package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js.map +1 -1
  32. package/dist/pageobjects/login/openshift/OcpLoginPage.js +20 -24
  33. package/dist/pageobjects/login/openshift/OcpLoginPage.js.map +1 -1
  34. package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js +10 -13
  35. package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js.map +1 -1
  36. package/dist/pageobjects/login/openshift/OcpUserLoginPage.js +3 -3
  37. package/dist/pageobjects/login/openshift/OcpUserLoginPage.js.map +1 -1
  38. package/dist/pageobjects/login/openshift/RedHatLoginPage.js +16 -20
  39. package/dist/pageobjects/login/openshift/RedHatLoginPage.js.map +1 -1
  40. package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js +16 -15
  41. package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js.map +1 -1
  42. package/dist/pageobjects/openshift/OcpApplicationPage.js +7 -7
  43. package/dist/pageobjects/openshift/OcpApplicationPage.js.map +1 -1
  44. package/dist/pageobjects/openshift/OcpImportFromGitPage.js +20 -20
  45. package/dist/pageobjects/openshift/OcpImportFromGitPage.js.map +1 -1
  46. package/dist/pageobjects/openshift/OcpMainPage.js +38 -25
  47. package/dist/pageobjects/openshift/OcpMainPage.js.map +1 -1
  48. package/dist/specs/MochaHooks.js +9 -6
  49. package/dist/specs/MochaHooks.js.map +1 -1
  50. package/dist/specs/SmokeTest.spec.js +6 -6
  51. package/dist/specs/SmokeTest.spec.js.map +1 -1
  52. package/dist/specs/api/ContainerOverridesAPI.spec.js +7 -14
  53. package/dist/specs/api/ContainerOverridesAPI.spec.js.map +1 -1
  54. package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js +11 -19
  55. package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js.map +1 -1
  56. package/dist/specs/api/EmptyWorkspaceAPI.spec.js +10 -16
  57. package/dist/specs/api/EmptyWorkspaceAPI.spec.js.map +1 -1
  58. package/dist/specs/api/PodOverridesAPI.spec.js +7 -14
  59. package/dist/specs/api/PodOverridesAPI.spec.js.map +1 -1
  60. package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js +5 -5
  61. package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js.map +1 -1
  62. package/dist/specs/dashboard-samples/Quarkus.spec.js +6 -6
  63. package/dist/specs/dashboard-samples/Quarkus.spec.js.map +1 -1
  64. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js +11 -11
  65. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js.map +1 -1
  66. package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js +11 -12
  67. package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js.map +1 -1
  68. package/dist/specs/factory/Factory.spec.js +13 -16
  69. package/dist/specs/factory/Factory.spec.js.map +1 -1
  70. package/dist/specs/factory/NoSetupRepoFactory.spec.js +17 -18
  71. package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +1 -1
  72. package/dist/specs/factory/RefusedOAuthFactory.spec.js +17 -19
  73. package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +1 -1
  74. package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +35 -41
  75. package/dist/specs/miscellaneous/PredefinedNamespace.spec.js.map +1 -1
  76. package/dist/specs/web-terminal/WebTerminalTest.spec.js +23 -0
  77. package/dist/specs/web-terminal/WebTerminalTest.spec.js.map +1 -0
  78. package/dist/tests-library/LoginTests.js +8 -8
  79. package/dist/tests-library/LoginTests.js.map +1 -1
  80. package/dist/tests-library/ProjectAndFileTests.js +2 -2
  81. package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
  82. package/dist/tests-library/WorkspaceHandlingTests.js +8 -8
  83. package/dist/tests-library/WorkspaceHandlingTests.js.map +1 -1
  84. package/dist/utils/BrowserTabsUtil.js +4 -9
  85. package/dist/utils/BrowserTabsUtil.js.map +1 -1
  86. package/dist/utils/CheReporter.js +49 -23
  87. package/dist/utils/CheReporter.js.map +1 -1
  88. package/dist/utils/DevWorkspaceConfigurationHelper.js +27 -17
  89. package/dist/utils/DevWorkspaceConfigurationHelper.js.map +1 -1
  90. package/dist/utils/DevfilesRegistryHelper.js +15 -5
  91. package/dist/utils/DevfilesRegistryHelper.js.map +1 -1
  92. package/dist/utils/DriverHelper.js +9 -2
  93. package/dist/utils/DriverHelper.js.map +1 -1
  94. package/dist/utils/IContextParams.js +12 -0
  95. package/dist/utils/IContextParams.js.map +1 -0
  96. package/dist/utils/IKubernetesCommandLineToolsExecutor.js +3 -0
  97. package/dist/utils/IKubernetesCommandLineToolsExecutor.js.map +1 -0
  98. package/dist/utils/KubernetesCommandLineToolsExecutor.js +133 -98
  99. package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +1 -1
  100. package/dist/utils/ScreenCatcher.js +8 -4
  101. package/dist/utils/ScreenCatcher.js.map +1 -1
  102. package/dist/utils/ShellExecutor.js +20 -9
  103. package/dist/utils/ShellExecutor.js.map +1 -1
  104. package/dist/utils/StringUtil.js +4 -2
  105. package/dist/utils/StringUtil.js.map +1 -1
  106. package/dist/utils/request-handlers/CheApiRequestHandler.js +2 -2
  107. package/dist/utils/request-handlers/CheApiRequestHandler.js.map +1 -1
  108. package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js +2 -2
  109. package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +1 -1
  110. package/dist/utils/workspace/ApiUrlResolver.js +2 -2
  111. package/dist/utils/workspace/ApiUrlResolver.js.map +1 -1
  112. package/dist/utils/workspace/TestWorkspaceUtil.js +4 -4
  113. package/dist/utils/workspace/TestWorkspaceUtil.js.map +1 -1
  114. package/driver/ChromeDriver.ts +0 -7
  115. package/index.ts +2 -0
  116. package/package.json +3 -3
  117. package/pageobjects/dashboard/CreateWorkspace.ts +5 -4
  118. package/pageobjects/dashboard/Dashboard.ts +3 -4
  119. package/pageobjects/dashboard/Workspaces.ts +40 -48
  120. package/pageobjects/dashboard/workspace-details/WorkspaceDetails.ts +23 -26
  121. package/pageobjects/ide/CheCodeLocatorLoader.ts +3 -1
  122. package/pageobjects/login/interfaces/ICheLoginPage.ts +1 -1
  123. package/pageobjects/login/interfaces/IOcpLoginPage.ts +1 -1
  124. package/pageobjects/login/kubernetes/DexLoginPage.ts +9 -9
  125. package/pageobjects/login/openshift/OcpLoginPage.ts +18 -30
  126. package/pageobjects/login/openshift/OcpRedHatLoginPage.ts +6 -11
  127. package/pageobjects/login/openshift/OcpUserLoginPage.ts +1 -1
  128. package/pageobjects/login/openshift/RedHatLoginPage.ts +17 -16
  129. package/pageobjects/login/openshift/RegularUserOcpCheLoginPage.ts +16 -11
  130. package/pageobjects/openshift/OcpApplicationPage.ts +5 -4
  131. package/pageobjects/openshift/OcpImportFromGitPage.ts +18 -20
  132. package/pageobjects/openshift/OcpMainPage.ts +42 -25
  133. package/specs/MochaHooks.ts +3 -5
  134. package/specs/SmokeTest.spec.ts +4 -5
  135. package/specs/api/ContainerOverridesAPI.spec.ts +8 -2
  136. package/specs/api/DevfileAcceptanceTestAPI.spec.ts +9 -7
  137. package/specs/api/EmptyWorkspaceAPI.spec.ts +8 -4
  138. package/specs/api/PodOverridesAPI.spec.ts +8 -3
  139. package/specs/dashboard-samples/EmptyWorkspace.spec.ts +5 -5
  140. package/specs/dashboard-samples/Quarkus.spec.ts +7 -6
  141. package/specs/dashboard-samples/RecommendedExtensions.spec.ts +8 -7
  142. package/specs/devconsole-intergration/DevConsoleIntegration.spec.ts +12 -11
  143. package/specs/factory/Factory.spec.ts +8 -12
  144. package/specs/factory/NoSetupRepoFactory.spec.ts +10 -11
  145. package/specs/factory/RefusedOAuthFactory.spec.ts +8 -10
  146. package/specs/miscellaneous/PredefinedNamespace.spec.ts +40 -44
  147. package/specs/web-terminal/WebTerminalTest.spec.ts +25 -0
  148. package/tests-library/LoginTests.ts +3 -3
  149. package/tests-library/WorkspaceHandlingTests.ts +2 -2
  150. package/utils/BrowserTabsUtil.ts +7 -9
  151. package/utils/CheReporter.ts +26 -20
  152. package/utils/DevWorkspaceConfigurationHelper.ts +9 -24
  153. package/utils/DevfilesRegistryHelper.ts +8 -3
  154. package/utils/DriverHelper.ts +14 -12
  155. package/utils/IContextParams.ts +26 -0
  156. package/utils/IKubernetesCommandLineToolsExecutor.ts +42 -0
  157. package/utils/KubernetesCommandLineToolsExecutor.ts +133 -101
  158. package/utils/ShellExecutor.ts +10 -7
  159. 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 dexPageContentContainer: By = By.className('dex-container');
21
- private static readonly loginInput: By = By.id('login');
22
- private static readonly passwordInput: By = By.id('password');
23
- private static readonly submitButton: By = By.id('submit-login');
20
+ 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.dexPageContentContainer, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
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.submitButton);
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.loginInput, userName);
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.passwordInput, password);
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.dexPageContentContainer, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
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 LOGIN_PAGE_OPENSHIFT_XPATH: string = '//*[contains(text(), "Welcome")]';
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 clickOnLoginProviderTitle(): Promise<void> {
40
+ async waitAndClickOnLoginProviderTitle(): Promise<void> {
38
41
  Logger.debug();
39
42
 
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);
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
- 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
+ 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
- const authorizeOpenshiftIdentityProviderPageLocator: By = By.xpath('//h1[text()="Authorize Access"]');
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
- const approveAuthorizeAccessOcpLocator: By = By.css('input[name="approve"]');
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(By.id('inputUsername'), userName);
67
+ await this.driverHelper.enterValue(OcpLoginPage.USERNAME_INPUT, userName);
79
68
  }
80
69
 
81
- async enterPasswordOpenShift(passw: string): Promise<void> {
70
+ async enterPasswordOpenShift(userPassword: string): Promise<void> {
82
71
  Logger.debug();
83
72
 
84
- await this.driverHelper.enterValue(By.id('inputPassword'), passw);
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
- const loginButtonLocator: By = By.css('button[type=submit]');
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(By.xpath(OcpLoginPage.LOGIN_PAGE_OPENSHIFT_XPATH));
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 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
+ 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
- Logger.debug('wait for LogInWithOpenShift page and click button');
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.driverHelper.waitAndClick(By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR));
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.clickOnLoginProviderTitle();
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 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';
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
- await this.driverHelper.waitVisibility(By.id(this.USERNAME_INPUT_ID));
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
- 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);
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
- const loginButtonLocator: By = By.id(this.LOGIN_BUTTON_ID);
45
- await this.driverHelper.waitAndClick(loginButtonLocator);
45
+
46
+ await this.driverHelper.waitAndClick(RedHatLoginPage.LOGIN_BUTTON);
46
47
  }
47
48
 
48
49
  async waitDisappearanceRedHatLoginWelcomePage(): Promise<void> {
49
50
  Logger.debug();
50
- await this.driverHelper.waitDisappearance(By.id(this.LOGIN_BUTTON_ID));
51
+
52
+ await this.driverHelper.waitDisappearance(RedHatLoginPage.LOGIN_BUTTON);
51
53
  }
52
54
 
53
55
  async enterUserNameRedHat(): Promise<void> {
54
56
  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);
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
- const nextButtonLocator: By = By.id(this.NEXT_BUTTON_ID);
63
- await this.driverHelper.waitAndClick(nextButtonLocator);
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 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
+ 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
- async login(): Promise<void> {
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
- Logger.debug('wait for LogInWithOpenShift page and click button');
36
- await this.driverHelper.waitPresence(
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.clickOnLoginProviderTitle();
49
+ await this.ocpLogin.waitAndClickOnLoginProviderTitle();
44
50
  }
45
51
 
46
52
  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);
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 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
+ 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.APPLICATION_ICON_LOCATOR, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
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.EDIT_SOURCE_CODE_ICON_LOCATOR);
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 GIT_URL_INPUT_LOCATOR: By = By.id('form-input-git-url-field');
22
- private static readonly SHOW_ADVANCED_GIT_OPTIONS_LINK_LOCATOR: By = By.xpath(
23
- '//*[text()="Show advanced Git options"]//ancestor::button'
24
- );
25
- private static readonly HIDE_ADVANCED_GIT_OPTIONS_LOCATOR: By = By.xpath('//*[text()="Hide advanced Git options"]');
26
- private static readonly GIT_REFERENCE_INPUT_LOCATOR: By = By.id('form-input-git-ref-field');
27
- private static readonly EDIT_IMPORT_STRATEGY_LINK_LOCATOR: By = By.xpath('//*[text()="Edit Import Strategy"]//ancestor::button');
28
- private static readonly BUILDER_IMAGE_STRATEGY_ITEM_LOCATOR: By = By.xpath('//*[text()="Builder Image"]//parent::div//parent::div');
29
- private static readonly ADD_LABEL_LINK_LOCATOR: By = By.xpath('//button[text()="Labels"]');
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.GIT_URL_INPUT_LOCATOR, gitRepoUrl);
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.HIDE_ADVANCED_GIT_OPTIONS_LOCATOR))) {
48
- await this.driverHelper.waitAndClick(OcpImportFromGitPage.SHOW_ADVANCED_GIT_OPTIONS_LINK_LOCATOR);
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.GIT_REFERENCE_INPUT_LOCATOR, gitReference);
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.EDIT_IMPORT_STRATEGY_LINK_LOCATOR);
62
- await this.driverHelper.scrollToAndClick(OcpImportFromGitPage.BUILDER_IMAGE_STRATEGY_ITEM_LOCATOR);
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.ADD_LABEL_LINK_LOCATOR);
69
- await this.driverHelper.scrollToAndEnterValue(OcpImportFromGitPage.ADD_LABEL_INPUT_LOCATOR, label);
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.SUBMIT_BUTTON_LOCATOR);
73
+ await this.driverHelper.waitAndClick(OcpImportFromGitPage.SUBMIT_BUTTON);
76
74
  return e2eContainer.get(CLASSES.OcpApplicationPage);
77
75
  }
78
76
 
@@ -19,43 +19,37 @@ import { e2eContainer } from '../../configs/inversify.config';
19
19
 
20
20
  @injectable()
21
21
  export class OcpMainPage {
22
- private static readonly MAIN_PAGE_HEADER_LOCATOR: By = By.id('page-main-header');
23
- private static readonly SELECT_ROLE_BUTTON_LOCATOR: By = By.xpath('//*[@data-test-id="perspective-switcher-toggle"]');
24
- private static readonly ADD_BUTTON_LOCATOR: By = By.xpath('//*[@data-test-id="+Add-header"]');
25
- private static readonly IMPORT_FROM_GIT_ITEM_LOCATOR: By = By.xpath('//*[@data-test="item import-from-git"]');
26
- private static readonly SELECT_PROJECT_DROPDOWN_LOCATOR: By = By.xpath('//div[@class="co-namespace-dropdown"]//button');
27
- private static readonly PROJECT_FILTER_INPUT_LOCATOR: By = By.xpath('//*[@data-test="dropdown-text-filter"]');
28
- private static readonly SKIP_TOUR_BUTTON_LOCATOR: By = By.xpath('//*[text()="Skip tour"]');
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
+ private static readonly WEB_TERMINAL_BUTTON: By = By.xpath('//button[@data-quickstart-id="qs-masthead-cloudshell"]');
30
+ private static readonly WEB_TERMINAL_PAGE: By = By.xpath('//*[@class="xterm-helper-textarea"]');
29
31
 
30
32
  constructor(
31
33
  @inject(CLASSES.DriverHelper)
32
34
  private readonly driverHelper: DriverHelper
33
35
  ) {}
34
36
 
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
37
  async waitOpenMainPage(): Promise<void> {
44
38
  Logger.debug();
45
39
 
46
- await this.driverHelper.waitVisibility(OcpMainPage.MAIN_PAGE_HEADER_LOCATOR, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
40
+ await this.driverHelper.waitVisibility(OcpMainPage.MAIN_PAGE_HEADER, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
47
41
  }
48
42
 
49
43
  async clickOnSelectRoleButton(): Promise<void> {
50
44
  Logger.debug();
51
45
 
52
- await this.driverHelper.waitAndClick(OcpMainPage.SELECT_ROLE_BUTTON_LOCATOR);
46
+ await this.driverHelper.waitAndClick(OcpMainPage.SELECT_ROLE_BUTTON);
53
47
  }
54
48
 
55
49
  async clickAddToProjectButton(): Promise<void> {
56
50
  Logger.debug();
57
51
 
58
- await this.driverHelper.waitAndClick(OcpMainPage.ADD_BUTTON_LOCATOR);
52
+ await this.driverHelper.waitAndClick(OcpMainPage.ADD_BUTTON);
59
53
  }
60
54
 
61
55
  async selectDeveloperRole(): Promise<void> {
@@ -71,7 +65,7 @@ export class OcpMainPage {
71
65
  async selectImportFromGitMethod(): Promise<OcpImportFromGitPage> {
72
66
  Logger.debug();
73
67
 
74
- await this.driverHelper.waitAndClick(OcpMainPage.IMPORT_FROM_GIT_ITEM_LOCATOR);
68
+ await this.driverHelper.waitAndClick(OcpMainPage.IMPORT_FROM_GIT_ITEM);
75
69
  return e2eContainer.get(CLASSES.OcpImportFromGitPage);
76
70
  }
77
71
 
@@ -85,22 +79,45 @@ export class OcpMainPage {
85
79
  async selectProject(projectName: string): Promise<void> {
86
80
  Logger.debug();
87
81
 
88
- await this.driverHelper.waitAndClick(OcpMainPage.SELECT_PROJECT_DROPDOWN_LOCATOR);
89
- await this.driverHelper.enterValue(OcpMainPage.PROJECT_FILTER_INPUT_LOCATOR, projectName);
90
- await this.driverHelper.waitAndClick(OcpMainPage.getProjectDropdownItemLocator(projectName));
82
+ await this.driverHelper.waitAndClick(OcpMainPage.SELECT_PROJECT_DROPDOWN);
83
+ await this.driverHelper.enterValue(OcpMainPage.PROJECT_FILTER_INPUT, projectName);
84
+ await this.driverHelper.waitAndClick(this.getProjectDropdownItemLocator(projectName));
85
+ }
86
+
87
+ async openWebTerminal(): Promise<void> {
88
+ Logger.debug();
89
+
90
+ await this.waitOpenMainPage();
91
+ await this.driverHelper.waitAndClick(OcpMainPage.WEB_TERMINAL_BUTTON);
92
+ await this.driverHelper.waitPresence(OcpMainPage.WEB_TERMINAL_PAGE, TIMEOUT_CONSTANTS.TS_IDE_LOAD_TIMEOUT);
93
+ }
94
+
95
+ async typeToWebTerminal(text: string): Promise<void> {
96
+ Logger.debug();
97
+
98
+ await this.driverHelper.waitPresence(OcpMainPage.WEB_TERMINAL_PAGE, TIMEOUT_CONSTANTS.TS_IDE_LOAD_TIMEOUT);
99
+ await this.driverHelper.typeToInvisible(OcpMainPage.WEB_TERMINAL_PAGE, text);
100
+ }
101
+
102
+ private getRoleLocator(role: string): By {
103
+ return By.xpath(`//a//*[text()="${role}"]`);
104
+ }
105
+
106
+ private getProjectDropdownItemLocator(projectName: string): By {
107
+ return By.xpath(`//button//*[text()="${projectName}"]`);
91
108
  }
92
109
 
93
110
  private async selectRole(role: string): Promise<void> {
94
111
  Logger.debug(`selecting role ${role}`);
95
112
 
96
- await this.driverHelper.waitAndClick(OcpMainPage.getRoleLocator(role));
113
+ await this.driverHelper.waitAndClick(this.getRoleLocator(role));
97
114
  }
98
115
 
99
116
  private async tryToSkipWebTour(): Promise<void> {
100
117
  Logger.debug();
101
118
 
102
- if (await this.driverHelper.isVisible(OcpMainPage.SKIP_TOUR_BUTTON_LOCATOR)) {
103
- await this.driverHelper.waitAndClick(OcpMainPage.SKIP_TOUR_BUTTON_LOCATOR);
119
+ if (await this.driverHelper.isVisible(OcpMainPage.SKIP_TOUR_BUTTON)) {
120
+ await this.driverHelper.waitAndClick(OcpMainPage.SKIP_TOUR_BUTTON);
104
121
 
105
122
  Logger.debug('welcome tour modal dialog was located and skipped');
106
123
  } else {
@@ -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
- // await
71
+ const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
74
72
  testWorkspaceUtil.stopAndDeleteWorkspaceByName(latestWorkspace);
75
73
  }
76
74
  }
@@ -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 = new KubernetesCommandLineToolsExecutor(workspaceName);
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
- ShellExecutor.wait(5);
38
+ shellExecutor.wait(5);
33
39
  });
34
40
 
35
41
  test('Check that fields are overridden in the Deployment for DevWorkspace', function (): void {