@eclipse-che/che-e2e 7.124.0-next → 7.124.0-next-6307b25

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 (266) hide show
  1. package/constants/BASE_TEST_CONSTANTS.ts +6 -0
  2. package/dist/configs/inversify.config.js +123 -0
  3. package/dist/configs/inversify.config.js.map +1 -0
  4. package/dist/configs/inversify.types.js +74 -0
  5. package/dist/configs/inversify.types.js.map +1 -0
  6. package/dist/configs/mocharc.js +42 -0
  7. package/dist/configs/mocharc.js.map +1 -0
  8. package/dist/constants/API_TEST_CONSTANTS.js +60 -0
  9. package/dist/constants/API_TEST_CONSTANTS.js.map +1 -0
  10. package/dist/constants/BASE_TEST_CONSTANTS.js +113 -0
  11. package/dist/constants/BASE_TEST_CONSTANTS.js.map +1 -0
  12. package/dist/constants/CHROME_DRIVER_CONSTANTS.js +40 -0
  13. package/dist/constants/CHROME_DRIVER_CONSTANTS.js.map +1 -0
  14. package/dist/constants/EDITOR_CONSTANTS.js +114 -0
  15. package/dist/constants/EDITOR_CONSTANTS.js.map +1 -0
  16. package/dist/constants/FACTORY_TEST_CONSTANTS.js +87 -0
  17. package/dist/constants/FACTORY_TEST_CONSTANTS.js.map +1 -0
  18. package/dist/constants/MOCHA_CONSTANTS.js +24 -0
  19. package/dist/constants/MOCHA_CONSTANTS.js.map +1 -0
  20. package/dist/constants/MONACO_CONSTANTS.js +25 -0
  21. package/dist/constants/MONACO_CONSTANTS.js.map +1 -0
  22. package/dist/constants/OAUTH_CONSTANTS.js +53 -0
  23. package/dist/constants/OAUTH_CONSTANTS.js.map +1 -0
  24. package/dist/constants/PLUGIN_TEST_CONSTANTS.js +19 -0
  25. package/dist/constants/PLUGIN_TEST_CONSTANTS.js.map +1 -0
  26. package/dist/constants/REPORTER_CONSTANTS.js +123 -0
  27. package/dist/constants/REPORTER_CONSTANTS.js.map +1 -0
  28. package/dist/constants/TIMEOUT_CONSTANTS.js +101 -0
  29. package/dist/constants/TIMEOUT_CONSTANTS.js.map +1 -0
  30. package/dist/driver/ChromeDriver.js +77 -0
  31. package/dist/driver/ChromeDriver.js.map +1 -0
  32. package/dist/driver/IDriver.js +3 -0
  33. package/dist/driver/IDriver.js.map +1 -0
  34. package/dist/index.js +99 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/pageobjects/dashboard/CreateWorkspace.js +214 -0
  37. package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -0
  38. package/dist/pageobjects/dashboard/Dashboard.js +208 -0
  39. package/dist/pageobjects/dashboard/Dashboard.js.map +1 -0
  40. package/dist/pageobjects/dashboard/TrustAuthorPopup.js +61 -0
  41. package/dist/pageobjects/dashboard/TrustAuthorPopup.js.map +1 -0
  42. package/dist/pageobjects/dashboard/UserPreferences.js +341 -0
  43. package/dist/pageobjects/dashboard/UserPreferences.js.map +1 -0
  44. package/dist/pageobjects/dashboard/Workspaces.js +242 -0
  45. package/dist/pageobjects/dashboard/Workspaces.js.map +1 -0
  46. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +192 -0
  47. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +1 -0
  48. package/dist/pageobjects/git-providers/OauthPage.js +218 -0
  49. package/dist/pageobjects/git-providers/OauthPage.js.map +1 -0
  50. package/dist/pageobjects/ide/AiCodeSignInDialog.js +55 -0
  51. package/dist/pageobjects/ide/AiCodeSignInDialog.js.map +1 -0
  52. package/dist/pageobjects/ide/CheCodeLocatorLoader.js +108 -0
  53. package/dist/pageobjects/ide/CheCodeLocatorLoader.js.map +1 -0
  54. package/dist/pageobjects/ide/CommandPalette.js +117 -0
  55. package/dist/pageobjects/ide/CommandPalette.js.map +1 -0
  56. package/dist/pageobjects/ide/ExplorerView.js +108 -0
  57. package/dist/pageobjects/ide/ExplorerView.js.map +1 -0
  58. package/dist/pageobjects/ide/ExtensionsView.js +162 -0
  59. package/dist/pageobjects/ide/ExtensionsView.js.map +1 -0
  60. package/dist/pageobjects/ide/GitHubExtensionDialog.js +66 -0
  61. package/dist/pageobjects/ide/GitHubExtensionDialog.js.map +1 -0
  62. package/dist/pageobjects/ide/NotificationHandler.js +83 -0
  63. package/dist/pageobjects/ide/NotificationHandler.js.map +1 -0
  64. package/dist/pageobjects/ide/RestartWorkspaceDialog.js +80 -0
  65. package/dist/pageobjects/ide/RestartWorkspaceDialog.js.map +1 -0
  66. package/dist/pageobjects/ide/RestrictedModeButton.js +57 -0
  67. package/dist/pageobjects/ide/RestrictedModeButton.js.map +1 -0
  68. package/dist/pageobjects/ide/SourceControlView.js +52 -0
  69. package/dist/pageobjects/ide/SourceControlView.js.map +1 -0
  70. package/dist/pageobjects/ide/ViewsMoreActionsButton.js +73 -0
  71. package/dist/pageobjects/ide/ViewsMoreActionsButton.js.map +1 -0
  72. package/dist/pageobjects/login/interfaces/ICheLoginPage.js +12 -0
  73. package/dist/pageobjects/login/interfaces/ICheLoginPage.js.map +1 -0
  74. package/dist/pageobjects/login/interfaces/IOcpLoginPage.js +12 -0
  75. package/dist/pageobjects/login/interfaces/IOcpLoginPage.js.map +1 -0
  76. package/dist/pageobjects/login/kubernetes/DexLoginPage.js +69 -0
  77. package/dist/pageobjects/login/kubernetes/DexLoginPage.js.map +1 -0
  78. package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js +50 -0
  79. package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js.map +1 -0
  80. package/dist/pageobjects/login/openshift/OcpLoginPage.js +88 -0
  81. package/dist/pageobjects/login/openshift/OcpLoginPage.js.map +1 -0
  82. package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js +73 -0
  83. package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js.map +1 -0
  84. package/dist/pageobjects/login/openshift/OcpUserLoginPage.js +53 -0
  85. package/dist/pageobjects/login/openshift/OcpUserLoginPage.js.map +1 -0
  86. package/dist/pageobjects/login/openshift/RedHatLoginPage.js +85 -0
  87. package/dist/pageobjects/login/openshift/RedHatLoginPage.js.map +1 -0
  88. package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js +65 -0
  89. package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js.map +1 -0
  90. package/dist/pageobjects/openshift/OcpApplicationPage.js +60 -0
  91. package/dist/pageobjects/openshift/OcpApplicationPage.js.map +1 -0
  92. package/dist/pageobjects/openshift/OcpImportFromGitPage.js +92 -0
  93. package/dist/pageobjects/openshift/OcpImportFromGitPage.js.map +1 -0
  94. package/dist/pageobjects/openshift/OcpMainPage.js +140 -0
  95. package/dist/pageobjects/openshift/OcpMainPage.js.map +1 -0
  96. package/dist/pageobjects/webterminal/WebTerminalPage.js +182 -0
  97. package/dist/pageobjects/webterminal/WebTerminalPage.js.map +1 -0
  98. package/dist/specs/MochaHooks.js +142 -0
  99. package/dist/specs/MochaHooks.js.map +1 -0
  100. package/dist/specs/SmokeTest.spec.js +58 -0
  101. package/dist/specs/SmokeTest.spec.js.map +1 -0
  102. package/dist/specs/api/AnsibleDevFileAPI.spec.js +263 -0
  103. package/dist/specs/api/AnsibleDevFileAPI.spec.js.map +1 -0
  104. package/dist/specs/api/BuildPushRunPodmanContainerAPI.spec.js +147 -0
  105. package/dist/specs/api/BuildPushRunPodmanContainerAPI.spec.js.map +1 -0
  106. package/dist/specs/api/ContainerOverridesAPI.spec.js +40 -0
  107. package/dist/specs/api/ContainerOverridesAPI.spec.js.map +1 -0
  108. package/dist/specs/api/CppDevFileAPI.spec.js +87 -0
  109. package/dist/specs/api/CppDevFileAPI.spec.js.map +1 -0
  110. package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js +99 -0
  111. package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js.map +1 -0
  112. package/dist/specs/api/DotnetDevFileAPI.spec.js +89 -0
  113. package/dist/specs/api/DotnetDevFileAPI.spec.js.map +1 -0
  114. package/dist/specs/api/EmptyWorkspaceAPI.spec.js +60 -0
  115. package/dist/specs/api/EmptyWorkspaceAPI.spec.js.map +1 -0
  116. package/dist/specs/api/GoDevFileAPI.spec.js +82 -0
  117. package/dist/specs/api/GoDevFileAPI.spec.js.map +1 -0
  118. package/dist/specs/api/InbuiltApplicationDevWorkspacesAPI.spec.js +97 -0
  119. package/dist/specs/api/InbuiltApplicationDevWorkspacesAPI.spec.js.map +1 -0
  120. package/dist/specs/api/JBossEapDevFileAPI.spec.js +127 -0
  121. package/dist/specs/api/JBossEapDevFileAPI.spec.js.map +1 -0
  122. package/dist/specs/api/LombokDevFileAPI.spec.js +81 -0
  123. package/dist/specs/api/LombokDevFileAPI.spec.js.map +1 -0
  124. package/dist/specs/api/NodeJSMongoDBDevFileAPI.spec.js +81 -0
  125. package/dist/specs/api/NodeJSMongoDBDevFileAPI.spec.js.map +1 -0
  126. package/dist/specs/api/NodeJsExpressDevFileAPI.spec.js +130 -0
  127. package/dist/specs/api/NodeJsExpressDevFileAPI.spec.js.map +1 -0
  128. package/dist/specs/api/PhpDevFileAPI.spec.js +71 -0
  129. package/dist/specs/api/PhpDevFileAPI.spec.js.map +1 -0
  130. package/dist/specs/api/PodOverridesAPI.spec.js +46 -0
  131. package/dist/specs/api/PodOverridesAPI.spec.js.map +1 -0
  132. package/dist/specs/api/PythonDevFileAPI.spec.js +71 -0
  133. package/dist/specs/api/PythonDevFileAPI.spec.js.map +1 -0
  134. package/dist/specs/api/QuarkusDevFileAPI.spec.js +97 -0
  135. package/dist/specs/api/QuarkusDevFileAPI.spec.js.map +1 -0
  136. package/dist/specs/dashboard-samples/Documentation.spec.js +118 -0
  137. package/dist/specs/dashboard-samples/Documentation.spec.js.map +1 -0
  138. package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js +60 -0
  139. package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js.map +1 -0
  140. package/dist/specs/dashboard-samples/Quarkus.spec.js +64 -0
  141. package/dist/specs/dashboard-samples/Quarkus.spec.js.map +1 -0
  142. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js +361 -0
  143. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js.map +1 -0
  144. package/dist/specs/dashboard-samples/StartWorkspaceUsingDesktopEditors.spec.js +171 -0
  145. package/dist/specs/dashboard-samples/StartWorkspaceUsingDesktopEditors.spec.js.map +1 -0
  146. package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js +155 -0
  147. package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js.map +1 -0
  148. package/dist/specs/factory/Factory.spec.js +183 -0
  149. package/dist/specs/factory/Factory.spec.js.map +1 -0
  150. package/dist/specs/factory/FactoryWithGitRepoOptions.spec.js +63 -0
  151. package/dist/specs/factory/FactoryWithGitRepoOptions.spec.js.map +1 -0
  152. package/dist/specs/factory/NoSetupRepoFactory.spec.js +212 -0
  153. package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +1 -0
  154. package/dist/specs/factory/RefusedOAuthFactory.spec.js +239 -0
  155. package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +1 -0
  156. package/dist/specs/factory/SshUrlNoOauthPatFactory.spec.js +202 -0
  157. package/dist/specs/factory/SshUrlNoOauthPatFactory.spec.js.map +1 -0
  158. package/dist/specs/miscellaneous/CreateWorkspaceWithExistedName.spec.js +77 -0
  159. package/dist/specs/miscellaneous/CreateWorkspaceWithExistedName.spec.js.map +1 -0
  160. package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromEmptyWorkspaceSample.spec.js +106 -0
  161. package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromEmptyWorkspaceSample.spec.js.map +1 -0
  162. package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromGitUrl.spec.js +113 -0
  163. package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromGitUrl.spec.js.map +1 -0
  164. package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromSample.spec.js +116 -0
  165. package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromSample.spec.js.map +1 -0
  166. package/dist/specs/miscellaneous/CustomOpenVSXRegistry.spec.js +205 -0
  167. package/dist/specs/miscellaneous/CustomOpenVSXRegistry.spec.js.map +1 -0
  168. package/dist/specs/miscellaneous/ExtensionActivationTest.spec.js +129 -0
  169. package/dist/specs/miscellaneous/ExtensionActivationTest.spec.js.map +1 -0
  170. package/dist/specs/miscellaneous/KubedockPodmanPersistUserHomeTest.spec.js +121 -0
  171. package/dist/specs/miscellaneous/KubedockPodmanPersistUserHomeTest.spec.js.map +1 -0
  172. package/dist/specs/miscellaneous/KubedockPodmanTest.spec.js +103 -0
  173. package/dist/specs/miscellaneous/KubedockPodmanTest.spec.js.map +1 -0
  174. package/dist/specs/miscellaneous/OpenCodeProviderSmokeTest.spec.js +138 -0
  175. package/dist/specs/miscellaneous/OpenCodeProviderSmokeTest.spec.js.map +1 -0
  176. package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +111 -0
  177. package/dist/specs/miscellaneous/PredefinedNamespace.spec.js.map +1 -0
  178. package/dist/specs/miscellaneous/RenameWorkspace.spec.js +116 -0
  179. package/dist/specs/miscellaneous/RenameWorkspace.spec.js.map +1 -0
  180. package/dist/specs/miscellaneous/RevokeOauth.spec.js +29 -0
  181. package/dist/specs/miscellaneous/RevokeOauth.spec.js.map +1 -0
  182. package/dist/specs/miscellaneous/UserPreferencesTest.spec.js +26 -0
  183. package/dist/specs/miscellaneous/UserPreferencesTest.spec.js.map +1 -0
  184. package/dist/specs/miscellaneous/UserSecretsInWorkspace.spec.js +78 -0
  185. package/dist/specs/miscellaneous/UserSecretsInWorkspace.spec.js.map +1 -0
  186. package/dist/specs/miscellaneous/VsixInstallationDisableTest.spec.js +196 -0
  187. package/dist/specs/miscellaneous/VsixInstallationDisableTest.spec.js.map +1 -0
  188. package/dist/specs/miscellaneous/WorkspaceBackupRestore.spec.js +208 -0
  189. package/dist/specs/miscellaneous/WorkspaceBackupRestore.spec.js.map +1 -0
  190. package/dist/specs/miscellaneous/WorkspaceIdleTimeout.spec.js +84 -0
  191. package/dist/specs/miscellaneous/WorkspaceIdleTimeout.spec.js.map +1 -0
  192. package/dist/specs/miscellaneous/WorkspaceRunTimeout.spec.js +84 -0
  193. package/dist/specs/miscellaneous/WorkspaceRunTimeout.spec.js.map +1 -0
  194. package/dist/specs/miscellaneous/WorkspaceWithParent.spec.js +101 -0
  195. package/dist/specs/miscellaneous/WorkspaceWithParent.spec.js.map +1 -0
  196. package/dist/specs/restart-tests/RestartFromLocalDevfile.spec.js +266 -0
  197. package/dist/specs/restart-tests/RestartFromLocalDevfile.spec.js.map +1 -0
  198. package/dist/specs/web-terminal/WebTerminalTest.spec.js +47 -0
  199. package/dist/specs/web-terminal/WebTerminalTest.spec.js.map +1 -0
  200. package/dist/specs/web-terminal/WebTerminalUnderAdmin.spec.js +82 -0
  201. package/dist/specs/web-terminal/WebTerminalUnderAdmin.spec.js.map +1 -0
  202. package/dist/specs/web-terminal/WebTerminalUnderRegularUser.spec.js +78 -0
  203. package/dist/specs/web-terminal/WebTerminalUnderRegularUser.spec.js.map +1 -0
  204. package/dist/suites/devfile-acceptance-test-suite/DynamicallyGeneratingAPITest.suite.js +13 -0
  205. package/dist/suites/devfile-acceptance-test-suite/DynamicallyGeneratingAPITest.suite.js.map +1 -0
  206. package/dist/suites/disconnected-ocp/APITest.suite.js +14 -0
  207. package/dist/suites/disconnected-ocp/APITest.suite.js.map +1 -0
  208. package/dist/suites/disconnected-ocp/DynamicallyGeneratingAPITest.suite.js +13 -0
  209. package/dist/suites/disconnected-ocp/DynamicallyGeneratingAPITest.suite.js.map +1 -0
  210. package/dist/suites/disconnected-ocp/UITest.suite.js +19 -0
  211. package/dist/suites/disconnected-ocp/UITest.suite.js.map +1 -0
  212. package/dist/suites/online-ocp/APITest.suite.js +15 -0
  213. package/dist/suites/online-ocp/APITest.suite.js.map +1 -0
  214. package/dist/suites/online-ocp/DynamicallyGeneratingAPITest.suite.js +13 -0
  215. package/dist/suites/online-ocp/DynamicallyGeneratingAPITest.suite.js.map +1 -0
  216. package/dist/suites/online-ocp/UITest.suite.js +23 -0
  217. package/dist/suites/online-ocp/UITest.suite.js.map +1 -0
  218. package/dist/tests-library/LoginTests.js +76 -0
  219. package/dist/tests-library/LoginTests.js.map +1 -0
  220. package/dist/tests-library/ProjectAndFileTests.js +278 -0
  221. package/dist/tests-library/ProjectAndFileTests.js.map +1 -0
  222. package/dist/tests-library/WorkspaceHandlingTests.js +219 -0
  223. package/dist/tests-library/WorkspaceHandlingTests.js.map +1 -0
  224. package/dist/utils/BrowserTabsUtil.js +124 -0
  225. package/dist/utils/BrowserTabsUtil.js.map +1 -0
  226. package/dist/utils/CheReporter.js +238 -0
  227. package/dist/utils/CheReporter.js.map +1 -0
  228. package/dist/utils/DevWorkspaceConfigurationHelper.js +145 -0
  229. package/dist/utils/DevWorkspaceConfigurationHelper.js.map +1 -0
  230. package/dist/utils/DevfilesHelper.js +177 -0
  231. package/dist/utils/DevfilesHelper.js.map +1 -0
  232. package/dist/utils/DriverHelper.js +609 -0
  233. package/dist/utils/DriverHelper.js.map +1 -0
  234. package/dist/utils/IContextParams.js +12 -0
  235. package/dist/utils/IContextParams.js.map +1 -0
  236. package/dist/utils/IKubernetesCommandLineToolsExecutor.js +3 -0
  237. package/dist/utils/IKubernetesCommandLineToolsExecutor.js.map +1 -0
  238. package/dist/utils/KubernetesCommandLineToolsExecutor.js +338 -0
  239. package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +1 -0
  240. package/dist/utils/Logger.js +146 -0
  241. package/dist/utils/Logger.js.map +1 -0
  242. package/dist/utils/ScreenCatcher.js +114 -0
  243. package/dist/utils/ScreenCatcher.js.map +1 -0
  244. package/dist/utils/ShellExecutor.js +47 -0
  245. package/dist/utils/ShellExecutor.js.map +1 -0
  246. package/dist/utils/StringUtil.js +107 -0
  247. package/dist/utils/StringUtil.js.map +1 -0
  248. package/dist/utils/request-handlers/CheApiRequestHandler.js +128 -0
  249. package/dist/utils/request-handlers/CheApiRequestHandler.js.map +1 -0
  250. package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js +55 -0
  251. package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +1 -0
  252. package/dist/utils/request-handlers/headers/IAuthorizationHeaderHandler.js +12 -0
  253. package/dist/utils/request-handlers/headers/IAuthorizationHeaderHandler.js.map +1 -0
  254. package/dist/utils/workspace/ApiUrlResolver.js +123 -0
  255. package/dist/utils/workspace/ApiUrlResolver.js.map +1 -0
  256. package/dist/utils/workspace/ITestWorkspaceUtil.js +12 -0
  257. package/dist/utils/workspace/ITestWorkspaceUtil.js.map +1 -0
  258. package/dist/utils/workspace/TestWorkspaceUtil.js +212 -0
  259. package/dist/utils/workspace/TestWorkspaceUtil.js.map +1 -0
  260. package/dist/utils/workspace/WorkspaceStatus.js +19 -0
  261. package/dist/utils/workspace/WorkspaceStatus.js.map +1 -0
  262. package/index.ts +5 -5
  263. package/package.json +1 -1
  264. package/pageobjects/dashboard/CreateWorkspace.ts +50 -0
  265. package/pageobjects/dashboard/UserPreferences.ts +106 -0
  266. package/specs/miscellaneous/OpenCodeProviderSmokeTest.spec.ts +175 -0
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ /** *******************************************************************
3
+ * copyright (c) 2019-2023 Red Hat, Inc.
4
+ *
5
+ * This program and the accompanying materials are made
6
+ * available under the terms of the Eclipse Public License 2.0
7
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
8
+ *
9
+ * SPDX-License-Identifier: EPL-2.0
10
+ **********************************************************************/
11
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
12
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
16
+ };
17
+ var __metadata = (this && this.__metadata) || function (k, v) {
18
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
19
+ };
20
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
21
+ return function (target, key) { decorator(target, key, paramIndex); }
22
+ };
23
+ var __importDefault = (this && this.__importDefault) || function (mod) {
24
+ return (mod && mod.__esModule) ? mod : { "default": mod };
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.TestWorkspaceUtil = void 0;
28
+ require("reflect-metadata");
29
+ const inversify_1 = require("inversify");
30
+ const DriverHelper_1 = require("../DriverHelper");
31
+ const WorkspaceStatus_1 = require("./WorkspaceStatus");
32
+ const selenium_webdriver_1 = require("selenium-webdriver");
33
+ const CheApiRequestHandler_1 = require("../request-handlers/CheApiRequestHandler");
34
+ const inversify_types_1 = require("../../configs/inversify.types");
35
+ const Logger_1 = require("../Logger");
36
+ const axios_1 = __importDefault(require("axios"));
37
+ const ApiUrlResolver_1 = require("./ApiUrlResolver");
38
+ const TIMEOUT_CONSTANTS_1 = require("../../constants/TIMEOUT_CONSTANTS");
39
+ let TestWorkspaceUtil = class TestWorkspaceUtil {
40
+ constructor(driverHelper, processRequestHandler, apiUrlResolver) {
41
+ this.driverHelper = driverHelper;
42
+ this.processRequestHandler = processRequestHandler;
43
+ this.apiUrlResolver = apiUrlResolver;
44
+ this.polling = TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_SELENIUM_DEFAULT_POLLING;
45
+ this.attempts = TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_DASHBOARD_WORKSPACE_STOP_TIMEOUT / this.polling;
46
+ }
47
+ async waitWorkspaceStatus(workspaceName, expectedWorkspaceStatus) {
48
+ Logger_1.Logger.debug();
49
+ const workspaceApiUrl = await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName);
50
+ let workspaceStatus = '';
51
+ let expectedStatus = false;
52
+ for (let i = 0; i < this.attempts; i++) {
53
+ let response;
54
+ try {
55
+ response = await this.processRequestHandler.get(workspaceApiUrl);
56
+ }
57
+ catch (err) {
58
+ // handle transient network errors (e.g. socket hang up) by retrying
59
+ Logger_1.Logger.warn(`waitWorkspaceStatus: transient error polling workspace status, retrying (attempt ${i + 1}): ${err}`);
60
+ await this.driverHelper.wait(this.polling);
61
+ continue;
62
+ }
63
+ if (response.status !== 200) {
64
+ throw new Error(`Can not get status of a workspace. Code: ${response.status} Data: ${response.data}`);
65
+ }
66
+ workspaceStatus = await response.data.status.phase;
67
+ if (workspaceStatus === expectedWorkspaceStatus) {
68
+ expectedStatus = true;
69
+ break;
70
+ }
71
+ await this.driverHelper.wait(this.polling);
72
+ }
73
+ if (!expectedStatus) {
74
+ const waitTime = this.attempts * this.polling;
75
+ throw new selenium_webdriver_1.error.TimeoutError(`The workspace was not stopped in ${waitTime} ms. Current status is: ${workspaceStatus}`);
76
+ }
77
+ }
78
+ async stopWorkspaceByName(workspaceName) {
79
+ Logger_1.Logger.debug(`${workspaceName}`);
80
+ const stopWorkspaceApiUrl = await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName);
81
+ let stopWorkspaceResponse;
82
+ try {
83
+ stopWorkspaceResponse = await this.processRequestHandler.patch(stopWorkspaceApiUrl, [
84
+ {
85
+ op: 'replace',
86
+ path: '/spec/started',
87
+ value: false
88
+ }
89
+ ]);
90
+ }
91
+ catch (err) {
92
+ Logger_1.Logger.error(`stop workspace call failed. URL used: ${stopWorkspaceApiUrl}`);
93
+ throw err;
94
+ }
95
+ if (stopWorkspaceResponse.status !== 200) {
96
+ throw new Error(`Cannot stop workspace. Code: ${stopWorkspaceResponse.status} Data: ${stopWorkspaceResponse.data}`);
97
+ }
98
+ await this.waitWorkspaceStatus(workspaceName, WorkspaceStatus_1.WorkspaceStatus.STOPPED);
99
+ Logger_1.Logger.debug(`${workspaceName} stopped successfully`);
100
+ }
101
+ // delete a workspace without stopping phase (similar with force deleting)
102
+ async deleteWorkspaceByName(workspaceName) {
103
+ Logger_1.Logger.debug(`${workspaceName}`);
104
+ const deleteWorkspaceApiUrl = await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName);
105
+ let deleteWorkspaceResponse;
106
+ let deleteWorkspaceStatus = false;
107
+ try {
108
+ deleteWorkspaceResponse = await this.processRequestHandler.delete(deleteWorkspaceApiUrl);
109
+ }
110
+ catch (error) {
111
+ if (axios_1.default.isAxiosError(error) && error.response?.status === 404) {
112
+ Logger_1.Logger.info(`Workspace ${workspaceName} not found, already deleted`);
113
+ return;
114
+ }
115
+ Logger_1.Logger.error(`delete workspace call failed. URL used: ${deleteWorkspaceApiUrl}`);
116
+ throw error;
117
+ }
118
+ if (deleteWorkspaceResponse.status !== 204) {
119
+ throw new Error(`Can not delete workspace. Code: ${deleteWorkspaceResponse.status} Data: ${deleteWorkspaceResponse.data}`);
120
+ }
121
+ for (let i = 0; i < this.attempts; i++) {
122
+ try {
123
+ deleteWorkspaceResponse = await this.processRequestHandler.get(deleteWorkspaceApiUrl);
124
+ Logger_1.Logger.trace(`GET ${deleteWorkspaceApiUrl} returned status: ${deleteWorkspaceResponse.status}; data: ${deleteWorkspaceResponse.data}`);
125
+ }
126
+ catch (error) {
127
+ if (axios_1.default.isAxiosError(error) && (error.response?.status === 404 || error.response?.status === 500)) {
128
+ deleteWorkspaceStatus = true;
129
+ Logger_1.Logger.debug(`${workspaceName} deleted successfully`);
130
+ break;
131
+ }
132
+ Logger_1.Logger.trace(`GET ${deleteWorkspaceApiUrl} threw error: ${error}`);
133
+ }
134
+ await this.driverHelper.wait(this.polling);
135
+ }
136
+ if (!deleteWorkspaceStatus) {
137
+ const waitTime = this.attempts * this.polling;
138
+ throw new selenium_webdriver_1.error.TimeoutError(`The workspace was not deleted in ${waitTime} ms.`);
139
+ }
140
+ }
141
+ // stop workspace before deleting with checking stopping phase
142
+ async stopAndDeleteWorkspaceByName(workspaceName) {
143
+ Logger_1.Logger.debug();
144
+ await this.stopWorkspaceByName(workspaceName);
145
+ await this.deleteWorkspaceByName(workspaceName);
146
+ }
147
+ // stop all run workspaces in the namespace
148
+ async stopAllRunningWorkspaces() {
149
+ Logger_1.Logger.debug();
150
+ const response = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
151
+ for (let i = 0; i < response.data.items.length; i++) {
152
+ Logger_1.Logger.info('the project is being stopped: ' + response.data.items[i].metadata.name);
153
+ await this.stopWorkspaceByName(response.data.items[i].metadata.name);
154
+ }
155
+ }
156
+ // stop all run workspaces, check statuses and remove the workspaces
157
+ async stopAndDeleteAllRunningWorkspaces() {
158
+ Logger_1.Logger.debug();
159
+ const response = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
160
+ await this.stopAllRunningWorkspaces();
161
+ for (let i = 0; i < response.data.items.length; i++) {
162
+ Logger_1.Logger.info('the project is being deleted: ' + response.data.items[i].metadata.name);
163
+ await this.deleteWorkspaceByName(response.data.items[i].metadata.name);
164
+ }
165
+ }
166
+ // stop all run workspaces without stopping and waiting for of 'Stopped' phase
167
+ // similar with 'force' deleting
168
+ async deleteAllWorkspaces() {
169
+ Logger_1.Logger.debug();
170
+ const response = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
171
+ for (let i = 0; i < response.data.items.length; i++) {
172
+ Logger_1.Logger.info('the project is being deleted .......: ' + response.data.items[i].metadata.name);
173
+ await this.deleteWorkspaceByName(response.data.items[i].metadata.name);
174
+ }
175
+ }
176
+ /**
177
+ * set user preferences for Che "security.workspace.trust.enabled": false using JS. in background mode
178
+ */
179
+ async switchOffTrustDialogWithJavaScript() {
180
+ const javaScriptExecCode = '(async function importData() {\n' +
181
+ ' const stub = "{\\"vscode-web-db\\":{\\"vscode-userdata-store\\":{\\"/User/settings.json\\":{\\"type\\":\\"Uint8Array\\",\\"value\\":\\"%7B%0A%20%20%20%20%22security.workspace.trust.enabled%22%3A%20false%0A%7D\\"}}}}";\n' +
182
+ ' for (const [dbName, dbData] of Object.entries(JSON.parse(stub))) {\n' +
183
+ ' const req = indexedDB.open(dbName);\n' +
184
+ ' req.onupgradeneeded = ({ target: { result: db } }) =>\n' +
185
+ ' Object.keys(dbData).forEach((name) => db.createObjectStore(name));\n' +
186
+ ' await new Promise((r) => (req.onsuccess = r));\n' +
187
+ ' for (const [storeName, storeData] of Object.entries(dbData)) {\n' +
188
+ ' const transaction = req.result.transaction(storeName, "readwrite");\n' +
189
+ ' const store = transaction.objectStore(storeName);\n' +
190
+ ' store.clear();\n' +
191
+ ' for (const [key, { type, value }] of Object.entries(storeData)) {\n' +
192
+ ' const str = decodeURIComponent(value);\n' +
193
+ ' store.put(type === "String" ? str : new TextEncoder().encode(str), key);\n' +
194
+ ' }\n' +
195
+ ' await new Promise((r) => (transaction.oncomplete = r));\n' +
196
+ ' }\n' +
197
+ ' }\n' +
198
+ '})().then(() => {});';
199
+ await this.driverHelper.getDriver().executeScript(javaScriptExecCode);
200
+ }
201
+ };
202
+ TestWorkspaceUtil = __decorate([
203
+ (0, inversify_1.injectable)(),
204
+ __param(0, (0, inversify_1.inject)(inversify_types_1.CLASSES.DriverHelper)),
205
+ __param(1, (0, inversify_1.inject)(inversify_types_1.CLASSES.CheApiRequestHandler)),
206
+ __param(2, (0, inversify_1.inject)(inversify_types_1.CLASSES.ApiUrlResolver)),
207
+ __metadata("design:paramtypes", [DriverHelper_1.DriverHelper,
208
+ CheApiRequestHandler_1.CheApiRequestHandler,
209
+ ApiUrlResolver_1.ApiUrlResolver])
210
+ ], TestWorkspaceUtil);
211
+ exports.TestWorkspaceUtil = TestWorkspaceUtil;
212
+ //# sourceMappingURL=TestWorkspaceUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestWorkspaceUtil.js","sourceRoot":"","sources":["../../../utils/workspace/TestWorkspaceUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ /** *******************************************************************
3
+ * copyright (c) 2019-2023 Red Hat, Inc.
4
+ *
5
+ * This program and the accompanying materials are made
6
+ * available under the terms of the Eclipse Public License 2.0
7
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
8
+ *
9
+ * SPDX-License-Identifier: EPL-2.0
10
+ **********************************************************************/
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WorkspaceStatus = void 0;
13
+ var WorkspaceStatus;
14
+ (function (WorkspaceStatus) {
15
+ WorkspaceStatus["RUNNING"] = "Running";
16
+ WorkspaceStatus["STOPPED"] = "Stopped";
17
+ WorkspaceStatus["STARTING"] = "Starting";
18
+ })(WorkspaceStatus = exports.WorkspaceStatus || (exports.WorkspaceStatus = {}));
19
+ //# sourceMappingURL=WorkspaceStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspaceStatus.js","sourceRoot":"","sources":["../../../utils/workspace/WorkspaceStatus.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;;AAExE,IAAY,eAIX;AAJD,WAAY,eAAe;IAC1B,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,wCAAqB,CAAA;AACtB,CAAC,EAJW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAI1B"}
package/index.ts CHANGED
@@ -5,19 +5,19 @@ export * from './configs/mocharc';
5
5
  export * from './driver/ChromeDriver';
