@eclipse-che/che-e2e 7.58.1-dev-43d35ee → 7.58.1-dev-ffb0b4b

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 (219) hide show
  1. package/dist/TestConstants.js +244 -0
  2. package/dist/TestConstants.js.map +1 -0
  3. package/dist/TimeoutConstants.js +184 -0
  4. package/dist/TimeoutConstants.js.map +1 -0
  5. package/dist/driver/CheReporter.js +171 -0
  6. package/dist/driver/CheReporter.js.map +1 -0
  7. package/dist/driver/ChromeDriver.js +77 -0
  8. package/dist/driver/ChromeDriver.js.map +1 -0
  9. package/dist/driver/IDriver.js +3 -0
  10. package/dist/driver/IDriver.js.map +1 -0
  11. package/dist/index.js +94 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/inversify.config.js +132 -0
  14. package/dist/inversify.config.js.map +1 -0
  15. package/dist/inversify.types.js +75 -0
  16. package/dist/inversify.types.js.map +1 -0
  17. package/dist/pageobjects/dashboard/CreateWorkspace.js +106 -0
  18. package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -0
  19. package/dist/pageobjects/dashboard/Dashboard.js +115 -0
  20. package/dist/pageobjects/dashboard/Dashboard.js.map +1 -0
  21. package/dist/pageobjects/dashboard/Workspaces.js +165 -0
  22. package/dist/pageobjects/dashboard/Workspaces.js.map +1 -0
  23. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +138 -0
  24. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +1 -0
  25. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetailsPlugins.js +97 -0
  26. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetailsPlugins.js.map +1 -0
  27. package/dist/pageobjects/ide/theia/ContextMenu.js +66 -0
  28. package/dist/pageobjects/ide/theia/ContextMenu.js.map +1 -0
  29. package/dist/pageobjects/ide/theia/DebugView.js +98 -0
  30. package/dist/pageobjects/ide/theia/DebugView.js.map +1 -0
  31. package/dist/pageobjects/ide/theia/DialogWindow.js +102 -0
  32. package/dist/pageobjects/ide/theia/DialogWindow.js.map +1 -0
  33. package/dist/pageobjects/ide/theia/Editor.js +463 -0
  34. package/dist/pageobjects/ide/theia/Editor.js.map +1 -0
  35. package/dist/pageobjects/ide/theia/Ide.js +336 -0
  36. package/dist/pageobjects/ide/theia/Ide.js.map +1 -0
  37. package/dist/pageobjects/ide/theia/LeftToolBar.js +81 -0
  38. package/dist/pageobjects/ide/theia/LeftToolBar.js.map +1 -0
  39. package/dist/pageobjects/ide/theia/NavigationBar.js +57 -0
  40. package/dist/pageobjects/ide/theia/NavigationBar.js.map +1 -0
  41. package/dist/pageobjects/ide/theia/NotificationCenter.js +76 -0
  42. package/dist/pageobjects/ide/theia/NotificationCenter.js.map +1 -0
  43. package/dist/pageobjects/ide/theia/OpenDialogWidget.js +100 -0
  44. package/dist/pageobjects/ide/theia/OpenDialogWidget.js.map +1 -0
  45. package/dist/pageobjects/ide/theia/OpenEditors.js +73 -0
  46. package/dist/pageobjects/ide/theia/OpenEditors.js.map +1 -0
  47. package/dist/pageobjects/ide/theia/OpenWorkspaceWidget.js +62 -0
  48. package/dist/pageobjects/ide/theia/OpenWorkspaceWidget.js.map +1 -0
  49. package/dist/pageobjects/ide/theia/PreviewWidget.js +134 -0
  50. package/dist/pageobjects/ide/theia/PreviewWidget.js.map +1 -0
  51. package/dist/pageobjects/ide/theia/ProjectTree.js +282 -0
  52. package/dist/pageobjects/ide/theia/ProjectTree.js.map +1 -0
  53. package/dist/pageobjects/ide/theia/QuickOpenContainer.js +70 -0
  54. package/dist/pageobjects/ide/theia/QuickOpenContainer.js.map +1 -0
  55. package/dist/pageobjects/ide/theia/RightToolBar.js +51 -0
  56. package/dist/pageobjects/ide/theia/RightToolBar.js.map +1 -0
  57. package/dist/pageobjects/ide/theia/Terminal.js +184 -0
  58. package/dist/pageobjects/ide/theia/Terminal.js.map +1 -0
  59. package/dist/pageobjects/ide/theia/TopMenu.js +109 -0
  60. package/dist/pageobjects/ide/theia/TopMenu.js.map +1 -0
  61. package/dist/pageobjects/ide/theia/plugins/GitHubPullRequestPlugin.js +128 -0
  62. package/dist/pageobjects/ide/theia/plugins/GitHubPullRequestPlugin.js.map +1 -0
  63. package/dist/pageobjects/ide/theia/plugins/GitPlugin.js +120 -0
  64. package/dist/pageobjects/ide/theia/plugins/GitPlugin.js.map +1 -0
  65. package/dist/pageobjects/ide/theia/plugins/KubernetesPlugin.js +107 -0
  66. package/dist/pageobjects/ide/theia/plugins/KubernetesPlugin.js.map +1 -0
  67. package/dist/pageobjects/ide/theia/plugins/OpenshiftPlugin.js +99 -0
  68. package/dist/pageobjects/ide/theia/plugins/OpenshiftPlugin.js.map +1 -0
  69. package/dist/pageobjects/ide/theia/plugins/PluginsView.js +166 -0
  70. package/dist/pageobjects/ide/theia/plugins/PluginsView.js.map +1 -0
  71. package/dist/pageobjects/login/ICheLoginPage.js +12 -0
  72. package/dist/pageobjects/login/ICheLoginPage.js.map +1 -0
  73. package/dist/pageobjects/login/IOcpLoginPage.js +12 -0
  74. package/dist/pageobjects/login/IOcpLoginPage.js.map +1 -0
  75. package/dist/pageobjects/login/MultiUserLoginPage.js +49 -0
  76. package/dist/pageobjects/login/MultiUserLoginPage.js.map +1 -0
  77. package/dist/pageobjects/login/OcpUserLoginPage.js +53 -0
  78. package/dist/pageobjects/login/OcpUserLoginPage.js.map +1 -0
  79. package/dist/pageobjects/login/RegularUserOcpCheLoginPage.js +86 -0
  80. package/dist/pageobjects/login/RegularUserOcpCheLoginPage.js.map +1 -0
  81. package/dist/pageobjects/login/UpdateAccountInformationPage.js +74 -0
  82. package/dist/pageobjects/login/UpdateAccountInformationPage.js.map +1 -0
  83. package/dist/pageobjects/openshift/CheLoginPage.js +88 -0
  84. package/dist/pageobjects/openshift/CheLoginPage.js.map +1 -0
  85. package/dist/pageobjects/openshift/OcpLoginPage.js +106 -0
  86. package/dist/pageobjects/openshift/OcpLoginPage.js.map +1 -0
  87. package/dist/pageobjects/third-parties/GitLoginPage.js +85 -0
  88. package/dist/pageobjects/third-parties/GitLoginPage.js.map +1 -0
  89. package/dist/pageobjects/third-parties/GitOauthAppsSettings.js +110 -0
  90. package/dist/pageobjects/third-parties/GitOauthAppsSettings.js.map +1 -0
  91. package/dist/tests/MochaHooks.js +65 -0
  92. package/dist/tests/MochaHooks.js.map +1 -0
  93. package/dist/tests/devfiles/che-code/EmptyWorkspace.spec.js +48 -0
  94. package/dist/tests/devfiles/che-code/EmptyWorkspace.spec.js.map +1 -0
  95. package/dist/tests/devfiles/theia/CSlashCPlusPlus.spec.js +73 -0
  96. package/dist/tests/devfiles/theia/CSlashCPlusPlus.spec.js.map +1 -0
  97. package/dist/tests/devfiles/theia/DevfileSmoke.spec.js +47 -0
  98. package/dist/tests/devfiles/theia/DevfileSmoke.spec.js.map +1 -0
  99. package/dist/tests/devfiles/theia/DotNetCore.spec.js +81 -0
  100. package/dist/tests/devfiles/theia/DotNetCore.spec.js.map +1 -0
  101. package/dist/tests/devfiles/theia/Go.spec.js +72 -0
  102. package/dist/tests/devfiles/theia/Go.spec.js.map +1 -0
  103. package/dist/tests/devfiles/theia/JavaMaven.spec.js +60 -0
  104. package/dist/tests/devfiles/theia/JavaMaven.spec.js.map +1 -0
  105. package/dist/tests/devfiles/theia/JavaSpringBoot.spec.js +66 -0
  106. package/dist/tests/devfiles/theia/JavaSpringBoot.spec.js.map +1 -0
  107. package/dist/tests/devfiles/theia/JavaVertx.spec.js +60 -0
  108. package/dist/tests/devfiles/theia/JavaVertx.spec.js.map +1 -0
  109. package/dist/tests/devfiles/theia/NodeJS.spec.js +64 -0
  110. package/dist/tests/devfiles/theia/NodeJS.spec.js.map +1 -0
  111. package/dist/tests/devfiles/theia/PHPSimple.spec.js +74 -0
  112. package/dist/tests/devfiles/theia/PHPSimple.spec.js.map +1 -0
  113. package/dist/tests/devfiles/theia/Python.spec.js +58 -0
  114. package/dist/tests/devfiles/theia/Python.spec.js.map +1 -0
  115. package/dist/tests/devfiles/theia/PythonDjango.spec.js +61 -0
  116. package/dist/tests/devfiles/theia/PythonDjango.spec.js.map +1 -0
  117. package/dist/tests/devfiles/theia/Quarkus.spec.js +69 -0
  118. package/dist/tests/devfiles/theia/Quarkus.spec.js.map +1 -0
  119. package/dist/tests/devfiles/theia/Scala.spec.js +66 -0
  120. package/dist/tests/devfiles/theia/Scala.spec.js.map +1 -0
  121. package/dist/tests/e2e/theia/FactoryUrl.spec.js +40 -0
  122. package/dist/tests/e2e/theia/FactoryUrl.spec.js.map +1 -0
  123. package/dist/tests/e2e/theia/GitPublishBranch.spec.js +90 -0
  124. package/dist/tests/e2e/theia/GitPublishBranch.spec.js.map +1 -0
  125. package/dist/tests/e2e/theia/GitSelfSignCert.spec.js +90 -0
  126. package/dist/tests/e2e/theia/GitSelfSignCert.spec.js.map +1 -0
  127. package/dist/tests/e2e/theia/GitSsh.spec.js +120 -0
  128. package/dist/tests/e2e/theia/GitSsh.spec.js.map +1 -0
  129. package/dist/tests/e2e/theia/OpenshiftConnector.spec.js +124 -0
  130. package/dist/tests/e2e/theia/OpenshiftConnector.spec.js.map +1 -0
  131. package/dist/tests/e2e/theia/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.js +50 -0
  132. package/dist/tests/e2e/theia/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.js.map +1 -0
  133. package/dist/tests/e2e/theia/factories/DirectUrlFactoryWithRootFolderTest.spec.js +48 -0
  134. package/dist/tests/e2e/theia/factories/DirectUrlFactoryWithRootFolderTest.spec.js.map +1 -0
  135. package/dist/tests/e2e/theia/factories/DirectUrlFactoryWithSpecificBranchTest.spec.js +48 -0
  136. package/dist/tests/e2e/theia/factories/DirectUrlFactoryWithSpecificBranchTest.spec.js.map +1 -0
  137. package/dist/tests/e2e_happy_path/theia/DevWorkspaceHappyPath.spec.js +277 -0
  138. package/dist/tests/e2e_happy_path/theia/DevWorkspaceHappyPath.spec.js.map +1 -0
  139. package/dist/tests/e2e_happy_path/theia/HappyPath.spec.js +314 -0
  140. package/dist/tests/e2e_happy_path/theia/HappyPath.spec.js.map +1 -0
  141. package/dist/tests/intelij/IntelijOpenWorkspace.spec.js +39 -0
  142. package/dist/tests/intelij/IntelijOpenWorkspace.spec.js.map +1 -0
  143. package/dist/tests/load_test/theia/LoadTest.spec.js +41 -0
  144. package/dist/tests/load_test/theia/LoadTest.spec.js.map +1 -0
  145. package/dist/tests/login/LinkCheAndOcpUsers.spec.js +39 -0
  146. package/dist/tests/login/LinkCheAndOcpUsers.spec.js.map +1 -0
  147. package/dist/tests/login/Login.spec.js +28 -0
  148. package/dist/tests/login/Login.spec.js.map +1 -0
  149. package/dist/tests/plugins/theia/GitHubPullRequestPlugin.spec.js +117 -0
  150. package/dist/tests/plugins/theia/GitHubPullRequestPlugin.spec.js.map +1 -0
  151. package/dist/tests/plugins/theia/InstallPluginUsingUI.spec.js +62 -0
  152. package/dist/tests/plugins/theia/InstallPluginUsingUI.spec.js.map +1 -0
  153. package/dist/tests/plugins/theia/JavaPlugin.spec.js +82 -0
  154. package/dist/tests/plugins/theia/JavaPlugin.spec.js.map +1 -0
  155. package/dist/tests/plugins/theia/PhpPlugin.spec.js +96 -0
  156. package/dist/tests/plugins/theia/PhpPlugin.spec.js.map +1 -0
  157. package/dist/tests/plugins/theia/PythonPlugin.spec.js +72 -0
  158. package/dist/tests/plugins/theia/PythonPlugin.spec.js.map +1 -0
  159. package/dist/tests/plugins/theia/TypescriptPlugin.spec.js +135 -0
  160. package/dist/tests/plugins/theia/TypescriptPlugin.spec.js.map +1 -0
  161. package/dist/tests/plugins/theia/VscodeKubernetesPlugin.spec.js +69 -0
  162. package/dist/tests/plugins/theia/VscodeKubernetesPlugin.spec.js.map +1 -0
  163. package/dist/tests/plugins/theia/VscodeShellcheckPlugin.spec.js +82 -0
  164. package/dist/tests/plugins/theia/VscodeShellcheckPlugin.spec.js.map +1 -0
  165. package/dist/tests/plugins/theia/VscodeValePlugin.spec.js +70 -0
  166. package/dist/tests/plugins/theia/VscodeValePlugin.spec.js.map +1 -0
  167. package/dist/tests/plugins/theia/VscodeXmlPlugin.spec.js +81 -0
  168. package/dist/tests/plugins/theia/VscodeXmlPlugin.spec.js.map +1 -0
  169. package/dist/tests/plugins/theia/VscodeYamlPlugin.spec.js +78 -0
  170. package/dist/tests/plugins/theia/VscodeYamlPlugin.spec.js.map +1 -0
  171. package/dist/testsLibrary/WorkspaceHandlingTests.js +140 -0
  172. package/dist/testsLibrary/WorkspaceHandlingTests.js.map +1 -0
  173. package/dist/testsLibrary/che-code/ProjectAndFileTestsCheCode.js +54 -0
  174. package/dist/testsLibrary/che-code/ProjectAndFileTestsCheCode.js.map +1 -0
  175. package/dist/testsLibrary/theia/CodeExecutionTestsTheia.js +248 -0
  176. package/dist/testsLibrary/theia/CodeExecutionTestsTheia.js.map +1 -0
  177. package/dist/testsLibrary/theia/LanguageServerTestsTheia.js +230 -0
  178. package/dist/testsLibrary/theia/LanguageServerTestsTheia.js.map +1 -0
  179. package/dist/testsLibrary/theia/ProjectAndFileTestsTheia.js +133 -0
  180. package/dist/testsLibrary/theia/ProjectAndFileTestsTheia.js.map +1 -0
  181. package/dist/utils/AnimationChecker.js +45 -0
  182. package/dist/utils/AnimationChecker.js.map +1 -0
  183. package/dist/utils/BrowserTabsUtil.js +115 -0
  184. package/dist/utils/BrowserTabsUtil.js.map +1 -0
  185. package/dist/utils/DriverHelper.js +616 -0
  186. package/dist/utils/DriverHelper.js.map +1 -0
  187. package/dist/utils/Logger.js +84 -0
  188. package/dist/utils/Logger.js.map +1 -0
  189. package/dist/utils/Sanitizer.js +29 -0
  190. package/dist/utils/Sanitizer.js.map +1 -0
  191. package/dist/utils/ScreenCatcher.js +107 -0
  192. package/dist/utils/ScreenCatcher.js.map +1 -0
  193. package/dist/utils/VCS/CheGitApi.js +42 -0
  194. package/dist/utils/VCS/CheGitApi.js.map +1 -0
  195. package/dist/utils/VCS/github/GitHubUtil.js +126 -0
  196. package/dist/utils/VCS/github/GitHubUtil.js.map +1 -0
  197. package/dist/utils/WorkspaceNameHandler.js +60 -0
  198. package/dist/utils/WorkspaceNameHandler.js.map +1 -0
  199. package/dist/utils/requestHandlers/CheApiRequestHandler.js +126 -0
  200. package/dist/utils/requestHandlers/CheApiRequestHandler.js.map +1 -0
  201. package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.js +49 -0
  202. package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +1 -0
  203. package/dist/utils/requestHandlers/headers/IAuthorizationHeaderHandler.js +12 -0
  204. package/dist/utils/requestHandlers/headers/IAuthorizationHeaderHandler.js.map +1 -0
  205. package/dist/utils/requestHandlers/tokens/CheMultiuserTokenHandler.js +50 -0
  206. package/dist/utils/requestHandlers/tokens/CheMultiuserTokenHandler.js.map +1 -0
  207. package/dist/utils/requestHandlers/tokens/ITokenHandler.js +12 -0
  208. package/dist/utils/requestHandlers/tokens/ITokenHandler.js.map +1 -0
  209. package/dist/utils/theia/PreferencesHandlerTheia.js +142 -0
  210. package/dist/utils/theia/PreferencesHandlerTheia.js.map +1 -0
  211. package/dist/utils/workspace/ApiUrlResolver.js +67 -0
  212. package/dist/utils/workspace/ApiUrlResolver.js.map +1 -0
  213. package/dist/utils/workspace/ITestWorkspaceUtil.js +12 -0
  214. package/dist/utils/workspace/ITestWorkspaceUtil.js.map +1 -0
  215. package/dist/utils/workspace/TestWorkspaceUtil.js +357 -0
  216. package/dist/utils/workspace/TestWorkspaceUtil.js.map +1 -0
  217. package/dist/utils/workspace/WorkspaceStatus.js +19 -0
  218. package/dist/utils/workspace/WorkspaceStatus.js.map +1 -0
  219. package/package.json +2 -2
