@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.
Files changed (229) hide show
  1. package/.eslintignore +10 -0
  2. package/.eslintrc.js +197 -0
  3. package/.prettierignore +10 -0
  4. package/.prettierrc.json +10 -0
  5. package/CODE_STYLE.md +144 -0
  6. package/README.md +47 -47
  7. package/configs/inversify.config.ts +39 -14
  8. package/configs/inversify.types.ts +44 -30
  9. package/configs/mocharc.ts +21 -24
  10. package/constants/API_TEST_CONSTANTS.ts +67 -0
  11. package/constants/BASE_TEST_CONSTANTS.ts +80 -0
  12. package/constants/CHROME_DRIVER_CONSTANTS.ts +42 -0
  13. package/constants/FACTORY_TEST_CONSTANTS.ts +61 -0
  14. package/constants/MONACO_CONSTANTS.ts +25 -0
  15. package/constants/OAUTH_CONSTANTS.ts +67 -0
  16. package/constants/PLUGIN_TEST_CONSTANTS.ts +15 -0
  17. package/constants/REPORTER_CONSTANTS.ts +53 -0
  18. package/constants/TIMEOUT_CONSTANTS.ts +131 -0
  19. package/dist/configs/inversify.config.js +36 -9
  20. package/dist/configs/inversify.config.js.map +1 -1
  21. package/dist/configs/inversify.types.js +19 -5
  22. package/dist/configs/inversify.types.js.map +1 -1
  23. package/dist/configs/mocharc.js +13 -16
  24. package/dist/configs/mocharc.js.map +1 -1
  25. package/dist/constants/{APITestConstants.js → API_TEST_CONSTANTS.js} +12 -12
  26. package/dist/constants/API_TEST_CONSTANTS.js.map +1 -0
  27. package/dist/constants/{BaseTestConstants.js → BASE_TEST_CONSTANTS.js} +16 -16
  28. package/dist/constants/BASE_TEST_CONSTANTS.js.map +1 -0
  29. package/dist/constants/CHROME_DRIVER_CONSTANTS.js +36 -0
  30. package/dist/constants/CHROME_DRIVER_CONSTANTS.js.map +1 -0
  31. package/dist/constants/{FactoryTestConstants.js → FACTORY_TEST_CONSTANTS.js} +14 -13
  32. package/dist/constants/FACTORY_TEST_CONSTANTS.js.map +1 -0
  33. package/dist/constants/{MonacoConstants.js → MONACO_CONSTANTS.js} +7 -7
  34. package/dist/constants/MONACO_CONSTANTS.js.map +1 -0
  35. package/dist/constants/{OAuthConstants.js → OAUTH_CONSTANTS.js} +14 -14
  36. package/dist/constants/OAUTH_CONSTANTS.js.map +1 -0
  37. package/dist/constants/{PluginsTestConstants.js → PLUGIN_TEST_CONSTANTS.js} +7 -7
  38. package/dist/constants/PLUGIN_TEST_CONSTANTS.js.map +1 -0
  39. package/dist/constants/{ReporterConstants.js → REPORTER_CONSTANTS.js} +12 -12
  40. package/dist/constants/REPORTER_CONSTANTS.js.map +1 -0
  41. package/dist/constants/{TimeoutConstants.js → TIMEOUT_CONSTANTS.js} +24 -24
  42. package/dist/constants/TIMEOUT_CONSTANTS.js.map +1 -0
  43. package/dist/driver/ChromeDriver.js +12 -22
  44. package/dist/driver/ChromeDriver.js.map +1 -1
  45. package/dist/index.js +18 -12
  46. package/dist/index.js.map +1 -1
  47. package/dist/pageobjects/dashboard/CreateWorkspace.js +15 -15
  48. package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -1
  49. package/dist/pageobjects/dashboard/Dashboard.js +20 -21
  50. package/dist/pageobjects/dashboard/Dashboard.js.map +1 -1
  51. package/dist/pageobjects/dashboard/Workspaces.js +55 -60
  52. package/dist/pageobjects/dashboard/Workspaces.js.map +1 -1
  53. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +58 -48
  54. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +1 -1
  55. package/dist/pageobjects/git-providers/OauthPage.js +22 -20
  56. package/dist/pageobjects/git-providers/OauthPage.js.map +1 -1
  57. package/dist/pageobjects/ide/CheCodeLocatorLoader.js +26 -12
  58. package/dist/pageobjects/ide/CheCodeLocatorLoader.js.map +1 -1
  59. package/dist/pageobjects/login/interfaces/ICheLoginPage.js +2 -2
  60. package/dist/pageobjects/login/interfaces/IOcpLoginPage.js +2 -2
  61. package/dist/pageobjects/login/kubernetes/DexLoginPage.js +14 -14
  62. package/dist/pageobjects/login/kubernetes/DexLoginPage.js.map +1 -1
  63. package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js +7 -7
  64. package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js.map +1 -1
  65. package/dist/pageobjects/login/openshift/OcpLoginPage.js +24 -28
  66. package/dist/pageobjects/login/openshift/OcpLoginPage.js.map +1 -1
  67. package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js +13 -16
  68. package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js.map +1 -1
  69. package/dist/pageobjects/login/openshift/OcpUserLoginPage.js +9 -9
  70. package/dist/pageobjects/login/openshift/OcpUserLoginPage.js.map +1 -1
  71. package/dist/pageobjects/login/openshift/RedHatLoginPage.js +19 -23
  72. package/dist/pageobjects/login/openshift/RedHatLoginPage.js.map +1 -1
  73. package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js +20 -19
  74. package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js.map +1 -1
  75. package/dist/pageobjects/openshift/OcpApplicationPage.js +11 -11
  76. package/dist/pageobjects/openshift/OcpApplicationPage.js.map +1 -1
  77. package/dist/pageobjects/openshift/OcpImportFromGitPage.js +24 -24
  78. package/dist/pageobjects/openshift/OcpImportFromGitPage.js.map +1 -1
  79. package/dist/pageobjects/openshift/OcpMainPage.js +30 -30
  80. package/dist/pageobjects/openshift/OcpMainPage.js.map +1 -1
  81. package/dist/specs/MochaHooks.js +33 -27
  82. package/dist/specs/MochaHooks.js.map +1 -1
  83. package/dist/specs/SmokeTest.spec.js +17 -17
  84. package/dist/specs/SmokeTest.spec.js.map +1 -1
  85. package/dist/specs/api/ContainerOverridesAPI.spec.js +8 -6
  86. package/dist/specs/api/ContainerOverridesAPI.spec.js.map +1 -1
  87. package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js +27 -24
  88. package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js.map +1 -1
  89. package/dist/specs/api/EmptyWorkspaceAPI.spec.js +17 -17
  90. package/dist/specs/api/EmptyWorkspaceAPI.spec.js.map +1 -1
  91. package/dist/specs/api/PodOverridesAPI.spec.js +10 -8
  92. package/dist/specs/api/PodOverridesAPI.spec.js.map +1 -1
  93. package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js +10 -10
  94. package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js.map +1 -1
  95. package/dist/specs/dashboard-samples/Quarkus.spec.js +13 -13
  96. package/dist/specs/dashboard-samples/Quarkus.spec.js.map +1 -1
  97. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js +52 -52
  98. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js.map +1 -1
  99. package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js +23 -19
  100. package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js.map +1 -1
  101. package/dist/specs/factory/Factory.spec.js +38 -41
  102. package/dist/specs/factory/Factory.spec.js.map +1 -1
  103. package/dist/specs/factory/NoSetupRepoFactory.spec.js +52 -50
  104. package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +1 -1
  105. package/dist/specs/factory/RefusedOAuthFactory.spec.js +49 -51
  106. package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +1 -1
  107. package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +45 -42
  108. package/dist/specs/miscellaneous/PredefinedNamespace.spec.js.map +1 -1
  109. package/dist/tests-library/LoginTests.js +13 -13
  110. package/dist/tests-library/LoginTests.js.map +1 -1
  111. package/dist/tests-library/ProjectAndFileTests.js +9 -7
  112. package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
  113. package/dist/tests-library/WorkspaceHandlingTests.js +22 -19
  114. package/dist/tests-library/WorkspaceHandlingTests.js.map +1 -1
  115. package/dist/utils/BrowserTabsUtil.js +21 -21
  116. package/dist/utils/BrowserTabsUtil.js.map +1 -1
  117. package/dist/utils/CheReporter.js +91 -65
  118. package/dist/utils/CheReporter.js.map +1 -1
  119. package/dist/utils/DevWorkspaceConfigurationHelper.js +34 -15
  120. package/dist/utils/DevWorkspaceConfigurationHelper.js.map +1 -1
  121. package/dist/utils/DevfilesRegistryHelper.js +34 -18
  122. package/dist/utils/DevfilesRegistryHelper.js.map +1 -1
  123. package/dist/utils/DriverHelper.js +73 -68
  124. package/dist/utils/DriverHelper.js.map +1 -1
  125. package/dist/utils/IContextParams.js +12 -0
  126. package/dist/utils/IContextParams.js.map +1 -0
  127. package/dist/utils/IKubernetesCommandLineToolsExecutor.js +3 -0
  128. package/dist/utils/IKubernetesCommandLineToolsExecutor.js.map +1 -0
  129. package/dist/utils/KubernetesCommandLineToolsExecutor.js +146 -107
  130. package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +1 -1
  131. package/dist/utils/Logger.js +18 -19
  132. package/dist/utils/Logger.js.map +1 -1
  133. package/dist/utils/ScreenCatcher.js +26 -16
  134. package/dist/utils/ScreenCatcher.js.map +1 -1
  135. package/dist/utils/ShellExecutor.js +29 -9
  136. package/dist/utils/ShellExecutor.js.map +1 -1
  137. package/dist/utils/StringUtil.js +19 -9
  138. package/dist/utils/StringUtil.js.map +1 -1
  139. package/dist/utils/request-handlers/CheApiRequestHandler.js +29 -29
  140. package/dist/utils/request-handlers/CheApiRequestHandler.js.map +1 -1
  141. package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js +12 -8
  142. package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +1 -1
  143. package/dist/utils/request-handlers/headers/IAuthorizationHeaderHandler.js +2 -2
  144. package/dist/utils/workspace/ApiUrlResolver.js +5 -5
  145. package/dist/utils/workspace/ApiUrlResolver.js.map +1 -1
  146. package/dist/utils/workspace/ITestWorkspaceUtil.js +2 -2
  147. package/dist/utils/workspace/TestWorkspaceUtil.js +25 -23
  148. package/dist/utils/workspace/TestWorkspaceUtil.js.map +1 -1
  149. package/dist/utils/workspace/WorkspaceStatus.js +2 -2
  150. package/dist/utils/workspace/WorkspaceStatus.js.map +1 -1
  151. package/driver/ChromeDriver.ts +45 -58
  152. package/driver/IDriver.ts +3 -3
  153. package/index.ts +11 -9
  154. package/package.json +59 -49
  155. package/pageobjects/dashboard/CreateWorkspace.ts +65 -55
  156. package/pageobjects/dashboard/Dashboard.ts +100 -100
  157. package/pageobjects/dashboard/Workspaces.ts +210 -186
  158. package/pageobjects/dashboard/workspace-details/WorkspaceDetails.ts +153 -131
  159. package/pageobjects/git-providers/OauthPage.ts +177 -166
  160. package/pageobjects/ide/CheCodeLocatorLoader.ts +51 -46
  161. package/pageobjects/login/interfaces/ICheLoginPage.ts +3 -3
  162. package/pageobjects/login/interfaces/IOcpLoginPage.ts +3 -3
  163. package/pageobjects/login/kubernetes/DexLoginPage.ts +31 -30
  164. package/pageobjects/login/kubernetes/KubernetesLoginPage.ts +15 -14
  165. package/pageobjects/login/openshift/OcpLoginPage.ts +51 -56
  166. package/pageobjects/login/openshift/OcpRedHatLoginPage.ts +27 -27
  167. package/pageobjects/login/openshift/OcpUserLoginPage.ts +15 -18
  168. package/pageobjects/login/openshift/RedHatLoginPage.ts +49 -46
  169. package/pageobjects/login/openshift/RegularUserOcpCheLoginPage.ts +43 -34
  170. package/pageobjects/openshift/OcpApplicationPage.ts +21 -19
  171. package/pageobjects/openshift/OcpImportFromGitPage.ts +68 -68
  172. package/pageobjects/openshift/OcpMainPage.ts +69 -69
  173. package/specs/MochaHooks.ts +59 -52
  174. package/specs/SmokeTest.spec.ts +47 -45
  175. package/specs/api/ContainerOverridesAPI.spec.ts +39 -26
  176. package/specs/api/DevfileAcceptanceTestAPI.spec.ts +110 -97
  177. package/specs/api/EmptyWorkspaceAPI.spec.ts +67 -58
  178. package/specs/api/PodOverridesAPI.spec.ts +48 -34
  179. package/specs/dashboard-samples/EmptyWorkspace.spec.ts +36 -36
  180. package/specs/dashboard-samples/Quarkus.spec.ts +41 -40
  181. package/specs/dashboard-samples/RecommendedExtensions.spec.ts +202 -183
  182. package/specs/devconsole-intergration/DevConsoleIntegration.spec.ts +85 -75
  183. package/specs/factory/Factory.spec.ts +184 -178
  184. package/specs/factory/NoSetupRepoFactory.spec.ts +233 -219
  185. package/specs/factory/RefusedOAuthFactory.spec.ts +223 -211
  186. package/specs/miscellaneous/PredefinedNamespace.spec.ts +70 -64
  187. package/tests-library/LoginTests.ts +34 -32
  188. package/tests-library/ProjectAndFileTests.ts +21 -18
  189. package/tests-library/WorkspaceHandlingTests.ts +98 -89
  190. package/tsconfig.json +15 -15
  191. package/utils/BrowserTabsUtil.ts +78 -74
  192. package/utils/CheReporter.ts +159 -157
  193. package/utils/DevWorkspaceConfigurationHelper.ts +63 -69
  194. package/utils/DevfilesRegistryHelper.ts +71 -57
  195. package/utils/DriverHelper.ts +728 -700
  196. package/utils/IContextParams.ts +26 -0
  197. package/utils/IKubernetesCommandLineToolsExecutor.ts +42 -0
  198. package/utils/KubernetesCommandLineToolsExecutor.ts +231 -183
  199. package/utils/Logger.ts +102 -125
  200. package/utils/ScreenCatcher.ts +57 -46
  201. package/utils/ShellExecutor.ts +23 -12
  202. package/utils/StringUtil.ts +49 -36
  203. package/utils/request-handlers/CheApiRequestHandler.ts +91 -88
  204. package/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.ts +32 -21
  205. package/utils/request-handlers/headers/IAuthorizationHeaderHandler.ts +3 -3
  206. package/utils/workspace/ApiUrlResolver.ts +31 -26
  207. package/utils/workspace/ITestWorkspaceUtil.ts +31 -31
  208. package/utils/workspace/TestWorkspaceUtil.ts +152 -145
  209. package/utils/workspace/WorkspaceStatus.ts +5 -5
  210. package/constants/APITestConstants.ts +0 -57
  211. package/constants/BaseTestConstants.ts +0 -68
  212. package/constants/ChromeDriverConstants.ts +0 -46
  213. package/constants/FactoryTestConstants.ts +0 -51
  214. package/constants/MonacoConstants.ts +0 -22
  215. package/constants/OAuthConstants.ts +0 -57
  216. package/constants/PluginsTestConstants.ts +0 -15
  217. package/constants/ReporterConstants.ts +0 -45
  218. package/constants/TimeoutConstants.ts +0 -113
  219. package/dist/constants/APITestConstants.js.map +0 -1
  220. package/dist/constants/BaseTestConstants.js.map +0 -1
  221. package/dist/constants/ChromeDriverConstants.js +0 -44
  222. package/dist/constants/ChromeDriverConstants.js.map +0 -1
  223. package/dist/constants/FactoryTestConstants.js.map +0 -1
  224. package/dist/constants/MonacoConstants.js.map +0 -1
  225. package/dist/constants/OAuthConstants.js.map +0 -1
  226. package/dist/constants/PluginsTestConstants.js.map +0 -1
  227. package/dist/constants/ReporterConstants.js.map +0 -1
  228. package/dist/constants/TimeoutConstants.js.map +0 -1
  229. package/tslint.json +0 -126