6
6
  export * from './driver/IDriver';
7
7
  export * from './utils/BrowserTabsUtil';
8
- export * from './utils/DevfilesHelper';
9
8
  export * from './utils/DevWorkspaceConfigurationHelper';
9
+ export * from './utils/DevfilesHelper';
10
10
  export * from './utils/DriverHelper';
11
11
  export * from './utils/IContextParams';
12
12
  export * from './utils/IKubernetesCommandLineToolsExecutor';
13
13
  export * from './utils/KubernetesCommandLineToolsExecutor';
14
14
  export * from './utils/Logger';
15
- export * from './utils/request-handlers/CheApiRequestHandler';
16
- export * from './utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler';
17
- export * from './utils/request-handlers/headers/IAuthorizationHeaderHandler';
18
15
  export * from './utils/ScreenCatcher';
19
16
  export * from './utils/ShellExecutor';
20
17
  export * from './utils/StringUtil';
18
+ export * from './utils/request-handlers/CheApiRequestHandler';
19
+ export * from './utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler';
20
+ export * from './utils/request-handlers/headers/IAuthorizationHeaderHandler';
21
21
  export * from './utils/workspace/ApiUrlResolver';
22
22
  export * from './utils/workspace/ITestWorkspaceUtil';
23
23
  export * from './utils/workspace/TestWorkspaceUtil';