@@ -0,0 +1,463 @@
1
+ "use strict";
2
+ /*********************************************************************
3
+ * Copyright (c) 2019 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 Editor_1;
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.Editor = void 0;
26
+ require("reflect-metadata");
27
+ const inversify_1 = require("inversify");
28
+ const DriverHelper_1 = require("../../../utils/DriverHelper");
29
+ const inversify_types_1 = require("../../../inversify.types");
30
+ const TestConstants_1 = require("../../../TestConstants");
31
+ const selenium_webdriver_1 = require("selenium-webdriver");
32
+ const Logger_1 = require("../../../utils/Logger");
33
+ const TimeoutConstants_1 = require("../../../TimeoutConstants");
34
+ let Editor = Editor_1 = class Editor {
35
+ constructor(driverHelper) {
36
+ this.driverHelper = driverHelper;
37
+ }
38
+ async deleteAllText(editorTab) {
39
+ Logger_1.Logger.debug('Editor.deleteAllText');
40
+ await this.selectTab(editorTab);
41
+ await this.type(editorTab, selenium_webdriver_1.Key.chord(selenium_webdriver_1.Key.CONTROL, 'a', selenium_webdriver_1.Key.DELETE), 1);
42
+ }
43
+ async waitSuggestionContainer(timeout = TimeoutConstants_1.TimeoutConstants.TS_SUGGESTION_TIMEOUT) {
44
+ Logger_1.Logger.debug('Editor.waitSuggestionContainer');
45
+ await this.driverHelper.waitVisibility(selenium_webdriver_1.By.css(Editor_1.SUGGESTION_WIDGET_BODY_CSS), timeout);
46
+ }
47
+ async waitSuggestionContainerClosed(timeout = TimeoutConstants_1.TimeoutConstants.TS_SUGGESTION_TIMEOUT) {
48
+ Logger_1.Logger.debug('Editor.waitSuggestionContainerClosed');
49
+ await this.driverHelper.waitDisappearanceWithTimeout(selenium_webdriver_1.By.css(Editor_1.SUGGESTION_WIDGET_BODY_CSS), timeout);
50
+ }
51
+ async waitSuggestion(editorTabTitle, suggestionText, timeout = TimeoutConstants_1.TimeoutConstants.TS_SUGGESTION_TIMEOUT, lineNumber, charNumber) {
52
+ const charInLineNumber = (charNumber ? charNumber : 1);
53
+ // if line defined the method sets cursor to line and char
54
+ // before invoking suggestion container and repeat this
55
+ // cycle if suggestion didn't display
56
+ if (lineNumber) {
57
+ await this.waitSuggestionWithResettingCursor(editorTabTitle, suggestionText, timeout, lineNumber, charInLineNumber);
58
+ return;
59
+ }
60
+ // if line not defined the method just invoke suggestion container
61
+ // without setting cursor to line and char and repeat this
62
+ // cycle if suggestion didn't display
63
+ await this.waitSuggestionWithoutResettingCursor(editorTabTitle, suggestionText, timeout);
64
+ }
65
+ async closeSuggestionContainer(editorTabTitle, timeout = TimeoutConstants_1.TimeoutConstants.TS_SUGGESTION_TIMEOUT) {
66
+ Logger_1.Logger.debug(`Editor.closeSuggestionContainer tabTitle: "${editorTabTitle}"`);
67
+ await this.driverHelper.getDriver().wait(async () => {
68
+ // if container already closed stop the method execution
69
+ try {
70
+ // for avoiding problem when the inner timeout
71
+ // bigger than timeout of the method
72
+ const suggestionContainerTimeout = timeout / 2;
73
+ await this.waitSuggestionContainer(suggestionContainerTimeout);
74
+ }
75
+ catch (err) {
76
+ if (err instanceof selenium_webdriver_1.error.TimeoutError) {
77
+ return true;
78
+ }
79
+ throw err;
80
+ }
81
+ // try to close container
82
+ try {
83
+ await this.pressEscapeButton(editorTabTitle);
84
+ await this.waitSuggestionContainerClosed(2000);
85
+ return true;
86
+ }
87
+ catch (err) {
88
+ if (!(err instanceof selenium_webdriver_1.error.TimeoutError)) {
89
+ throw err;
90
+ }
91
+ }
92
+ }, timeout);
93
+ }
94
+ async waitSuggestionWithScrolling(editorTabTitle, suggestionText, timeout = TimeoutConstants_1.TimeoutConstants.TS_SUGGESTION_TIMEOUT) {
95
+ Logger_1.Logger.debug(`Editor.waitSuggestion tabTitle: "${editorTabTitle}" suggestion: "${suggestionText}"`);
96
+ const suggestionLocator = this.getSuggestionLineXpathLocator(suggestionText);
97
+ await this.driverHelper.getDriver().wait(async () => {
98
+ try {
99
+ await this.scrollAndSearchSuggestion(editorTabTitle, suggestionLocator, timeout / 3);
100
+ return true;
101
+ }
102
+ catch (err) {
103
+ if (!(err instanceof selenium_webdriver_1.error.TimeoutError)) {
104
+ throw err;
105
+ }
106
+ await this.closeSuggestionContainer(editorTabTitle, TimeoutConstants_1.TimeoutConstants.TS_CLOSE_SUGGESTION_CONTAINER_TIMEOUT);
107
+ await this.pressControlSpaceCombination(editorTabTitle);
108
+ }
109
+ }, timeout);
110
+ }
111
+ async pressControlSpaceCombination(editorTabTitle) {
112
+ Logger_1.Logger.debug(`Editor.pressControlSpaceCombination "${editorTabTitle}"`);
113
+ await this.performKeyCombination(editorTabTitle, selenium_webdriver_1.Key.chord(selenium_webdriver_1.Key.CONTROL, selenium_webdriver_1.Key.SPACE));
114
+ }
115
+ async pressEscapeButton(editorTabTitle) {
116
+ Logger_1.Logger.debug(`Editor.pressEscapeButton "${editorTabTitle}"`);
117
+ await this.performKeyCombination(editorTabTitle, selenium_webdriver_1.Key.ESCAPE);
118
+ }
119
+ async clickOnSuggestion(suggestionText, timeout = TimeoutConstants_1.TimeoutConstants.TS_SUGGESTION_TIMEOUT) {
120
+ Logger_1.Logger.debug(`Editor.clickOnSuggestion "${suggestionText}"`);
121
+ await this.driverHelper.waitAndClick(this.getSuggestionLineXpathLocator(suggestionText), timeout);
122
+ }
123
+ async waitTab(tabTitle, timeout = TimeoutConstants_1.TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT) {
124
+ Logger_1.Logger.debug(`Editor.waitTab "${tabTitle}"`);
125
+ await this.driverHelper.waitVisibility(selenium_webdriver_1.By.xpath(this.getTabXpathLocator(tabTitle)), timeout);
126
+ }
127
+ async waitTabDisappearance(tabTitle, attempt = TestConstants_1.TestConstants.TS_SELENIUM_DEFAULT_ATTEMPTS, polling = TestConstants_1.TestConstants.TS_SELENIUM_DEFAULT_POLLING) {
128
+ Logger_1.Logger.debug(`Editor.waitTabDisappearance "${tabTitle}"`);
129
+ await this.driverHelper.waitDisappearance(selenium_webdriver_1.By.xpath(this.getTabXpathLocator(tabTitle)), attempt, polling);
130
+ }
131
+ async clickOnTab(tabTitle, timeout = TimeoutConstants_1.TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT) {
132
+ Logger_1.Logger.debug(`Editor.clickOnTab "${tabTitle}"`);
133
+ await this.driverHelper.waitAndClick(selenium_webdriver_1.By.xpath(this.getTabXpathLocator(tabTitle)), timeout);
134
+ }
135
+ async waitTabFocused(tabTitle, timeout = TimeoutConstants_1.TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT) {
136
+ Logger_1.Logger.debug(`Editor.waitTabFocused "${tabTitle}"`);
137
+ const focusedTabLocator = selenium_webdriver_1.By.xpath(`//li[contains(@class, 'p-TabBar-tab') and contains(@class, 'theia-mod-active')]//div[text()='${tabTitle}']`);
138
+ await this.driverHelper.waitVisibility(focusedTabLocator, timeout);
139
+ }
140
+ async selectTab(tabTitle) {
141
+ Logger_1.Logger.debug(`Editor.selectTab "${tabTitle}"`);
142
+ await this.waitTab(tabTitle);
143
+ await this.clickOnTab(tabTitle);
144
+ await this.waitTabFocused(tabTitle);
145
+ }
146
+ async closeTab(tabTitle, timeout = TimeoutConstants_1.TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT) {
147
+ Logger_1.Logger.debug(`Editor.closeTab "${tabTitle}"`);
148
+ const tabCloseButtonLocator = selenium_webdriver_1.By.xpath(`//li[contains(@id,'${tabTitle}')]//div[contains(@class, 'p-TabBar-tabCloseIcon')]`);
149
+ await this.driverHelper.waitAndClick(tabCloseButtonLocator, timeout);
150
+ }
151
+ async waitTabWithUnsavedStatus(tabTitle, timeout = TimeoutConstants_1.TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT) {
152
+ Logger_1.Logger.debug(`Editor.waitTabWithUnsavedStatus "${tabTitle}"`);
153
+ const unsavedTabLocator = this.getTabWithUnsavedStatus(tabTitle);
154
+ await this.driverHelper.waitVisibility(unsavedTabLocator, timeout);
155
+ }
156
+ async waitTabWithSavedStatus(tabTitle, timeout = TimeoutConstants_1.TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT) {
157
+ Logger_1.Logger.debug(`Editor.waitTabWithSavedStatus "${tabTitle}"`);
158
+ const unsavedTabLocator = this.getTabWithUnsavedStatus(tabTitle);
159
+ await this.driverHelper.getDriver().wait(async () => {
160
+ try {
161
+ await this.driverHelper.waitDisappearanceWithTimeout(unsavedTabLocator, TestConstants_1.TestConstants.TS_SELENIUM_DEFAULT_POLLING);
162
+ await this.waitTab(tabTitle, timeout);
163
+ return true;
164
+ }
165
+ catch (err) {
166
+ if (!(err instanceof selenium_webdriver_1.error.TimeoutError)) {
167
+ throw err;
168
+ }
169
+ console.log(`The editor tab with title "${tabTitle}" has unsaved status, wait once again`);
170
+ }
171
+ }, timeout);
172
+ }
173
+ async waitEditorOpened(editorTabTitle, timeout = TimeoutConstants_1.TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT) {
174
+ Logger_1.Logger.debug(`Editor.waitEditorOpened "${editorTabTitle}"`);
175
+ const firstEditorLineLocator = selenium_webdriver_1.By.xpath(this.getEditorLineXpathLocator(1));
176
+ await this.driverHelper.waitPresence(this.getEditorBodyLocator(editorTabTitle), timeout);
177
+ await this.driverHelper.waitPresence(firstEditorLineLocator, timeout);
178
+ }
179
+ async waitEditorAvailable(tabTitle, timeout = TimeoutConstants_1.TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT) {
180
+ Logger_1.Logger.debug(`Editor.waitEditorAvailable "${tabTitle}"`);
181
+ await this.waitTab(tabTitle, timeout);
182
+ await this.waitEditorOpened(tabTitle, timeout);
183
+ }
184
+ async getLineText(tabTitle, lineNumber) {
185
+ Logger_1.Logger.debug(`Editor.getLineText "${tabTitle}"`);
186
+ const lineIndex = lineNumber - 1;
187
+ const editorText = await this.getEditorVisibleText(tabTitle);
188
+ const editorLines = editorText.split('\n');
189
+ const editorLine = editorLines[lineIndex] + '\n';
190
+ return editorLine;
191
+ }
192
+ async getEditorVisibleText(tabTitle) {
193
+ Logger_1.Logger.debug(`Editor.getEditorVisibleText "${tabTitle}"`);
194
+ const editorBodyLocator = selenium_webdriver_1.By.xpath(`//div[contains(@data-uri, \'${tabTitle}')]//div[contains(@class,\'view-lines\')]`);
195
+ // const editorBodyLocator: By = By.xpath('//div[@class=\'view-lines\']');
196
+ const editorText = await this.driverHelper.waitAndGetText(editorBodyLocator);
197
+ return editorText;
198
+ }
199
+ async waitText(tabTitle, expectedText, timeout = TimeoutConstants_1.TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT, polling = TestConstants_1.TestConstants.TS_SELENIUM_DEFAULT_POLLING) {
200
+ Logger_1.Logger.debug(`Editor.waitText "${tabTitle}"`);
201
+ await this.driverHelper.getDriver().wait(async () => {
202
+ const editorText = await this.getEditorVisibleText(tabTitle);
203
+ const isEditorContainText = editorText.includes(expectedText);
204
+ if (isEditorContainText) {
205
+ return true;
206
+ }
207
+ await this.driverHelper.wait(polling);
208
+ }, timeout);
209
+ }
210
+ async followAndWaitForText(editorTabTitle, expectedText, timeout = TimeoutConstants_1.TimeoutConstants.TS_EDITOR_TAB_INTERACTION_TIMEOUT, polling = TestConstants_1.TestConstants.TS_SELENIUM_DEFAULT_POLLING) {
211
+ Logger_1.Logger.debug(`Editor.followAndWaitForText title: "${editorTabTitle}" text: "${expectedText}"`);
212
+ await this.selectTab(editorTabTitle);
213
+ await this.driverHelper.getDriver().wait(async () => {
214
+ await this.performKeyCombination(editorTabTitle, selenium_webdriver_1.Key.chord(selenium_webdriver_1.Key.CONTROL, selenium_webdriver_1.Key.END));
215
+ const editorText = await this.getEditorVisibleText(editorTabTitle);
216
+ const isEditorContainText = editorText.includes(expectedText);
217
+ if (isEditorContainText) {
218
+ return true;
219
+ }
220
+ await this.driverHelper.wait(polling);
221
+ }, timeout);
222
+ }
223
+ async moveCursorToLineAndChar(editorTabTitle, line, char) {
224
+ Logger_1.Logger.debug(`Editor.moveCursorToLineAndChar title: "${editorTabTitle}" line: "${line}" char: "${char}"`);
225
+ // set cursor to the 1:1 position
226
+ await this.performKeyCombination(editorTabTitle, selenium_webdriver_1.Key.chord(selenium_webdriver_1.Key.CONTROL, selenium_webdriver_1.Key.HOME));
227
+ // move cursor to line
228
+ for (let i = 1; i < line; i++) {
229
+ await this.performKeyCombination(editorTabTitle, selenium_webdriver_1.Key.ARROW_DOWN);
230
+ }
231
+ // move cursor to char
232
+ for (let i = 1; i < char; i++) {
233
+ await this.performKeyCombination(editorTabTitle, selenium_webdriver_1.Key.ARROW_RIGHT);
234
+ }
235
+ }
236
+ async performKeyCombination(editorTabTitle, text) {
237
+ Logger_1.Logger.debug(`Editor.performKeyCombination title: "${editorTabTitle}" text: "${text}"`);
238
+ const interactionContainerLocator = this.getEditorActionArreaLocator(editorTabTitle);
239
+ await this.driverHelper.type(interactionContainerLocator, text);
240
+ }
241
+ async type(editorTabTitle, text, line) {
242
+ Logger_1.Logger.debug(`Editor.type title: "${editorTabTitle}" text: "${text}"`);
243
+ await this.selectTab(editorTabTitle);
244
+ await this.moveCursorToLineAndChar(editorTabTitle, line, 1);
245
+ await this.performKeyCombination(editorTabTitle, text);
246
+ }
247
+ async waitErrorInLine(lineNumber, fileName, timeout = TimeoutConstants_1.TimeoutConstants.TS_ERROR_HIGHLIGHTING_TIMEOUT) {
248
+ Logger_1.Logger.debug(`Editor.waitErrorInLine line: "${lineNumber}"`);
249
+ const errorInLineLocator = await this.getErrorInLineLocator(lineNumber, fileName);
250
+ await this.driverHelper.waitVisibility(errorInLineLocator, timeout);
251
+ }
252
+ async waitErrorInLineDisappearance(lineNumber, fileName, timeout = TimeoutConstants_1.TimeoutConstants.TS_ERROR_HIGHLIGHTING_TIMEOUT) {
253
+ Logger_1.Logger.debug(`Editor.waitErrorInLineDisappearance line: "${lineNumber}"`);
254
+ const errorInLineLocator = await this.getErrorInLineLocator(lineNumber, fileName);
255
+ await this.driverHelper.waitDisappearanceWithTimeout(errorInLineLocator, timeout);
256
+ }
257
+ async waitWarningInLine(lineNumber, fileName, timeout = TimeoutConstants_1.TimeoutConstants.TS_ERROR_HIGHLIGHTING_TIMEOUT) {
258
+ Logger_1.Logger.debug(`Editor.waitWarningInLine line: "${lineNumber}"`);
259
+ const warningInLineLocator = await this.getWarningInLineLocator(lineNumber, fileName);
260
+ await this.driverHelper.waitVisibility(warningInLineLocator, timeout);
261
+ }
262
+ async waitInfoInLine(lineNumber, fileName, timeout = TimeoutConstants_1.TimeoutConstants.TS_ERROR_HIGHLIGHTING_TIMEOUT) {
263
+ Logger_1.Logger.debug(`Editor.waitInfoInLine line: "${lineNumber}"`);
264
+ const infoInLineLocator = await this.getInfoInLineLocator(lineNumber, fileName);
265
+ await this.driverHelper.waitVisibility(infoInLineLocator, timeout);
266
+ }
267
+ async waitWarningInLineDisappearance(lineNumber, fileName, timeout = TimeoutConstants_1.TimeoutConstants.TS_ERROR_HIGHLIGHTING_TIMEOUT) {
268
+ Logger_1.Logger.debug(`Editor.waitWarningInLineDisappearance line: "${lineNumber}"`);
269
+ const warningInLineLocator = await this.getWarningInLineLocator(lineNumber, fileName);
270
+ await this.driverHelper.waitDisappearanceWithTimeout(warningInLineLocator, timeout);
271
+ }
272
+ async waitStoppedDebugBreakpoint(tabTitle, lineNumber, timeout = TimeoutConstants_1.TimeoutConstants.TS_BREAKPOINT_DEFAULT_TIMEOUT) {
273
+ Logger_1.Logger.debug(`Editor.waitStoppedDebugBreakpoint title: "${tabTitle}" line: "${lineNumber}"`);
274
+ await this.driverHelper.waitUntilTrue(() => this.isBreakpointPresent(tabTitle, lineNumber, true), timeout);
275
+ }
276
+ async waitBreakpoint(tabTitle, lineNumber, timeout = TimeoutConstants_1.TimeoutConstants.TS_BREAKPOINT_DEFAULT_TIMEOUT) {
277
+ Logger_1.Logger.debug(`Editor.waitBreakpoint title: "${tabTitle}" line: "${lineNumber}"`);
278
+ await this.driverHelper.waitUntilTrue(() => this.isBreakpointPresent(tabTitle, lineNumber), timeout);
279
+ }
280
+ async waitBreakpointAbsence(tabTitle, lineNumber, timeout = TimeoutConstants_1.TimeoutConstants.TS_BREAKPOINT_DEFAULT_TIMEOUT) {
281
+ Logger_1.Logger.debug(`Editor.waitBreakpointAbsence title: "${tabTitle}" line: "${lineNumber}"`);
282
+ await this.driverHelper.waitUntilTrue(() => !this.isBreakpointPresent(tabTitle, lineNumber), timeout);
283
+ }
284
+ async activateBreakpoint(tabTitle, lineNumber) {
285
+ Logger_1.Logger.debug(`Editor.activateBreakpoint title: "${tabTitle}" line: "${lineNumber}"`);
286
+ const attempts = TestConstants_1.TestConstants.TS_SELENIUM_DEFAULT_ATTEMPTS;
287
+ const polling = TestConstants_1.TestConstants.TS_SELENIUM_DEFAULT_POLLING;
288
+ const breakpointStatus = await this.isBreakpointPresent(tabTitle, lineNumber);
289
+ if (breakpointStatus) {
290
+ return;
291
+ }
292
+ for (let i = 0; i < attempts; i++) {
293
+ try {
294
+ await this.selectTab(tabTitle);
295
+ await this.moveCursorToLineAndChar(tabTitle, lineNumber, 1);
296
+ await this.performKeyCombination(tabTitle, selenium_webdriver_1.Key.F9);
297
+ await this.waitBreakpoint(tabTitle, lineNumber);
298
+ return;
299
+ }
300
+ catch (err) {
301
+ if (i === attempts - 1) {
302
+ throw new selenium_webdriver_1.error.TimeoutError(`Exceeded maximum breakpoint activation attempts`);
303
+ }
304
+ // ignore errors and wait
305
+ Logger_1.Logger.debug(`Editor.activateBreakpoint - Error: ${err}`);
306
+ await this.driverHelper.wait(polling);
307
+ }
308
+ }
309
+ }
310
+ async getLineYCoordinates(lineNumber, fileName) {
311
+ Logger_1.Logger.debug(`Editor.getLineYCoordinates line: "${lineNumber}"`);
312
+ const lineNumberLocator = selenium_webdriver_1.By.xpath(`//div[contains(@data-uri, '${fileName}')]` +
313
+ `//div[contains(@class, 'line-numbers') and text()='${lineNumber}']` +
314
+ `//parent::div[contains(@style, 'position')]`);
315
+ let elementStyleValue = await this.driverHelper.waitAndGetElementAttribute(lineNumberLocator, 'style', TimeoutConstants_1.TimeoutConstants.TS_SELENIUM_CLICK_ON_VISIBLE_ITEM);
316
+ Logger_1.Logger.trace(`Editor.getLineYCoordinates style string:${elementStyleValue}`);
317
+ const lineYCoordinate = Number.parseInt(elementStyleValue.split('top:')[1].split('px')[0], 10);
318
+ if (Number.isNaN(lineYCoordinate)) {
319
+ throw new selenium_webdriver_1.error.UnsupportedOperationError(`Failed to parse the ${elementStyleValue} row to number format`);
320
+ }
321
+ return lineYCoordinate;
322
+ }
323
+ async clickOnLineAndChar(line, char, fileName) {
324
+ Logger_1.Logger.debug(`Editor.clickOnLineAndChar line: "${line}" char: "${char}"`);
325
+ const yPosition = await this.getLineYCoordinates(line, fileName) + Editor_1.ADDITIONAL_SHIFTING_TO_Y;
326
+ const xPosition = char + Editor_1.ADDITIONAL_SHIFTING_TO_X;
327
+ this.driverHelper.getAction().move({ x: xPosition, y: yPosition }).click().perform();
328
+ }
329
+ async goToDefinitionWithMouseClicking(line, char, fileName) {
330
+ Logger_1.Logger.debug(`Editor.goToDefinitionWithMouseClicking line: "${line}" char: "${char}"`);
331
+ const yPosition = await this.getLineYCoordinates(line, fileName) + Editor_1.ADDITIONAL_SHIFTING_TO_Y;
332
+ const xPosition = char + Editor_1.ADDITIONAL_SHIFTING_TO_X;
333
+ this.driverHelper.getAction()
334
+ .keyDown(selenium_webdriver_1.Key.CONTROL)
335
+ .move({ x: xPosition, y: yPosition })
336
+ .click()
337
+ .keyDown(selenium_webdriver_1.Key.CONTROL)
338
+ .perform();
339
+ }
340
+ async mouseRightButtonClick(line, char, fileName) {
341
+ Logger_1.Logger.debug(`Editor.mouseRightButtonClick line: "${line}" char: "${char}"`);
342
+ const yPosition = await this.getLineYCoordinates(line, fileName) + Editor_1.ADDITIONAL_SHIFTING_TO_Y;
343
+ const xPosition = char + Editor_1.ADDITIONAL_SHIFTING_TO_X;
344
+ this.driverHelper.getAction()
345
+ .move({ x: xPosition, y: yPosition })
346
+ .contextClick()
347
+ .perform();
348
+ }
349
+ async scrollAndSearchSuggestion(editorTabTitle, suggestionLocator, timeout = 10000) {
350
+ await this.driverHelper.getDriver().wait(async () => {
351
+ const loadingLocator = selenium_webdriver_1.By.xpath(Editor_1.SUGGESTION_LOADING_XPATH);
352
+ await this.waitSuggestionContainer();
353
+ await this.driverHelper.waitDisappearance(loadingLocator);
354
+ await this.driverHelper.wait(1000);
355
+ if (await this.driverHelper.isVisible(suggestionLocator)) {
356
+ return true;
357
+ }
358
+ await this.performKeyCombination(editorTabTitle, selenium_webdriver_1.Key.ARROW_DOWN);
359
+ }, timeout);
360
+ }
361
+ getTabWithUnsavedStatus(tabTitle) {
362
+ return selenium_webdriver_1.By.xpath(`//div[text()='${tabTitle}']/parent::li[contains(@class, 'theia-mod-dirty')]`);
363
+ }
364
+ getEditorBodyLocator(editorTabTitle) {
365
+ const editorXpathLocator = `//div[@id='theia-main-content-panel']//div[contains(@class, 'monaco-editor')` +
366
+ ` and contains(@data-uri, '${editorTabTitle}')]//*[contains(@class, 'lines-content')]`;
367
+ return selenium_webdriver_1.By.xpath(editorXpathLocator);
368
+ }
369
+ getEditorActionArreaLocator(editorTabTitle) {
370
+ const editorActionArreaXpathLocator = `//div[@id='theia-main-content-panel']//div[contains(@class, 'monaco-editor')` +
371
+ ` and contains(@data-uri, '${editorTabTitle}')]//textarea`;
372
+ return selenium_webdriver_1.By.xpath(editorActionArreaXpathLocator);
373
+ }
374
+ getEditorLineXpathLocator(lineNumber) {
375
+ return `(//div[contains(@class,'lines-content')]//div[@class='view-lines monaco-mouse-cursor-text']/div[@class='view-line'])[${lineNumber}]`;
376
+ }
377
+ getSuggestionLineXpathLocator(suggestionText) {
378
+ return selenium_webdriver_1.By.xpath(`//div[@widgetid='editor.widget.suggestWidget']//span[@class='monaco-highlighted-label' and contains(.,'${suggestionText}')]`);
379
+ }
380
+ getTabXpathLocator(tabTitle) {
381
+ return `//li[contains(@class, 'p-TabBar-tab')]//div[text()='${tabTitle}']`;
382
+ }
383
+ async getErrorInLineLocator(lineNumber, fileName) {
384
+ const lineYCoordinates = await this.getLineYCoordinates(lineNumber, fileName);
385
+ return selenium_webdriver_1.By.xpath(`//div[contains(@style, 'top:${lineYCoordinates}px')]//div[contains(@class, 'squiggly-error')]`);
386
+ }
387
+ async getWarningInLineLocator(lineNumber, fileName) {
388
+ const lineYCoordinates = await this.getLineYCoordinates(lineNumber, fileName);
389
+ return selenium_webdriver_1.By.xpath(`//div[contains(@style, 'top:${lineYCoordinates}px')]//div[contains(@class, 'squiggly-warning')]`);
390
+ }
391
+ async getInfoInLineLocator(lineNumber, fileName) {
392
+ const lineYCoordinates = await this.getLineYCoordinates(lineNumber, fileName);
393
+ return selenium_webdriver_1.By.xpath(`//div[contains(@style, 'top:${lineYCoordinates}px')]//div[contains(@class, 'squiggly-info')]`);
394
+ }
395
+ async waitSuggestionWithResettingCursor(editorTabTitle, suggestionText, timeout = TimeoutConstants_1.TimeoutConstants.TS_SUGGESTION_TIMEOUT, lineNumber, charNumber) {
396
+ const suggestionLocator = this.getSuggestionLineXpathLocator(suggestionText);
397
+ const methodLogText = `Editor.waitSuggestion tabTitle: "${editorTabTitle}" ` +
398
+ `suggestion: "${suggestionText}" ` +
399
+ `line: "${lineNumber}" ` +
400
+ `char: "${charNumber}"`;
401
+ Logger_1.Logger.debug(methodLogText);
402
+ await this.driverHelper.getDriver().wait(async () => {
403
+ await this.selectTab(editorTabTitle);
404
+ await this.moveCursorToLineAndChar(editorTabTitle, lineNumber, charNumber);
405
+ await this.pressControlSpaceCombination(editorTabTitle);
406
+ try {
407
+ await this.driverHelper.waitVisibility(suggestionLocator, 5000);
408
+ await this.closeSuggestionContainer(editorTabTitle);
409
+ return true;
410
+ }
411
+ catch (err) {
412
+ if (!(err instanceof selenium_webdriver_1.error.TimeoutError)) {
413
+ throw err;
414
+ }
415
+ }
416
+ }, timeout);
417
+ }
418
+ async waitSuggestionWithoutResettingCursor(editorTabTitle, suggestionText, timeout = TimeoutConstants_1.TimeoutConstants.TS_SUGGESTION_TIMEOUT) {
419
+ Logger_1.Logger.debug(`Editor.waitSuggestion tabTitle: "${editorTabTitle}" suggestion: "${suggestionText}"`);
420
+ const suggestionLocator = this.getSuggestionLineXpathLocator(suggestionText);
421
+ await this.driverHelper.getDriver().wait(async () => {
422
+ try {
423
+ await this.driverHelper.waitVisibility(suggestionLocator, 5000);
424
+ await this.closeSuggestionContainer(editorTabTitle);
425
+ return true;
426
+ }
427
+ catch (err) {
428
+ if (!(err instanceof selenium_webdriver_1.error.TimeoutError)) {
429
+ throw err;
430
+ }
431
+ await this.closeSuggestionContainer(editorTabTitle, timeout);
432
+ await this.pressControlSpaceCombination(editorTabTitle);
433
+ }
434
+ }, timeout);
435
+ }
436
+ /**
437
+ * Checks for breakpoint presence in currently opened editor on given line.
438
+ *
439
+ * @param lineNumber Line number to check the breakpoint presence on.
440
+ * @param triggered Whether this breakpoint is triggered or not. Default false.
441
+ */
442
+ async isBreakpointPresent(tabTitle, lineNumber, triggered = false) {
443
+ Logger_1.Logger.debug('Editor.isBreakpointPresent');
444
+ const linesBarXpathLocator = `//div[contains(@id, '${tabTitle}')]//div[@class='margin']`;
445
+ const triggeredBreakpointXpathLocator = `//div[contains(@class, 'theia-debug-breakpoint') and contains(@class, 'theia-debug-top-stack-frame')]`;
446
+ const regularBreakpointXpathLocator = `//div[contains(@class, 'theia-debug-breakpoint')]`;
447
+ const lineNumberRelativeXpathLocator = `/parent::div/div[contains(@class, 'line-numbers') and text()=${lineNumber}]`;
448
+ const breakpointLocator = (triggered ? triggeredBreakpointXpathLocator : regularBreakpointXpathLocator);
449
+ const breakpointLineNumberXpathLocator = linesBarXpathLocator + breakpointLocator + lineNumberRelativeXpathLocator;
450
+ return await this.driverHelper.isVisible(selenium_webdriver_1.By.xpath(breakpointLineNumberXpathLocator));
451
+ }
452
+ };
453
+ Editor.SUGGESTION_WIDGET_BODY_CSS = 'div.visible[widgetId=\'editor.widget.suggestWidget\']';
454
+ Editor.SUGGESTION_LOADING_XPATH = '//div[@widgetid=\'editor.widget.suggestWidget\']//div[@class=\'message\' and contains(.,\'Loading...\')]';
455
+ Editor.ADDITIONAL_SHIFTING_TO_Y = 19;
456
+ Editor.ADDITIONAL_SHIFTING_TO_X = 1;
457
+ Editor = Editor_1 = __decorate([
458
+ inversify_1.injectable(),
459
+ __param(0, inversify_1.inject(inversify_types_1.CLASSES.DriverHelper)),
460
+ __metadata("design:paramtypes", [DriverHelper_1.DriverHelper])
461
+ ], Editor);
462
+ exports.Editor = Editor;
463
+ //# sourceMappingURL=Editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Editor.js","sourceRoot":"","sources":["../../../../pageobjects/ide/theia/Editor.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;;;;;;;;;;;;;;;AAExE,4BAA0B;AAC1B,yCAA+C;AAC/C,8DAA2D;AAC3D,8DAAmD;AACnD,0DAAuD;AACvD,2DAAoD;AACpD,kDAA+C;AAC/C,gEAA6D;AAG7D,IAAa,MAAM,cAAnB,MAAa,MAAM;IAOf,YAA2D,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAI,CAAC;IAEnF,KAAK,CAAC,aAAa,CAAC,SAAiB;QACxC,eAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAErC,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAG,CAAC,KAAK,CAAC,wBAAG,CAAC,OAAO,EAAE,GAAG,EAAE,wBAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,UAAkB,mCAAgB,CAAC,qBAAqB;QACzF,eAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAE/C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,uBAAE,CAAC,GAAG,CAAC,QAAM,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/F,CAAC;IAEM,KAAK,CAAC,6BAA6B,CAAC,UAAkB,mCAAgB,CAAC,qBAAqB;QAC/F,eAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAErD,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,uBAAE,CAAC,GAAG,CAAC,QAAM,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7G,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,cAAsB,EAC9C,cAAsB,EACtB,UAAkB,mCAAgB,CAAC,qBAAqB,EACxD,UAAmB,EACnB,UAAmB;QAEnB,MAAM,gBAAgB,GAAW,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/D,0DAA0D;QAC1D,uDAAuD;QACvD,qCAAqC;QACrC,IAAI,UAAU,EAAE;YACZ,MAAM,IAAI,CAAC,iCAAiC,CAAC,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;YACpH,OAAO;SACV;QAED,kEAAkE;QAClE,0DAA0D;QAC1D,qCAAqC;QACrC,MAAM,IAAI,CAAC,oCAAoC,CAAC,cAAc,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAE7F,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,cAAsB,EAAE,UAAkB,mCAAgB,CAAC,qBAAqB;QAClH,eAAM,CAAC,KAAK,CAAC,8CAA8C,cAAc,GAAG,CAAC,CAAC;QAE9E,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChD,wDAAwD;YACxD,IAAI;gBACA,8CAA8C;gBAC9C,oCAAoC;gBACpC,MAAM,0BAA0B,GAAW,OAAO,GAAG,CAAC,CAAC;gBAEvD,MAAM,IAAI,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,CAAC;aAClE;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,YAAY,0BAAK,CAAC,YAAY,EAAE;oBACnC,OAAO,IAAI,CAAC;iBACf;gBAED,MAAM,GAAG,CAAC;aACb;YAED,yBAAyB;YACzB,IAAI;gBACA,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBAC7C,MAAM,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;gBAC/C,OAAO,IAAI,CAAC;aACf;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,CAAC,GAAG,YAAY,0BAAK,CAAC,YAAY,CAAC,EAAE;oBACtC,MAAM,GAAG,CAAC;iBACb;aACJ;QAEL,CAAC,EAAE,OAAO,CAAC,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,2BAA2B,CAAC,cAAsB,EAC3D,cAAsB,EACtB,UAAkB,mCAAgB,CAAC,qBAAqB;QAExD,eAAM,CAAC,KAAK,CAAC,oCAAoC,cAAc,kBAAkB,cAAc,GAAG,CAAC,CAAC;QAEpG,MAAM,iBAAiB,GAAO,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC;QAEjF,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChD,IAAI;gBACA,MAAM,IAAI,CAAC,yBAAyB,CAAC,cAAc,EAAE,iBAAiB,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBACrF,OAAO,IAAI,CAAC;aACf;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,CAAC,GAAG,YAAY,0BAAK,CAAC,YAAY,CAAC,EAAE;oBACtC,MAAM,GAAG,CAAC;iBACb;gBAED,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,mCAAgB,CAAC,qCAAqC,CAAC,CAAC;gBAC5G,MAAM,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC;aAC3D;QACL,CAAC,EAAE,OAAO,CAAC,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,4BAA4B,CAAC,cAAsB;QAC5D,eAAM,CAAC,KAAK,CAAC,wCAAwC,cAAc,GAAG,CAAC,CAAC;QAExE,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAG,CAAC,KAAK,CAAC,wBAAG,CAAC,OAAO,EAAE,wBAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACxF,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,cAAsB;QACjD,eAAM,CAAC,KAAK,CAAC,6BAA6B,cAAc,GAAG,CAAC,CAAC;QAE7D,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAG,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,cAAsB,EAAE,UAAkB,mCAAgB,CAAC,qBAAqB;QAC3G,eAAM,CAAC,KAAK,CAAC,6BAA6B,cAAc,GAAG,CAAC,CAAC;QAE7D,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;IACtG,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,iCAAiC;QACvG,eAAM,CAAC,KAAK,CAAC,mBAAmB,QAAQ,GAAG,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,uBAAE,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACjG,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,QAAgB,EAC9C,UAAkB,6BAAa,CAAC,4BAA4B,EAC5D,UAAkB,6BAAa,CAAC,2BAA2B;QAE3D,eAAM,CAAC,KAAK,CAAC,gCAAgC,QAAQ,GAAG,CAAC,CAAC;QAE1D,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,uBAAE,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7G,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,iCAAiC;QAC1G,eAAM,CAAC,KAAK,CAAC,sBAAsB,QAAQ,GAAG,CAAC,CAAC;QAEhD,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,uBAAE,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/F,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,iCAAiC;QAC9G,eAAM,CAAC,KAAK,CAAC,0BAA0B,QAAQ,GAAG,CAAC,CAAC;QAEpD,MAAM,iBAAiB,GAAO,uBAAE,CAAC,KAAK,CAAC,gGAAgG,QAAQ,IAAI,CAAC,CAAC;QAErJ,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,QAAgB;QACnC,eAAM,CAAC,KAAK,CAAC,qBAAqB,QAAQ,GAAG,CAAC,CAAC;QAE/C,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,iCAAiC;QACjG,eAAM,CAAC,KAAK,CAAC,oBAAoB,QAAQ,GAAG,CAAC,CAAC;QAE9C,MAAM,qBAAqB,GAAO,uBAAE,CAAC,KAAK,CAAC,sBAAsB,QAAQ,qDAAqD,CAAC,CAAC;QAEhI,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,iCAAiC;QACjH,eAAM,CAAC,KAAK,CAAC,oCAAoC,QAAQ,GAAG,CAAC,CAAC;QAE9D,MAAM,iBAAiB,GAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAErE,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,iCAAiC;QAC/G,eAAM,CAAC,KAAK,CAAC,kCAAkC,QAAQ,GAAG,CAAC,CAAC;QAE5D,MAAM,iBAAiB,GAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAErE,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChD,IAAI;gBACA,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,iBAAiB,EAAE,6BAAa,CAAC,2BAA2B,CAAC,CAAC;gBACnH,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC;aACf;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,CAAC,GAAG,YAAY,0BAAK,CAAC,YAAY,CAAC,EAAE;oBACtC,MAAM,GAAG,CAAC;iBACb;gBAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,QAAQ,uCAAuC,CAAC,CAAC;aAC9F;QACL,CAAC,EAAE,OAAO,CAAC,CAAC;IAEhB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,cAAsB,EAAE,UAAkB,mCAAgB,CAAC,iCAAiC;QAC/G,eAAM,CAAC,KAAK,CAAC,4BAA4B,cAAc,GAAG,CAAC,CAAC;QAE5D,MAAM,sBAAsB,GAAO,uBAAE,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/E,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;QACzF,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,iCAAiC;QAC5G,eAAM,CAAC,KAAK,CAAC,+BAA+B,QAAQ,GAAG,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,UAAkB;QAClD,eAAM,CAAC,KAAK,CAAC,uBAAuB,QAAQ,GAAG,CAAC,CAAC;QAEjD,MAAM,SAAS,GAAW,UAAU,GAAG,CAAC,CAAC;QACzC,MAAM,UAAU,GAAW,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,WAAW,GAAa,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAEjD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QACvC,eAAM,CAAC,KAAK,CAAC,gCAAgC,QAAQ,GAAG,CAAC,CAAC;QAE1D,MAAM,iBAAiB,GAAO,uBAAE,CAAC,KAAK,CAAC,+BAA+B,QAAQ,2CAA2C,CAAC,CAAC;QAC3H,0EAA0E;QAC1E,MAAM,UAAU,GAAW,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACrF,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,YAAoB,EACjD,UAAkB,mCAAgB,CAAC,iCAAiC,EACpE,UAAkB,6BAAa,CAAC,2BAA2B;QAE3D,eAAM,CAAC,KAAK,CAAC,oBAAoB,QAAQ,GAAG,CAAC,CAAC;QAE9C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChD,MAAM,UAAU,GAAW,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACrE,MAAM,mBAAmB,GAAY,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEvE,IAAI,mBAAmB,EAAE;gBACrB,OAAO,IAAI,CAAC;aACf;YAED,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC,EAAE,OAAO,CAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,cAAsB,EAC7C,YAAoB,EACpB,UAAkB,mCAAgB,CAAC,iCAAiC,EACpE,UAAkB,6BAAa,CAAC,2BAA2B;QAE3D,eAAM,CAAC,KAAK,CAAC,uCAAuC,cAAc,YAAY,YAAY,GAAG,CAAC,CAAC;QAE/F,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChD,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAG,CAAC,KAAK,CAAC,wBAAG,CAAC,OAAO,EAAE,wBAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAClF,MAAM,UAAU,GAAW,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;YAE3E,MAAM,mBAAmB,GAAY,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEvE,IAAI,mBAAmB,EAAE;gBACrB,OAAO,IAAI,CAAC;aACf;YAED,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC,EAAE,OAAO,CAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,cAAsB,EAAE,IAAY,EAAE,IAAY;QAC5E,eAAM,CAAC,KAAK,CAAC,0CAA0C,cAAc,YAAY,IAAI,YAAY,IAAI,GAAG,CAAC,CAAC;QAE1G,iCAAiC;QACjC,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAG,CAAC,KAAK,CAAC,wBAAG,CAAC,OAAO,EAAE,wBAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnF,sBAAsB;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAG,CAAC,UAAU,CAAC,CAAC;SACpE;QAED,sBAAsB;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAG,CAAC,WAAW,CAAC,CAAC;SACrE;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,cAAsB,EAAE,IAAY;QAC5D,eAAM,CAAC,KAAK,CAAC,wCAAwC,cAAc,YAAY,IAAI,GAAG,CAAC,CAAC;QAExF,MAAM,2BAA2B,GAAO,IAAI,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC;QACzF,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,cAAsB,EAAE,IAAY,EAAE,IAAY;QACzD,eAAM,CAAC,KAAK,CAAC,uBAAuB,cAAc,YAAY,IAAI,GAAG,CAAC,CAAC;QAEvE,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,UAAkB,EAAE,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,6BAA6B;QACxH,eAAM,CAAC,KAAK,CAAC,iCAAiC,UAAU,GAAG,CAAC,CAAC;QAE7D,MAAM,kBAAkB,GAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtF,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,UAAkB,EAAE,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,6BAA6B;QACrI,eAAM,CAAC,KAAK,CAAC,8CAA8C,UAAU,GAAG,CAAC,CAAC;QAE1E,MAAM,kBAAkB,GAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtF,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,UAAkB,EAAE,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,6BAA6B;QAC1H,eAAM,CAAC,KAAK,CAAC,mCAAmC,UAAU,GAAG,CAAC,CAAC;QAE/D,MAAM,oBAAoB,GAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,6BAA6B;QACvH,eAAM,CAAC,KAAK,CAAC,gCAAgC,UAAU,GAAG,CAAC,CAAC;QAE5D,MAAM,iBAAiB,GAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACpF,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,8BAA8B,CAAC,UAAkB,EAAE,QAAgB,EAAE,UAAkB,mCAAgB,CAAC,6BAA6B;QACvI,eAAM,CAAC,KAAK,CAAC,gDAAgD,UAAU,GAAG,CAAC,CAAC;QAE5E,MAAM,oBAAoB,GAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,QAAgB,EAAE,UAAkB,EAAE,UAAkB,mCAAgB,CAAC,6BAA6B;QACnI,eAAM,CAAC,KAAK,CAAC,6CAA6C,QAAQ,YAAY,UAAU,GAAG,CAAC,CAAC;QAE7F,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/G,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,UAAkB,EAAE,UAAkB,mCAAgB,CAAC,6BAA6B;QACvH,eAAM,CAAC,KAAK,CAAC,iCAAiC,QAAQ,YAAY,UAAU,GAAG,CAAC,CAAC;QAEjF,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IACzG,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,QAAgB,EAAE,UAAkB,EAAE,UAAkB,mCAAgB,CAAC,6BAA6B;QAC9H,eAAM,CAAC,KAAK,CAAC,wCAAwC,QAAQ,YAAY,UAAU,GAAG,CAAC,CAAC;QACxF,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1G,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,UAAkB;QACzD,eAAM,CAAC,KAAK,CAAC,qCAAqC,QAAQ,YAAY,UAAU,GAAG,CAAC,CAAC;QAErF,MAAM,QAAQ,GAAW,6BAAa,CAAC,4BAA4B,CAAC;QACpE,MAAM,OAAO,GAAW,6BAAa,CAAC,2BAA2B,CAAC;QAClE,MAAM,gBAAgB,GAAY,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEvF,IAAI,gBAAgB,EAAE;YAAE,OAAO;SAAE;QAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI;gBACA,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAC/B,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC5D,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,wBAAG,CAAC,EAAE,CAAC,CAAC;gBACnD,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAChD,OAAO;aACV;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,KAAK,QAAQ,GAAG,CAAC,EAAE;oBACpB,MAAM,IAAI,0BAAK,CAAC,YAAY,CAAC,iDAAiD,CAAC,CAAC;iBACnF;gBAED,yBAAyB;gBACzB,eAAM,CAAC,KAAK,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACzC;SACJ;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAkB,EAAE,QAAgB;QAC1D,eAAM,CAAC,KAAK,CAAC,qCAAqC,UAAU,GAAG,CAAC,CAAC;QAEjE,MAAM,iBAAiB,GAAO,uBAAE,CAAC,KAAK,CAAC,8BAA8B,QAAQ,KAAK;YAC9E,sDAAsD,UAAU,IAAI;YACpE,6CAA6C,CAAC,CAAC;QACnD,IAAI,iBAAiB,GAAW,MAAM,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,OAAO,EAAE,mCAAgB,CAAC,iCAAiC,CAAC,CAAC;QAEnK,eAAM,CAAC,KAAK,CAAC,2CAA2C,iBAAiB,EAAE,CAAC,CAAC;QAC7E,MAAM,eAAe,GAAW,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEvG,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;YAC/B,MAAM,IAAI,0BAAK,CAAC,yBAAyB,CAAC,uBAAuB,iBAAiB,uBAAuB,CAAC,CAAC;SAC9G;QAED,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,IAAY,EAAE,QAAgB;QACjE,eAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,YAAY,IAAI,GAAG,CAAC,CAAC;QAE1E,MAAM,SAAS,GAAW,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAM,CAAC,wBAAwB,CAAC;QAC3G,MAAM,SAAS,GAAW,IAAI,GAAG,QAAM,CAAC,wBAAwB,CAAC;QAEjE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,IAAY,EAAE,IAAY,EAAE,QAAgB;QAC9E,eAAM,CAAC,KAAK,CAAC,iDAAiD,IAAI,YAAY,IAAI,GAAG,CAAC,CAAC;QAEvF,MAAM,SAAS,GAAW,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAM,CAAC,wBAAwB,CAAC;QAC3G,MAAM,SAAS,GAAW,IAAI,GAAG,QAAM,CAAC,wBAAwB,CAAC;QAEjE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;aACxB,OAAO,CAAC,wBAAG,CAAC,OAAO,CAAC;aACpB,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAC,CAAC;aACnC,KAAK,EAAE;aACP,OAAO,CAAC,wBAAG,CAAC,OAAO,CAAC;aACpB,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAY,EAAE,IAAY,EAAE,QAAgB;QACpE,eAAM,CAAC,KAAK,CAAC,uCAAuC,IAAI,YAAY,IAAI,GAAG,CAAC,CAAC;QAE7E,MAAM,SAAS,GAAW,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAM,CAAC,wBAAwB,CAAC;QAC3G,MAAM,SAAS,GAAW,IAAI,GAAG,QAAM,CAAC,wBAAwB,CAAC;QAEjE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;aACxB,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAC,CAAC;aACnC,YAAY,EAAE;aACd,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,cAAsB,EAAE,iBAAqB,EAAE,UAAkB,KAAK;QAC1G,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChD,MAAM,cAAc,GAAO,uBAAE,CAAC,KAAK,CAAC,QAAM,CAAC,wBAAwB,CAAC,CAAC;YACrE,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE;gBACtD,OAAO,IAAI,CAAC;aACf;YAED,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAG,CAAC,UAAU,CAAC,CAAC;QACrE,CAAC,EAAE,OAAO,CAAC,CAAC;IAChB,CAAC;IAEO,uBAAuB,CAAC,QAAgB;QAC5C,OAAO,uBAAE,CAAC,KAAK,CAAC,iBAAiB,QAAQ,oDAAoD,CAAC,CAAC;IACnG,CAAC;IAEO,oBAAoB,CAAC,cAAsB;QAC/C,MAAM,kBAAkB,GAAW,8EAA8E;YAC7G,6BAA6B,cAAc,2CAA2C,CAAC;QAE3F,OAAO,uBAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAEO,2BAA2B,CAAC,cAAsB;QACtD,MAAM,6BAA6B,GAAW,8EAA8E;YACxH,6BAA6B,cAAc,eAAe,CAAC;QAE/D,OAAO,uBAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAEO,yBAAyB,CAAC,UAAkB;QAChD,OAAO,wHAAwH,UAAU,GAAG,CAAC;IACjJ,CAAC;IAEO,6BAA6B,CAAC,cAAsB;QACxD,OAAO,uBAAE,CAAC,KAAK,CAAC,0GAA0G,cAAc,KAAK,CAAC,CAAC;IACnJ,CAAC;IAEO,kBAAkB,CAAC,QAAgB;QACvC,OAAO,uDAAuD,QAAQ,IAAI,CAAC;IAC/E,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,UAAkB,EAAE,QAAgB;QACpE,MAAM,gBAAgB,GAAW,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEtF,OAAO,uBAAE,CAAC,KAAK,CAAC,+BAA+B,gBAAgB,gDAAgD,CAAC,CAAC;IACrH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,UAAkB,EAAE,QAAgB;QACtE,MAAM,gBAAgB,GAAW,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEtF,OAAO,uBAAE,CAAC,KAAK,CAAC,+BAA+B,gBAAgB,kDAAkD,CAAC,CAAC;IACvH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,UAAkB,EAAE,QAAgB;QACnE,MAAM,gBAAgB,GAAW,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEtF,OAAO,uBAAE,CAAC,KAAK,CAAC,+BAA+B,gBAAgB,+CAA+C,CAAC,CAAC;IACpH,CAAC;IAEO,KAAK,CAAC,iCAAiC,CAAC,cAAsB,EAClE,cAAsB,EACtB,UAAkB,mCAAgB,CAAC,qBAAqB,EACxD,UAAkB,EAClB,UAAkB;QAElB,MAAM,iBAAiB,GAAO,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC;QAEjF,MAAM,aAAa,GAAW,oCAAoC,cAAc,IAAI;YAChF,gBAAgB,cAAc,IAAI;YAClC,UAAU,UAAU,IAAI;YACxB,UAAU,UAAU,GAAG,CAAC;QAE5B,eAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAE5B,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChD,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAC3E,MAAM,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC;YAExD,IAAI;gBACA,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBAChE,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;aACf;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,CAAC,GAAG,YAAY,0BAAK,CAAC,YAAY,CAAC,EAAE;oBACtC,MAAM,GAAG,CAAC;iBACb;aACJ;QACL,CAAC,EAAE,OAAO,CAAC,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,oCAAoC,CAAC,cAAsB,EACrE,cAAsB,EACtB,UAAkB,mCAAgB,CAAC,qBAAqB;QAExD,eAAM,CAAC,KAAK,CAAC,oCAAoC,cAAc,kBAAkB,cAAc,GAAG,CAAC,CAAC;QAEpG,MAAM,iBAAiB,GAAO,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC;QAEjF,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChD,IAAI;gBACA,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBAChE,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;aACf;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,CAAC,GAAG,YAAY,0BAAK,CAAC,YAAY,CAAC,EAAE;oBACtC,MAAM,GAAG,CAAC;iBACb;gBAED,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;gBAC7D,MAAM,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC;aAC3D;QACL,CAAC,EAAE,OAAO,CAAC,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IAEK,KAAK,CAAC,mBAAmB,CAAC,QAAgB,EAAE,UAAkB,EAAE,YAAqB,KAAK;QAC9F,eAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE3C,MAAM,oBAAoB,GAAW,wBAAwB,QAAQ,2BAA2B,CAAC;QACjG,MAAM,+BAA+B,GAAW,uGAAuG,CAAC;QACxJ,MAAM,6BAA6B,GAAW,mDAAmD,CAAC;QAClG,MAAM,8BAA8B,GAAW,gEAAgE,UAAU,GAAG,CAAC;QAE7H,MAAM,iBAAiB,GAAW,CAAC,SAAS,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;QAChH,MAAM,gCAAgC,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,8BAA8B,CAAC;QAEnH,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,uBAAE,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;IACzF,CAAC;CAEJ,CAAA;AAnkB2B,iCAA0B,GAAW,uDAAuD,CAAC;AAC7F,+BAAwB,GAAW,0GAA0G,CAAC;AAC9I,+BAAwB,GAAW,EAAE,CAAC;AACtC,+BAAwB,GAAW,CAAC,CAAC;AAJpD,MAAM;IADlB,sBAAU,EAAE;IAQI,WAAA,kBAAM,CAAC,yBAAO,CAAC,YAAY,CAAC,CAAA;qCAAgC,2BAAY;GAP5E,MAAM,CAokBlB;AApkBY,wBAAM"}