@@ -1,5 +1,5 @@
1
- /*********************************************************************
2
- * Copyright (c) 2019-2023 Red Hat, Inc.
1
+ /** *******************************************************************
2
+ * copyright (c) 2019-2023 Red Hat, Inc.
3
3
  *
4
4
  * This program and the accompanying materials are made
5
5
  * available under the terms of the Eclipse Public License 2.0
@@ -13,80 +13,75 @@ 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 { TimeoutConstants } from '../../../constants/TimeoutConstants';
17
- import { OAuthConstants } from '../../../constants/OAuthConstants';
16
+ import { TIMEOUT_CONSTANTS } from '../../../constants/TIMEOUT_CONSTANTS';
17
+ import { OAUTH_CONSTANTS } from '../../../constants/OAUTH_CONSTANTS';
18
18
 
19
19
  @injectable()
20
20
  export class OcpLoginPage {
21
+ private static readonly LOGIN_PAGE_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');
21
28
 
22
- private static readonly LOGIN_PAGE_OPENSHIFT_XPATH: string = '//*[contains(text(), \'Welcome\')]';
29
+ constructor(
30
+ @inject(CLASSES.DriverHelper)
31
+ private readonly driverHelper: DriverHelper
32
+ ) {}
23
33
 
24
- constructor(
25
- @inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper) { }
34
+ async waitOpenShiftLoginWelcomePage(): Promise<void> {
35
+ Logger.debug();
26
36
 
27
- async waitOpenShiftLoginWelcomePage(): Promise<void> {
28
- Logger.debug();
37
+ await this.driverHelper.waitVisibility(OcpLoginPage.LOGIN_PAGE_WELCOME_MESSAGE, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
38
+ }
29
39
 
30
- await this.driverHelper.waitVisibility(By.xpath(OcpLoginPage.LOGIN_PAGE_OPENSHIFT_XPATH), TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
31
- }
40
+ async waitAndClickOnLoginProviderTitle(): Promise<void> {
41
+ Logger.debug();
32
42
 
33
- async clickOnLoginProviderTitle(): Promise<void> {
34
- Logger.debug();
43
+ await this.driverHelper.waitAndClick(OcpLoginPage.LOGIN_PROVIDER_BUTTON, TIMEOUT_CONSTANTS.TS_SELENIUM_WAIT_FOR_URL);
44
+ }
35
45
 
36
- const loginProviderTitleLocator: By = By.xpath(`//a[text()=\'${OAuthConstants.TS_OCP_LOGIN_PAGE_PROVIDER_TITLE}\']`);
37
- await this.driverHelper.waitAndClick(loginProviderTitleLocator, TimeoutConstants.TS_SELENIUM_WAIT_FOR_URL);
38
- }
46
+ async isIdentityProviderLinkVisible(): Promise<boolean> {
47
+ Logger.debug();
39
48
 
40
- async isIdentityProviderLinkVisible(): Promise<boolean> {
41
- Logger.debug();
49
+ return await this.driverHelper.waitVisibilityBoolean(OcpLoginPage.LOGIN_PROVIDER_BUTTON, 3, 5000);
50
+ }
42
51
 
43
- const loginWithHtpaswdLocator: By = By.xpath(`//a[text()=\'${OAuthConstants.TS_OCP_LOGIN_PAGE_PROVIDER_TITLE}\']`);
44
- return await this.driverHelper.waitVisibilityBoolean(loginWithHtpaswdLocator, 3, 5000);
45
- }
52
+ async isAuthorizeOpenShiftIdentityProviderPageVisible(): Promise<boolean> {
53
+ Logger.debug();
46
54
 
47
- async isAuthorizeOpenShiftIdentityProviderPageVisible(): Promise<boolean> {
48
- Logger.debug();
55
+ return await this.driverHelper.isVisible(OcpLoginPage.AUTHORIZE_OPENSHIFT_ACCESS_HEADER);
56
+ }
49
57
 
50
- const authorizeOpenshiftIdentityProviderPageLocator: By = By.xpath('//h1[text()=\'Authorize Access\']');
51
- return await this.driverHelper.isVisible(authorizeOpenshiftIdentityProviderPageLocator);
52
- }
58
+ async clickOnApproveAuthorizeAccessButton(): Promise<void> {
59
+ Logger.debug();
53
60
 
54
- async waitAuthorizeOpenShiftIdentityProviderPage(): Promise<void> {
55
- Logger.debug();
61
+ await this.driverHelper.waitAndClick(OcpLoginPage.APPROVE_ACCESS_BUTTON);
62
+ }
56
63
 
57
- const authorizeOpenshiftIdentityProviderPageLocator: By = By.xpath('//h1[text()=\'Authorize Access\']');
58
- await this.driverHelper.waitVisibility(authorizeOpenshiftIdentityProviderPageLocator, TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
59
- }
64
+ async enterUserNameOpenShift(userName: string): Promise<void> {
65
+ Logger.debug(`"${userName}"`);
60
66
 
61
- async clickOnApproveAuthorizeAccessButton(): Promise<void> {
62
- Logger.debug();
67
+ await this.driverHelper.enterValue(OcpLoginPage.USERNAME_INPUT, userName);
68
+ }
63
69
 
64
- const approveAuthorizeAccessOcpLocator: By = By.css('input[name=\'approve\']');
65
- await this.driverHelper.waitAndClick(approveAuthorizeAccessOcpLocator);
66
- }
70
+ async enterPasswordOpenShift(userPassword: string): Promise<void> {
71
+ Logger.debug();
67
72
 
68
- async enterUserNameOpenShift(userName: string): Promise<void> {
69
- Logger.debug(`"${userName}"`);
73
+ await this.driverHelper.enterValue(OcpLoginPage.PASSWORD_INPUT, userPassword);
74
+ }
70
75
 
71
- await this.driverHelper.enterValue(By.id('inputUsername'), userName);
72
- }
76
+ async clickOnLoginButton(): Promise<void> {
77
+ Logger.debug();
73
78
 
74
- async enterPasswordOpenShift(passw: string): Promise<void> {
75
- Logger.debug();
79
+ await this.driverHelper.waitAndClick(OcpLoginPage.LOGIN_BUTTON);
80
+ }
76
81
 
77
- await this.driverHelper.enterValue(By.id('inputPassword'), passw);
78
- }
82
+ async waitDisappearanceOpenShiftLoginWelcomePage(): Promise<void> {
83
+ Logger.debug();
79
84
 
80
- async clickOnLoginButton(): Promise<void> {
81
- Logger.debug();
82
-
83
- const loginButtonLocator: By = By.css('button[type=submit]');
84
- await this.driverHelper.waitAndClick(loginButtonLocator);
85
- }
86
-
87
- async waitDisappearanceOpenShiftLoginWelcomePage(): Promise<void> {
88
- Logger.debug();
89
-
90
- await this.driverHelper.waitDisappearance(By.xpath(OcpLoginPage.LOGIN_PAGE_OPENSHIFT_XPATH));
91
- }
85
+ await this.driverHelper.waitDisappearance(OcpLoginPage.LOGIN_PAGE_WELCOME_MESSAGE);
86
+ }
92
87
  }
@@ -1,5 +1,5 @@
1
- /*********************************************************************
2
- * Copyright (c) 2019 Red Hat, Inc.
1
+ /** *******************************************************************
2
+ * copyright (c) 2019 Red Hat, Inc.
3
3
  *
4
4
  * This program and the accompanying materials are made
5
5
  * available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,7 @@ import { inject, injectable } from 'inversify';
12
12
  import { RedHatLoginPage } from './RedHatLoginPage';
13
13
  import { CLASSES } from '../../../configs/inversify.types';
14
14
  import { By } from 'selenium-webdriver';
15
- import { TimeoutConstants } from '../../../constants/TimeoutConstants';
15
+ import { TIMEOUT_CONSTANTS } from '../../../constants/TIMEOUT_CONSTANTS';
16
16
  import { ICheLoginPage } from '../interfaces/ICheLoginPage';
17
17
  import { OcpLoginPage } from './OcpLoginPage';
18
18
  import { DriverHelper } from '../../../utils/DriverHelper';
@@ -20,30 +20,30 @@ import { Logger } from '../../../utils/Logger';
20
20
 
21
21
  @injectable()
22
22
  export class OcpRedHatLoginPage implements ICheLoginPage {
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
+ );
23
26
 
24
- private readonly OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR: string = `//div[@class='panel-login']`;
25
- private readonly OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR: string = `${this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR}/div[contains(@class, 'panel-content')]/form/button`;
27
+ constructor(
28
+ @inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage,
29
+ @inject(CLASSES.RedHatLoginPage)
30
+ private readonly redHatLogin: RedHatLoginPage,
31
+ @inject(CLASSES.DriverHelper)
32
+ private readonly driverHelper: DriverHelper
33
+ ) {}
26
34
 
27
- constructor(
28
- @inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage,
29
- @inject(CLASSES.RedHatLoginPage) private readonly redHatLogin: RedHatLoginPage,
30
- @inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper) { }
31
-
32
- async login(): Promise<void> {
33
- Logger.debug();
34
-
35
- Logger.debug('wait for LogInWithOpenShift page and click button');
36
- await this.driverHelper.waitPresence(By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR), TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
37
- await this.driverHelper.waitAndClick(By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR));
38
-
39
- await this.ocpLogin.isIdentityProviderLinkVisible();
40
- await this.ocpLogin.clickOnLoginProviderTitle();
41
-
42
- await this.redHatLogin.waitRedHatLoginWelcomePage();
43
- await this.redHatLogin.enterUserNameRedHat();
44
- await this.redHatLogin.clickNextButton();
45
- await this.redHatLogin.enterPasswordRedHat();
46
- await this.redHatLogin.clickOnLoginButton();
47
- await this.redHatLogin.waitDisappearanceRedHatLoginWelcomePage();
48
- }
35
+ async login(): Promise<void> {
36
+ Logger.debug();
37
+ await this.driverHelper.waitAndClick(
38
+ OcpRedHatLoginPage.OPENSHIFT_LOGIN_LANDING_PAGE_BUTTON,
39
+ TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT
40
+ );
41
+ await this.ocpLogin.waitAndClickOnLoginProviderTitle();
42
+ await this.redHatLogin.waitRedHatLoginWelcomePage();
43
+ await this.redHatLogin.enterUserNameRedHat();
44
+ await this.redHatLogin.clickNextButton();
45
+ await this.redHatLogin.enterPasswordRedHat();
46
+ await this.redHatLogin.clickOnLoginButton();
47
+ await this.redHatLogin.waitDisappearanceRedHatLoginWelcomePage();
48
+ }
49
49
  }
@@ -1,5 +1,5 @@
1
- /*********************************************************************
2
- * Copyright (c) 2019-2023 Red Hat, Inc.
1
+ /** *******************************************************************
2
+ * copyright (c) 2019-2023 Red Hat, Inc.
3
3
  *
4
4
  * This program and the accompanying materials are made
5
5
  * available under the terms of the Eclipse Public License 2.0
@@ -13,26 +13,23 @@ import { inject, injectable } from 'inversify';
13
13
  import { OcpLoginPage } from './OcpLoginPage';
14
14
  import { CLASSES } from '../../../configs/inversify.types';
15
15
  import { Logger } from '../../../utils/Logger';
16
- import { OAuthConstants } from '../../../constants/OAuthConstants';
16
+ import { OAUTH_CONSTANTS } from '../../../constants/OAUTH_CONSTANTS';
17
17
 
18
18
  @injectable()
19
19
  export class OcpUserLoginPage implements IOcpLoginPage {
20
+ constructor(@inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage) {}
20
21
 
21
- constructor(
22
- @inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage) { }
22
+ async login(): Promise<void> {
23
+ Logger.debug();
23
24
 
24
- async login(): Promise<void> {
25
- Logger.debug();
26
-
27
- if (OAuthConstants.TS_OCP_LOGIN_PAGE_PROVIDER_TITLE !== '') {
28
- await this.ocpLogin.clickOnLoginProviderTitle();
29
- }
30
-
31
- await this.ocpLogin.waitOpenShiftLoginWelcomePage();
32
- await this.ocpLogin.enterUserNameOpenShift(OAuthConstants.TS_SELENIUM_OCP_USERNAME);
33
- await this.ocpLogin.enterPasswordOpenShift(OAuthConstants.TS_SELENIUM_OCP_PASSWORD);
34
- await this.ocpLogin.clickOnLoginButton();
35
- await this.ocpLogin.waitDisappearanceOpenShiftLoginWelcomePage();
36
- }
25
+ if (OAUTH_CONSTANTS.TS_OCP_LOGIN_PAGE_PROVIDER_TITLE !== '') {
26
+ await this.ocpLogin.waitAndClickOnLoginProviderTitle();
27
+ }
37
28
 
29
+ await this.ocpLogin.waitOpenShiftLoginWelcomePage();
30
+ await this.ocpLogin.enterUserNameOpenShift(OAUTH_CONSTANTS.TS_SELENIUM_OCP_USERNAME);
31
+ await this.ocpLogin.enterPasswordOpenShift(OAUTH_CONSTANTS.TS_SELENIUM_OCP_PASSWORD);
32
+ await this.ocpLogin.clickOnLoginButton();
33
+ await this.ocpLogin.waitDisappearanceOpenShiftLoginWelcomePage();
34
+ }
38
35
  }
@@ -1,5 +1,5 @@
1
- /*********************************************************************
2
- * Copyright (c) 2019 Red Hat, Inc.
1
+ /** *******************************************************************
2
+ * copyright (c) 2019 Red Hat, Inc.
3
3
  *
4
4
  * This program and the accompanying materials are made
5
5
  * available under the terms of the Eclipse Public License 2.0
@@ -13,51 +13,54 @@ import { By } from 'selenium-webdriver';
13
13
  import { CLASSES } from '../../../configs/inversify.types';
14
14
  import { DriverHelper } from '../../../utils/DriverHelper';
15
15
  import { Logger } from '../../../utils/Logger';
16
- import { OAuthConstants } from '../../../constants/OAuthConstants';
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';
24
-
25
- constructor(
26
- @inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper) { }
27
-
28
- async waitRedHatLoginWelcomePage(): Promise<void> {
29
- Logger.debug();
30
- await this.driverHelper.waitVisibility(By.id(this.USERNAME_INPUT_ID));
31
- }
32
-
33
- async enterPasswordRedHat(): Promise<void> {
34
- Logger.debug();
35
- const passwordFieldLocator: By = By.id(this.PASSWORD_INPUT_ID);
36
- await this.driverHelper.waitVisibility(passwordFieldLocator, 3000);
37
- await this.driverHelper.enterValue(passwordFieldLocator, OAuthConstants.TS_SELENIUM_OCP_PASSWORD);
38
- }
39
-
40
- async clickOnLoginButton(): Promise<void> {
41
- Logger.debug();
42
- const loginButtonLocator: By = By.id(this.LOGIN_BUTTON_ID);
43
- await this.driverHelper.waitAndClick(loginButtonLocator);
44
- }
45
-
46
- async waitDisappearanceRedHatLoginWelcomePage(): Promise<void> {
47
- Logger.debug();
48
- await this.driverHelper.waitDisappearance(By.id(this.LOGIN_BUTTON_ID));
49
- }
50
-
51
- async enterUserNameRedHat(): Promise<void> {
52
- Logger.debug();
53
- const usernameFieldLocator: By = By.id(this.USERNAME_INPUT_ID);
54
- await this.driverHelper.waitVisibility(usernameFieldLocator, 20000);
55
- await this.driverHelper.enterValue(usernameFieldLocator, OAuthConstants.TS_SELENIUM_OCP_USERNAME);
56
- }
57
-
58
- async clickNextButton(): Promise<void> {
59
- Logger.debug();
60
- const nextButtonLocator: By = By.id(this.NEXT_BUTTON_ID);
61
- await this.driverHelper.waitAndClick(nextButtonLocator);
62
- }
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');
25
+
26
+ constructor(
27
+ @inject(CLASSES.DriverHelper)
28
+ private readonly driverHelper: DriverHelper
29
+ ) {}
30
+
31
+ async waitRedHatLoginWelcomePage(): Promise<void> {
32
+ Logger.debug();
33
+
34
+ await this.driverHelper.waitVisibility(RedHatLoginPage.USERNAME_INPUT, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
35
+ }
36
+
37
+ async enterPasswordRedHat(): Promise<void> {
38
+ Logger.debug();
39
+
40
+ await this.driverHelper.enterValue(RedHatLoginPage.PASSWORD_INPUT, OAUTH_CONSTANTS.TS_SELENIUM_OCP_PASSWORD);
41
+ }
42
+
43
+ async clickOnLoginButton(): Promise<void> {
44
+ Logger.debug();
45
+
46
+ await this.driverHelper.waitAndClick(RedHatLoginPage.LOGIN_BUTTON);
47
+ }
48
+
49
+ async waitDisappearanceRedHatLoginWelcomePage(): Promise<void> {
50
+ Logger.debug();
51
+
52
+ await this.driverHelper.waitDisappearance(RedHatLoginPage.LOGIN_BUTTON);
53
+ }
54
+
55
+ async enterUserNameRedHat(): Promise<void> {
56
+ Logger.debug();
57
+
58
+ await this.driverHelper.enterValue(RedHatLoginPage.USERNAME_INPUT, OAUTH_CONSTANTS.TS_SELENIUM_OCP_USERNAME);
59
+ }
60
+
61
+ async clickNextButton(): Promise<void> {
62
+ Logger.debug();
63
+
64
+ await this.driverHelper.waitAndClick(RedHatLoginPage.NEXT_BUTTON);
65
+ }
63
66
  }
@@ -1,5 +1,5 @@
1
- /*********************************************************************
2
- * Copyright (c) 2019-2023 Red Hat, Inc.
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,41 +13,50 @@ import { OcpLoginPage } from './OcpLoginPage';
13
13
  import { inject, injectable } from 'inversify';
14
14
  import { CLASSES } from '../../../configs/inversify.types';
15
15
  import { Logger } from '../../../utils/Logger';
16
- import { TimeoutConstants } from '../../../constants/TimeoutConstants';
16
+ import { TIMEOUT_CONSTANTS } from '../../../constants/TIMEOUT_CONSTANTS';
17
17
  import { By } from 'selenium-webdriver';
18
18
  import { DriverHelper } from '../../../utils/DriverHelper';
19
- import { OAuthConstants } from '../../../constants/OAuthConstants';
19
+ import { OAUTH_CONSTANTS } from '../../../constants/OAUTH_CONSTANTS';
20
20
 
21
21
  @injectable()
22
22
  export class RegularUserOcpCheLoginPage implements ICheLoginPage {
23
-
24
- private readonly OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR: string = `//div[@class='panel-login']`;
25
- private readonly OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR: string = `${this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR}/div[contains(@class, 'panel-content')]/form/button`;
26
-
27
- constructor(
28
- @inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage,
29
- @inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper) { }
30
-
31
- async login(): Promise<void> {
32
- Logger.debug();
33
-
34
- Logger.debug('wait for LogInWithOpenShift page and click button');
35
- await this.driverHelper.waitPresence(By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_LOCATOR), TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
36
- await this.driverHelper.waitAndClick(By.xpath(this.OPEN_SHIFT_LOGIN_LANDING_PAGE_BUTTON_LOCATOR));
37
-
38
- if (await this.ocpLogin.isIdentityProviderLinkVisible()) {
39
- await this.ocpLogin.clickOnLoginProviderTitle();
40
- }
41
-
42
- await this.ocpLogin.waitOpenShiftLoginWelcomePage();
43
- await this.ocpLogin.enterUserNameOpenShift(OAuthConstants.TS_SELENIUM_OCP_USERNAME);
44
- await this.ocpLogin.enterPasswordOpenShift(OAuthConstants.TS_SELENIUM_OCP_PASSWORD);
45
- await this.ocpLogin.clickOnLoginButton();
46
- await this.ocpLogin.waitDisappearanceOpenShiftLoginWelcomePage();
47
-
48
- if (await this.ocpLogin.isAuthorizeOpenShiftIdentityProviderPageVisible()) {
49
- await this.ocpLogin.waitAuthorizeOpenShiftIdentityProviderPage();
50
- await this.ocpLogin.clickOnApproveAuthorizeAccessButton();
51
- }
52
- }
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
+ );
26
+
27
+ constructor(
28
+ @inject(CLASSES.OcpLoginPage) private readonly ocpLogin: OcpLoginPage,
29
+ @inject(CLASSES.DriverHelper)
30
+ private readonly driverHelper: DriverHelper
31
+ ) {}
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> {
41
+ Logger.debug();
42
+
43
+ await this.driverHelper.waitAndClick(
44
+ RegularUserOcpCheLoginPage.OPENSHIFT_LOGIN_LANDING_PAGE_BUTTON,
45
+ TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT
46
+ );
47
+
48
+ if (await this.ocpLogin.isIdentityProviderLinkVisible()) {
49
+ await this.ocpLogin.waitAndClickOnLoginProviderTitle();
50
+ }
51
+
52
+ await this.ocpLogin.waitOpenShiftLoginWelcomePage();
53
+ await this.ocpLogin.enterUserNameOpenShift(userName);
54
+ await this.ocpLogin.enterPasswordOpenShift(password);
55
+ await this.ocpLogin.clickOnLoginButton();
56
+ await this.ocpLogin.waitDisappearanceOpenShiftLoginWelcomePage();
57
+
58
+ if (await this.ocpLogin.isAuthorizeOpenShiftIdentityProviderPageVisible()) {
59
+ await this.ocpLogin.clickOnApproveAuthorizeAccessButton();
60
+ }
61
+ }
53
62
  }
@@ -1,5 +1,5 @@
1
- /*********************************************************************
2
- * Copyright (c) 2019-2023 Red Hat, Inc.
1
+ /** *******************************************************************
2
+ * copyright (c) 2019-2023 Red Hat, Inc.
3
3
  *
4
4
  * This program and the accompanying materials are made
5
5
  * available under the terms of the Eclipse Public License 2.0
@@ -13,30 +13,32 @@ 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 { TimeoutConstants } from '../../constants/TimeoutConstants';
16
+ import { TIMEOUT_CONSTANTS } from '../../constants/TIMEOUT_CONSTANTS';
17
17
  import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
18
18
 
19
19
  @injectable()
20
20
  export class OcpApplicationPage {
21
+ private static readonly APPLICATION_ICON: 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"]');
21
23
 
22
- private static readonly APPLICATION_ICON_LOCATOR: By = By.xpath('//*[@data-test-id="base-node-handler"]');
23
- private static readonly EDIT_SOURCE_CODE_ICON_LOCATOR: By = By.xpath('//*[@aria-label="Edit source code"]');
24
+ constructor(
25
+ @inject(CLASSES.DriverHelper)
26
+ private readonly driverHelper: DriverHelper,
27
+ @inject(CLASSES.BrowserTabsUtil)
28
+ private readonly browserTabsUtil: BrowserTabsUtil
29
+ ) {}
24
30
 
25
- constructor(
26
- @inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper,
27
- @inject(CLASSES.BrowserTabsUtil) private readonly browserTabsUtil: BrowserTabsUtil) {
28
- }
31
+ async waitApplicationIcon(): Promise<void> {
32
+ Logger.debug();
29
33
 
30
- async waitApplicationIcon(): Promise<void> {
31
- Logger.debug();
34
+ await this.driverHelper.waitPresence(OcpApplicationPage.APPLICATION_ICON, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
35
+ }
32
36
 
33
- await this.driverHelper.waitPresence(OcpApplicationPage.APPLICATION_ICON_LOCATOR, TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
34
- }
37
+ async waitAndOpenEditSourceCodeIcon(): Promise<void> {
38
+ Logger.debug();
35
39
 
36
- async waitAndOpenEditSourceCodeIcon(): Promise<void> {
37
- Logger.debug();
38
- const parentGUID: string = await this.browserTabsUtil.getCurrentWindowHandle();
39
- await this.driverHelper.waitAndClick(OcpApplicationPage.EDIT_SOURCE_CODE_ICON_LOCATOR);
40
- await this.browserTabsUtil.waitAndSwitchToAnotherWindow(parentGUID, TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
41
- }
40
+ const parentGUID: string = await this.browserTabsUtil.getCurrentWindowHandle();
41
+ await this.driverHelper.waitAndClick(OcpApplicationPage.EDIT_SOURCE_CODE_ICON);
42
+ await this.browserTabsUtil.waitAndSwitchToAnotherWindow(parentGUID, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
43
+ }
42
44
  }