@@ -26,8 +26,8 @@ export * from './pageobjects/dashboard/CreateWorkspace';
26
26
  export * from './pageobjects/dashboard/Dashboard';
27
27
  export * from './pageobjects/dashboard/TrustAuthorPopup';
28
28
  export * from './pageobjects/dashboard/UserPreferences';
29
- export * from './pageobjects/dashboard/workspace-details/WorkspaceDetails';
30
29
  export * from './pageobjects/dashboard/Workspaces';
30
+ export * from './pageobjects/dashboard/workspace-details/WorkspaceDetails';
31
31
  export * from './pageobjects/git-providers/OauthPage';
32
32
  export * from './pageobjects/ide/AiCodeSignInDialog';
33
33
  export * from './pageobjects/ide/CheCodeLocatorLoader';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-che/che-e2e",
3
- "version": "7.124.0-next",
3
+ "version": "7.124.0-next-6307b25",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -28,6 +28,10 @@ export class CreateWorkspace {
28
28
  private static readonly CREATE_NEW_WORKPACE_CHECKBOX: By = By.css('label[for="create-new-if-exist-switch"]');
29
29
  private static readonly CREATE_NEW_WORKPACE_CHECKBOX_VALUE: By = By.id('create-new-if-exist-switch');
30
30
 
31
+ private static readonly AI_PROVIDER_SELECTOR_HEADING: By = By.xpath('//h3[text()="AI Provider Selector"]');
32
+ private static readonly AI_PROVIDER_CHOOSE_TOGGLE: By = By.id('accordion-item-ai-selector');
33
+ private static readonly AI_PROVIDER_KEY_CONFIGURED_BADGE: By = By.xpath('//span[text()=" Key configured"]');
34
+
31
35
  constructor(
32
36
  @inject(CLASSES.DriverHelper)
33
37
  private readonly driverHelper: DriverHelper,
@@ -186,6 +190,47 @@ export class CreateWorkspace {
186
190
  await this.driverHelper.scrollToAndClick(CreateWorkspace.CREATE_NEW_WORKPACE_CHECKBOX, timeout);
187
191
  }
188
192
 
193
+ async waitAiProviderSectionVisible(timeout: number = TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT): Promise<void> {
194
+ Logger.debug();
195
+
196
+ await this.driverHelper.waitVisibility(CreateWorkspace.AI_PROVIDER_SELECTOR_HEADING, timeout);
197
+ }
198
+
199
+ async expandChooseAiProviderSection(): Promise<void> {
200
+ Logger.debug();
201
+
202
+ const toggle: By = CreateWorkspace.AI_PROVIDER_CHOOSE_TOGGLE;
203
+ await this.driverHelper.waitAndClick(toggle);
204
+ await this.driverHelper.waitAttributeValue(toggle, 'aria-expanded', 'true', TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT);
205
+ }
206
+
207
+ async isAiProviderSectionVisible(): Promise<boolean> {
208
+ Logger.debug();
209
+
210
+ return await this.driverHelper.isVisible(CreateWorkspace.AI_PROVIDER_SELECTOR_HEADING);
211
+ }
212
+
213
+ async isAiProviderCardVisible(providerId: string): Promise<boolean> {
214
+ Logger.debug(`providerId: "${providerId}"`);
215
+
216
+ return await this.driverHelper.isVisible(this.getAiProviderCardLocator(providerId));
217
+ }
218
+
219
+ async waitAiProviderCardVisible(
220
+ providerId: string,
221
+ timeout: number = TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT
222
+ ): Promise<void> {
223
+ Logger.debug(`providerId: "${providerId}"`);
224
+
225
+ await this.driverHelper.waitVisibility(this.getAiProviderCardLocator(providerId), timeout);
226
+ }
227
+
228
+ async isAiProviderKeyConfiguredBadgeVisible(): Promise<boolean> {
229
+ Logger.debug();
230
+
231
+ return await this.driverHelper.isVisible(CreateWorkspace.AI_PROVIDER_KEY_CONFIGURED_BADGE);
232
+ }
233
+
189
234
  private getEditorsDropdownListLocator(sampleName: string): By {
190
235
  return By.xpath(`//div[text()=\'${sampleName}\']//parent::article//button`);
191
236
  }
@@ -215,6 +260,11 @@ export class CreateWorkspace {
215
260
  return By.xpath(`//div[contains(@id, 'sample-card') and text()='${sampleName}']`);
216
261
  }
217
262
 
263
+ private getAiProviderCardLocator(providerId: string): By {
264
+ const cardId: string = providerId.replace(/\//g, '-');
265
+ return By.id(`ai-provider-card-${cardId}`);
266
+ }
267
+
218
268
  private getGitBranchListItemLocator(branchName: string): By {
219
269
  return By.xpath(`//ul[@role="listbox"]//span[text()="${branchName}"]`);
220
270
  }
@@ -54,6 +54,15 @@ export class UserPreferences {
54
54
  private static readonly DELETE_CONFIRMATION_CHECKBOX: By = By.id('revoke-warning-info-check');
55
55
  private static readonly DELETE_ITEM_BUTTON_ENABLED: By = By.css('button[data-testid="revoke-button"]:not([disabled])');
56
56
 
57
+ private static readonly AI_PROVIDER_KEYS_TAB: By = By.xpath('//button[text()="AI Providers Keys"]');
58
+ private static readonly AI_ADD_KEY_EMPTY_STATE_BUTTON: By = By.css('button[aria-label="Add AI Provider Key"]');
59
+ private static readonly AI_ADD_EDIT_MODAL: By = By.css('div[aria-label="add-edit-ai-provider-key"]');
60
+ private static readonly AI_PROVIDER_SELECT_TOGGLE: By = By.css('div[aria-label="add-edit-ai-provider-key"] button.pf-v6-c-menu-toggle');
61
+ private static readonly AI_API_KEY_INPUT: By = By.id('ai-provider-api-key');
62
+ private static readonly AI_SAVE_BUTTON: By = By.css('button[data-testid="save-button"]');
63
+ private static readonly AI_BULK_DELETE_BUTTON: By = By.css('button[data-testid="bulk-delete-ai-key-button"]');
64
+ private static readonly AI_DELETE_CONFIRM_CHECKBOX: By = By.id('delete-ai-key-warning-checkbox');
65
+
57
66
  constructor(
58
67
  @inject(CLASSES.DriverHelper)
59
68
  readonly driverHelper: DriverHelper
@@ -286,6 +295,87 @@ export class UserPreferences {
286
295
  Logger.info('SSH keys have been deleted');
287
296
  }
288
297
 
298
+ async openAiProviderKeysTab(): Promise<void> {
299
+ Logger.debug();
300
+
301
+ await this.driverHelper.waitAndClick(UserPreferences.AI_PROVIDER_KEYS_TAB);
302
+ }
303
+
304
+ async waitAiProviderKeysTab(timeout: number = TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT): Promise<void> {
305
+ Logger.debug();
306
+
307
+ await this.driverHelper.waitVisibility(UserPreferences.AI_PROVIDER_KEYS_TAB, timeout);
308
+ }
309
+
310
+ async isAiProviderKeyPresent(providerId: string): Promise<boolean> {
311
+ Logger.debug(`providerId: "${providerId}"`);
312
+
313
+ return await this.driverHelper.isVisible(this.getAiProviderRowLocator(providerId));
314
+ }
315
+
316
+ async waitAiProviderKeyPresent(
317
+ providerId: string,
318
+ timeout: number = TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT
319
+ ): Promise<void> {
320
+ Logger.debug(`providerId: "${providerId}"`);
321
+
322
+ await this.driverHelper.waitVisibility(this.getAiProviderRowLocator(providerId), timeout);
323
+ }
324
+
325
+ async addAiProviderKey(providerName: string, apiKey: string): Promise<void> {
326
+ Logger.debug(`providerName: "${providerName}"`);
327
+
328
+ await this.driverHelper.waitAndClick(UserPreferences.AI_ADD_KEY_EMPTY_STATE_BUTTON);
329
+ await this.driverHelper.waitVisibility(UserPreferences.AI_ADD_EDIT_MODAL);
330
+ await this.selectAiProvider(providerName);
331
+ await this.driverHelper.waitVisibility(UserPreferences.AI_API_KEY_INPUT);
332
+ await this.driverHelper.enterValue(UserPreferences.AI_API_KEY_INPUT, apiKey);
333
+ await this.driverHelper.waitAndClick(UserPreferences.AI_SAVE_BUTTON);
334
+
335
+ const attempts: number = Math.ceil(
336
+ TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT / TIMEOUT_CONSTANTS.TS_SELENIUM_DEFAULT_POLLING
337
+ );
338
+ await this.driverHelper.waitDisappearance(
339
+ UserPreferences.AI_ADD_EDIT_MODAL,
340
+ attempts,
341
+ TIMEOUT_CONSTANTS.TS_SELENIUM_DEFAULT_POLLING
342
+ );
343
+ }
344
+
345
+ async selectAiProvider(providerName: string): Promise<void> {
346
+ Logger.debug(`providerName: "${providerName}"`);
347
+
348
+ await this.driverHelper.waitAndClick(UserPreferences.AI_PROVIDER_SELECT_TOGGLE);
349
+ await this.driverHelper.waitAndClick(this.getAiProviderSelectOptionLocator(providerName));
350
+ }
351
+
352
+ async getAiProviderEnvVarName(providerId: string): Promise<string> {
353
+ Logger.debug(`providerId: "${providerId}"`);
354
+
355
+ return await this.driverHelper.waitAndGetText(this.getAiProviderEnvVarLocator(providerId));
356
+ }
357
+
358
+ async deleteAiProviderKeys(providerName: string): Promise<void> {
359
+ Logger.debug(`providerName: "${providerName}"`);
360
+
361
+ Logger.info('Deleting AI Provider keys');
362
+ const rows: By = By.css('table[aria-label="AI Provider Keys"] tbody tr input[type="checkbox"]');
363
+ const hasRows: boolean = await this.driverHelper.isVisible(rows);
364
+
365
+ if (!hasRows) {
366
+ Logger.info('No AI Provider keys to delete');
367
+ return;
368
+ }
369
+
370
+ const selectAllCheckbox: By = By.css('table[aria-label="AI Provider Keys"] thead input[type="checkbox"]');
371
+ await this.driverHelper.waitAndClick(selectAllCheckbox);
372
+ await this.driverHelper.waitAndClick(UserPreferences.AI_BULK_DELETE_BUTTON);
373
+ await this.driverHelper.waitAndClick(UserPreferences.AI_DELETE_CONFIRM_CHECKBOX);
374
+ await this.driverHelper.waitAndClick(this.getAiDeleteConfirmButtonLocator(providerName));
375
+ await this.driverHelper.waitDisappearance(rows);
376
+ Logger.info('AI Provider keys have been deleted');
377
+ }
378
+
289
379
  getServiceConfig(service: string): string {
290
380
  const gitService: { [key: string]: string } = {
291
381
  [GitProviderType.GITHUB]: 'GitHub',
@@ -302,4 +392,20 @@ export class UserPreferences {
302
392
  private getServicesListItemLocator(servicesName: string): By {
303
393
  return By.xpath(`//tr[td[text()='${servicesName}']]//input`);
304
394
  }
395
+
396
+ private getAiProviderRowLocator(providerId: string): By {
397
+ return By.css(`tr[data-testid="${providerId}"]`);
398
+ }
399
+
400
+ private getAiProviderSelectOptionLocator(providerName: string): By {
401
+ return By.xpath(`//button[@role="option"]//span[text()="${providerName}"]`);
402
+ }
403
+
404
+ private getAiProviderEnvVarLocator(providerId: string): By {
405
+ return By.xpath(`//tr[@data-testid="${providerId}"]//td[@data-label="Environment Variable"]//code`);
406
+ }
407
+
408
+ private getAiDeleteConfirmButtonLocator(providerName: string): By {
409
+ return By.xpath(`//div[@aria-label="Delete ${providerName} API Key"]//span[text()="Delete"]`);
410
+ }
305
411
  }