@eclipse-che/che-e2e 7.48.0-dev-5ddf17e → 7.48.2-dev-b683f50

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 (215) hide show
  1. package/package.json +2 -2
  2. package/utils/requestHandlers/CheApiRequestHandler.ts +0 -6
  3. package/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.ts +3 -6
  4. package/utils/workspace/TestWorkspaceUtil.ts +25 -121
  5. package/utils/workspace/WorkspaceStatus.ts +3 -3
  6. package/dist/TestConstants.js +0 -216
  7. package/dist/TestConstants.js.map +0 -1
  8. package/dist/TimeoutConstants.js +0 -184
  9. package/dist/TimeoutConstants.js.map +0 -1
  10. package/dist/driver/CheReporter.js +0 -180
  11. package/dist/driver/CheReporter.js.map +0 -1
  12. package/dist/driver/ChromeDriver.js +0 -75
  13. package/dist/driver/ChromeDriver.js.map +0 -1
  14. package/dist/driver/IDriver.js +0 -3
  15. package/dist/driver/IDriver.js.map +0 -1
  16. package/dist/index.js +0 -92
  17. package/dist/index.js.map +0 -1
  18. package/dist/inversify.config.js +0 -128
  19. package/dist/inversify.config.js.map +0 -1
  20. package/dist/inversify.types.js +0 -73
  21. package/dist/inversify.types.js.map +0 -1
  22. package/dist/pageobjects/dashboard/CreateWorkspace.js +0 -65
  23. package/dist/pageobjects/dashboard/CreateWorkspace.js.map +0 -1
  24. package/dist/pageobjects/dashboard/Dashboard.js +0 -115
  25. package/dist/pageobjects/dashboard/Dashboard.js.map +0 -1
  26. package/dist/pageobjects/dashboard/Workspaces.js +0 -157
  27. package/dist/pageobjects/dashboard/Workspaces.js.map +0 -1
  28. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +0 -138
  29. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +0 -1
  30. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetailsPlugins.js +0 -97
  31. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetailsPlugins.js.map +0 -1
  32. package/dist/pageobjects/ide/ContextMenu.js +0 -66
  33. package/dist/pageobjects/ide/ContextMenu.js.map +0 -1
  34. package/dist/pageobjects/ide/DebugView.js +0 -98
  35. package/dist/pageobjects/ide/DebugView.js.map +0 -1
  36. package/dist/pageobjects/ide/DialogWindow.js +0 -102
  37. package/dist/pageobjects/ide/DialogWindow.js.map +0 -1
  38. package/dist/pageobjects/ide/Editor.js +0 -464
  39. package/dist/pageobjects/ide/Editor.js.map +0 -1
  40. package/dist/pageobjects/ide/Ide.js +0 -336
  41. package/dist/pageobjects/ide/Ide.js.map +0 -1
  42. package/dist/pageobjects/ide/LeftToolBar.js +0 -81
  43. package/dist/pageobjects/ide/LeftToolBar.js.map +0 -1
  44. package/dist/pageobjects/ide/NavigationBar.js +0 -57
  45. package/dist/pageobjects/ide/NavigationBar.js.map +0 -1
  46. package/dist/pageobjects/ide/NotificationCenter.js +0 -76
  47. package/dist/pageobjects/ide/NotificationCenter.js.map +0 -1
  48. package/dist/pageobjects/ide/OpenDialogWidget.js +0 -100
  49. package/dist/pageobjects/ide/OpenDialogWidget.js.map +0 -1
  50. package/dist/pageobjects/ide/OpenEditors.js +0 -73
  51. package/dist/pageobjects/ide/OpenEditors.js.map +0 -1
  52. package/dist/pageobjects/ide/OpenWorkspaceWidget.js +0 -62
  53. package/dist/pageobjects/ide/OpenWorkspaceWidget.js.map +0 -1
  54. package/dist/pageobjects/ide/PreviewWidget.js +0 -134
  55. package/dist/pageobjects/ide/PreviewWidget.js.map +0 -1
  56. package/dist/pageobjects/ide/ProjectTree.js +0 -276
  57. package/dist/pageobjects/ide/ProjectTree.js.map +0 -1
  58. package/dist/pageobjects/ide/QuickOpenContainer.js +0 -70
  59. package/dist/pageobjects/ide/QuickOpenContainer.js.map +0 -1
  60. package/dist/pageobjects/ide/RightToolBar.js +0 -51
  61. package/dist/pageobjects/ide/RightToolBar.js.map +0 -1
  62. package/dist/pageobjects/ide/Terminal.js +0 -184
  63. package/dist/pageobjects/ide/Terminal.js.map +0 -1
  64. package/dist/pageobjects/ide/TopMenu.js +0 -109
  65. package/dist/pageobjects/ide/TopMenu.js.map +0 -1
  66. package/dist/pageobjects/ide/plugins/GitHubPullRequestPlugin.js +0 -128
  67. package/dist/pageobjects/ide/plugins/GitHubPullRequestPlugin.js.map +0 -1
  68. package/dist/pageobjects/ide/plugins/GitPlugin.js +0 -120
  69. package/dist/pageobjects/ide/plugins/GitPlugin.js.map +0 -1
  70. package/dist/pageobjects/ide/plugins/KubernetesPlugin.js +0 -107
  71. package/dist/pageobjects/ide/plugins/KubernetesPlugin.js.map +0 -1
  72. package/dist/pageobjects/ide/plugins/OpenshiftPlugin.js +0 -99
  73. package/dist/pageobjects/ide/plugins/OpenshiftPlugin.js.map +0 -1
  74. package/dist/pageobjects/ide/plugins/PluginsView.js +0 -166
  75. package/dist/pageobjects/ide/plugins/PluginsView.js.map +0 -1
  76. package/dist/pageobjects/login/ICheLoginPage.js +0 -12
  77. package/dist/pageobjects/login/ICheLoginPage.js.map +0 -1
  78. package/dist/pageobjects/login/IOcpLoginPage.js +0 -12
  79. package/dist/pageobjects/login/IOcpLoginPage.js.map +0 -1
  80. package/dist/pageobjects/login/MultiUserLoginPage.js +0 -49
  81. package/dist/pageobjects/login/MultiUserLoginPage.js.map +0 -1
  82. package/dist/pageobjects/login/OcpUserLoginPage.js +0 -53
  83. package/dist/pageobjects/login/OcpUserLoginPage.js.map +0 -1
  84. package/dist/pageobjects/login/RegularUserOcpCheLoginPage.js +0 -86
  85. package/dist/pageobjects/login/RegularUserOcpCheLoginPage.js.map +0 -1
  86. package/dist/pageobjects/login/UpdateAccountInformationPage.js +0 -74
  87. package/dist/pageobjects/login/UpdateAccountInformationPage.js.map +0 -1
  88. package/dist/pageobjects/openshift/CheLoginPage.js +0 -88
  89. package/dist/pageobjects/openshift/CheLoginPage.js.map +0 -1
  90. package/dist/pageobjects/openshift/OcpLoginPage.js +0 -106
  91. package/dist/pageobjects/openshift/OcpLoginPage.js.map +0 -1
  92. package/dist/pageobjects/third-parties/GitLoginPage.js +0 -85
  93. package/dist/pageobjects/third-parties/GitLoginPage.js.map +0 -1
  94. package/dist/pageobjects/third-parties/GitOauthAppsSettings.js +0 -110
  95. package/dist/pageobjects/third-parties/GitOauthAppsSettings.js.map +0 -1
  96. package/dist/tests/devfiles/CSlashCPlusPlus.spec.js +0 -74
  97. package/dist/tests/devfiles/CSlashCPlusPlus.spec.js.map +0 -1
  98. package/dist/tests/devfiles/DevfileSmoke.spec.js +0 -48
  99. package/dist/tests/devfiles/DevfileSmoke.spec.js.map +0 -1
  100. package/dist/tests/devfiles/DotNetCore.spec.js +0 -82
  101. package/dist/tests/devfiles/DotNetCore.spec.js.map +0 -1
  102. package/dist/tests/devfiles/Go.spec.js +0 -73
  103. package/dist/tests/devfiles/Go.spec.js.map +0 -1
  104. package/dist/tests/devfiles/JavaMaven.spec.js +0 -61
  105. package/dist/tests/devfiles/JavaMaven.spec.js.map +0 -1
  106. package/dist/tests/devfiles/JavaSpringBoot.spec.js +0 -67
  107. package/dist/tests/devfiles/JavaSpringBoot.spec.js.map +0 -1
  108. package/dist/tests/devfiles/JavaVertx.spec.js +0 -61
  109. package/dist/tests/devfiles/JavaVertx.spec.js.map +0 -1
  110. package/dist/tests/devfiles/NodeJS.spec.js +0 -65
  111. package/dist/tests/devfiles/NodeJS.spec.js.map +0 -1
  112. package/dist/tests/devfiles/PHPSimple.spec.js +0 -75
  113. package/dist/tests/devfiles/PHPSimple.spec.js.map +0 -1
  114. package/dist/tests/devfiles/Python.spec.js +0 -59
  115. package/dist/tests/devfiles/Python.spec.js.map +0 -1
  116. package/dist/tests/devfiles/PythonDjango.spec.js +0 -62
  117. package/dist/tests/devfiles/PythonDjango.spec.js.map +0 -1
  118. package/dist/tests/devfiles/Quarkus.spec.js +0 -70
  119. package/dist/tests/devfiles/Quarkus.spec.js.map +0 -1
  120. package/dist/tests/devfiles/Scala.spec.js +0 -67
  121. package/dist/tests/devfiles/Scala.spec.js.map +0 -1
  122. package/dist/tests/e2e/FactoryUrl.spec.js +0 -45
  123. package/dist/tests/e2e/FactoryUrl.spec.js.map +0 -1
  124. package/dist/tests/e2e/GitPublishBranch.spec.js +0 -88
  125. package/dist/tests/e2e/GitPublishBranch.spec.js.map +0 -1
  126. package/dist/tests/e2e/GitSelfSignCert.spec.js +0 -83
  127. package/dist/tests/e2e/GitSelfSignCert.spec.js.map +0 -1
  128. package/dist/tests/e2e/GitSsh.spec.js +0 -117
  129. package/dist/tests/e2e/GitSsh.spec.js.map +0 -1
  130. package/dist/tests/e2e/OpenshiftConnector.spec.js +0 -122
  131. package/dist/tests/e2e/OpenshiftConnector.spec.js.map +0 -1
  132. package/dist/tests/e2e/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.js +0 -54
  133. package/dist/tests/e2e/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.js.map +0 -1
  134. package/dist/tests/e2e/factories/DirectUrlFactoryWithRootFolderTest.spec.js +0 -52
  135. package/dist/tests/e2e/factories/DirectUrlFactoryWithRootFolderTest.spec.js.map +0 -1
  136. package/dist/tests/e2e/factories/DirectUrlFactoryWithSpecificBranchTest.spec.js +0 -52
  137. package/dist/tests/e2e/factories/DirectUrlFactoryWithSpecificBranchTest.spec.js.map +0 -1
  138. package/dist/tests/e2e_happy_path/DevWorkspaceHappyPath.spec.js +0 -276
  139. package/dist/tests/e2e_happy_path/DevWorkspaceHappyPath.spec.js.map +0 -1
  140. package/dist/tests/e2e_happy_path/HappyPath.spec.js +0 -309
  141. package/dist/tests/e2e_happy_path/HappyPath.spec.js.map +0 -1
  142. package/dist/tests/intelij/IntelijOpenWorkspace.spec.js +0 -43
  143. package/dist/tests/intelij/IntelijOpenWorkspace.spec.js.map +0 -1
  144. package/dist/tests/load_test/LoadTest.spec.js +0 -44
  145. package/dist/tests/load_test/LoadTest.spec.js.map +0 -1
  146. package/dist/tests/login/LinkCheAndOcpUsers.spec.js +0 -39
  147. package/dist/tests/login/LinkCheAndOcpUsers.spec.js.map +0 -1
  148. package/dist/tests/login/Login.spec.js +0 -28
  149. package/dist/tests/login/Login.spec.js.map +0 -1
  150. package/dist/tests/plugins/GitHubPullRequestPlugin.spec.js +0 -123
  151. package/dist/tests/plugins/GitHubPullRequestPlugin.spec.js.map +0 -1
  152. package/dist/tests/plugins/InstallPluginUsingUI.spec.js +0 -69
  153. package/dist/tests/plugins/InstallPluginUsingUI.spec.js.map +0 -1
  154. package/dist/tests/plugins/JavaPlugin.spec.js +0 -86
  155. package/dist/tests/plugins/JavaPlugin.spec.js.map +0 -1
  156. package/dist/tests/plugins/PhpPlugin.spec.js +0 -94
  157. package/dist/tests/plugins/PhpPlugin.spec.js.map +0 -1
  158. package/dist/tests/plugins/PythonPlugin.spec.js +0 -76
  159. package/dist/tests/plugins/PythonPlugin.spec.js.map +0 -1
  160. package/dist/tests/plugins/TypescriptPlugin.spec.js +0 -139
  161. package/dist/tests/plugins/TypescriptPlugin.spec.js.map +0 -1
  162. package/dist/tests/plugins/VscodeKubernetesPlugin.spec.js +0 -76
  163. package/dist/tests/plugins/VscodeKubernetesPlugin.spec.js.map +0 -1
  164. package/dist/tests/plugins/VscodeShellcheckPlugin.spec.js +0 -89
  165. package/dist/tests/plugins/VscodeShellcheckPlugin.spec.js.map +0 -1
  166. package/dist/tests/plugins/VscodeValePlugin.spec.js +0 -77
  167. package/dist/tests/plugins/VscodeValePlugin.spec.js.map +0 -1
  168. package/dist/tests/plugins/VscodeXmlPlugin.spec.js +0 -90
  169. package/dist/tests/plugins/VscodeXmlPlugin.spec.js.map +0 -1
  170. package/dist/tests/plugins/VscodeYamlPlugin.spec.js +0 -87
  171. package/dist/tests/plugins/VscodeYamlPlugin.spec.js.map +0 -1
  172. package/dist/testsLibrary/CodeExecutionTests.js +0 -232
  173. package/dist/testsLibrary/CodeExecutionTests.js.map +0 -1
  174. package/dist/testsLibrary/LanguageServerTests.js +0 -230
  175. package/dist/testsLibrary/LanguageServerTests.js.map +0 -1
  176. package/dist/testsLibrary/ProjectAndFileTests.js +0 -105
  177. package/dist/testsLibrary/ProjectAndFileTests.js.map +0 -1
  178. package/dist/testsLibrary/WorkspaceHandlingTests.js +0 -91
  179. package/dist/testsLibrary/WorkspaceHandlingTests.js.map +0 -1
  180. package/dist/utils/AnimationChecker.js +0 -45
  181. package/dist/utils/AnimationChecker.js.map +0 -1
  182. package/dist/utils/BrowserTabsUtil.js +0 -115
  183. package/dist/utils/BrowserTabsUtil.js.map +0 -1
  184. package/dist/utils/DriverHelper.js +0 -616
  185. package/dist/utils/DriverHelper.js.map +0 -1
  186. package/dist/utils/Logger.js +0 -84
  187. package/dist/utils/Logger.js.map +0 -1
  188. package/dist/utils/PreferencesHandler.js +0 -142
  189. package/dist/utils/PreferencesHandler.js.map +0 -1
  190. package/dist/utils/Sanitizer.js +0 -29
  191. package/dist/utils/Sanitizer.js.map +0 -1
  192. package/dist/utils/ScreenCatcher.js +0 -107
  193. package/dist/utils/ScreenCatcher.js.map +0 -1
  194. package/dist/utils/VCS/CheGitApi.js +0 -42
  195. package/dist/utils/VCS/CheGitApi.js.map +0 -1
  196. package/dist/utils/VCS/github/GitHubUtil.js +0 -126
  197. package/dist/utils/VCS/github/GitHubUtil.js.map +0 -1
  198. package/dist/utils/WorkspaceNameHandler.js +0 -60
  199. package/dist/utils/WorkspaceNameHandler.js.map +0 -1
  200. package/dist/utils/requestHandlers/CheApiRequestHandler.js +0 -126
  201. package/dist/utils/requestHandlers/CheApiRequestHandler.js.map +0 -1
  202. package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.js +0 -34
  203. package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +0 -1
  204. package/dist/utils/requestHandlers/headers/IAuthorizationHeaderHandler.js +0 -12
  205. package/dist/utils/requestHandlers/headers/IAuthorizationHeaderHandler.js.map +0 -1
  206. package/dist/utils/requestHandlers/tokens/CheMultiuserTokenHandler.js +0 -50
  207. package/dist/utils/requestHandlers/tokens/CheMultiuserTokenHandler.js.map +0 -1
  208. package/dist/utils/requestHandlers/tokens/ITokenHandler.js +0 -12
  209. package/dist/utils/requestHandlers/tokens/ITokenHandler.js.map +0 -1
  210. package/dist/utils/workspace/ITestWorkspaceUtil.js +0 -12
  211. package/dist/utils/workspace/ITestWorkspaceUtil.js.map +0 -1
  212. package/dist/utils/workspace/TestWorkspaceUtil.js +0 -327
  213. package/dist/utils/workspace/TestWorkspaceUtil.js.map +0 -1
  214. package/dist/utils/workspace/WorkspaceStatus.js +0 -19
  215. package/dist/utils/workspace/WorkspaceStatus.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-che/che-e2e",
3
- "version": "7.48.0-dev-5ddf17e",
3
+ "version": "7.48.2-dev-b683f50",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -49,7 +49,7 @@
49
49
  "typescript": "3.9.9"
50
50
  },
51
51
  "dependencies": {
52
- "@eclipse-che/api": "latest",
52
+ "@eclipse-che/api": "7.48.0",
53
53
  "inversify": "5.0.1",
54
54
  "reflect-metadata": "0.1.13"
55
55
  },
@@ -35,7 +35,6 @@ export class CheApiRequestHandler {
35
35
  return request;
36
36
  }
37
37
  request_censored.headers.Authorization = 'CENSORED';
38
- request_censored.headers.Cookie = 'CENSORED';
39
38
  Logger.info(`RequestHandler request:\n` + request_censored);
40
39
  } catch (err) {
41
40
  Logger.error(`RequestHandler request: Failed to deep clone AxiosRequestConfig:` + err);
@@ -70,7 +69,6 @@ export class CheApiRequestHandler {
70
69
  return response;
71
70
  }
72
71
  response_censored.config.headers.Authorization = 'CENSORED';
73
- response_censored.config.headers.Cookie = 'CENSORED';
74
72
  if (response_censored.data.access_token != null) {
75
73
  response_censored.data.access_token = 'CENSORED';
76
74
  }
@@ -99,10 +97,6 @@ export class CheApiRequestHandler {
99
97
  return await axios.delete(this.assembleUrl(relativeUrl), await this.headerHandler.get());
100
98
  }
101
99
 
102
- async patch(relativeUrl: string, patchParams: object): Promise<AxiosResponse> {
103
- return await axios.patch(this.assembleUrl(relativeUrl), patchParams, await this.headerHandler.get());
104
- }
105
-
106
100
  private assembleUrl(relativeUrl: string): string {
107
101
  return `${TestConstants.TS_SELENIUM_BASE_URL}/${relativeUrl}`;
108
102
  }
@@ -9,16 +9,13 @@
9
9
  **********************************************************************/
10
10
  import { AxiosRequestConfig } from 'axios';
11
11
  import { IAuthorizationHeaderHandler } from './IAuthorizationHeaderHandler';
12
- import { inject, injectable } from 'inversify';
13
- import { DriverHelper } from '../../DriverHelper';
14
- import { CLASSES } from '../../../inversify.types';
12
+ import { injectable } from 'inversify';
15
13
 
16
14
  @injectable()
17
15
  export class CheMultiuserAuthorizationHeaderHandler implements IAuthorizationHeaderHandler {
18
- constructor(@inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper) { }
19
16
 
20
17
  async get(): Promise<AxiosRequestConfig> {
21
- let token = await this.driverHelper.getDriver().manage().getCookie('_oauth_proxy');
22
- return { headers: { 'cookie': `_oauth_proxy=${token.value}` } };
18
+ // to-do : Fetch the cookies from user api and pass it here
19
+ return { headers: { 'cookie': `` } };
23
20
  }
24
21
  }
@@ -19,14 +19,12 @@ import { error } from 'selenium-webdriver';
19
19
  import { CheApiRequestHandler } from '../requestHandlers/CheApiRequestHandler';
20
20
  import { CLASSES } from '../../inversify.types';
21
21
  import { Logger } from '../Logger';
22
- import axios from 'axios';
23
22
 
24
23
  @injectable()
25
24
  export class TestWorkspaceUtil implements ITestWorkspaceUtil {
26
25
 
27
- static readonly WORKSPACE_API_URL: string = 'dashboard/api/namespace';
28
- readonly attempts: number = TestConstants.TS_SELENIUM_WORKSPACE_STATUS_ATTEMPTS;
29
- readonly polling: number = TestConstants.TS_SELENIUM_WORKSPACE_STATUS_POLLING;
26
+ static readonly WORKSPACE_API_URL: string = 'api/workspace';
27
+
30
28
  constructor(
31
29
  @inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper,
32
30
  @inject(CLASSES.CheApiRequestHandler) private readonly processRequestHandler: CheApiRequestHandler
@@ -35,103 +33,31 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
35
33
  public async waitWorkspaceStatus(namespace: string, workspaceName: string, expectedWorkspaceStatus: WorkspaceStatus) {
36
34
  Logger.debug('TestWorkspaceUtil.waitWorkspaceStatus');
37
35
 
38
- const workspaceStatusApiUrl: string = `${TestWorkspaceUtil.WORKSPACE_API_URL}/${namespace}-che/devworkspaces/${workspaceName}`;
36
+ const workspaceStatusApiUrl: string = `${TestWorkspaceUtil.WORKSPACE_API_URL}/${namespace}:${workspaceName}`;
37
+ const attempts: number = TestConstants.TS_SELENIUM_WORKSPACE_STATUS_ATTEMPTS;
38
+ const polling: number = TestConstants.TS_SELENIUM_WORKSPACE_STATUS_POLLING;
39
39
  let workspaceStatus: string = '';
40
- let expectedStatus: boolean = false;
41
- for (let i = 0; i < this.attempts; i++) {
40
+
41
+ for (let i = 0; i < attempts; i++) {
42
42
  const response = await this.processRequestHandler.get(workspaceStatusApiUrl);
43
43
 
44
44
  if (response.status !== 200) {
45
- throw new Error(`Can not get status of a workspace. Code: ${response.status} Data: ${response.data}`);
45
+ await this.driverHelper.wait(polling);
46
+ continue;
46
47
  }
47
48
 
48
- workspaceStatus = await response.data.status.phase;
49
+ workspaceStatus = await response.data.status;
49
50
 
50
51
  if (workspaceStatus === expectedWorkspaceStatus) {
51
- expectedStatus = true;
52
- break;
52
+ return;
53
53
  }
54
54
 
55
- await this.driverHelper.wait(this.polling);
56
- }
57
-
58
- if (!expectedStatus) {
59
- let waitTime = this.attempts * this.polling;
60
- throw new error.TimeoutError(`The workspace was not stopped in ${waitTime} ms. Currnet status is: ${workspaceStatus}`);
61
- }
62
- }
63
-
64
- public async stopWorkspaceByName(namespace: string, workspaceName: string) {
65
- Logger.debug('TestWorkspaceUtil.stopWorkspaceByName');
66
-
67
- const stopWorkspaceApiUrl: string = `${TestWorkspaceUtil.WORKSPACE_API_URL}/${namespace}-che/devworkspaces/${workspaceName}`;
68
- let stopWorkspaceResponse;
69
-
70
- try {
71
- stopWorkspaceResponse = await this.processRequestHandler.patch(stopWorkspaceApiUrl, [{'op': 'replace', 'path': '/spec/started', 'value': false}]);
72
- } catch (err) {
73
- console.log(`Stop workspace call failed. URL used: ${stopWorkspaceApiUrl}`);
74
- throw err;
75
- }
76
-
77
- if (stopWorkspaceResponse.status !== 200) {
78
- throw new Error(`Cannot stop workspace. Code: ${stopWorkspaceResponse.status} Data: ${stopWorkspaceResponse.data}`);
79
- }
80
-
81
- await this.waitWorkspaceStatus(namespace, workspaceName, WorkspaceStatus.STOPPED);
82
- }
83
-
84
- // delete a worksapce without stopping phase (similar with force deleting)
85
- public async deleteWorkspaceByName(namespace: string, workspaceName: string) {
86
- Logger.debug('TestWorkspaceUtil.deleteWorkspaceByName');
87
-
88
- const deleteWorkspaceApiUrl: string = `${TestWorkspaceUtil.WORKSPACE_API_URL}/${namespace}-che/devworkspaces/${workspaceName}`;
89
- let deleteWorkspaceResponse;
90
- let deleteWorkspaceStatus: boolean = false;
91
- try {
92
- deleteWorkspaceResponse = await this.processRequestHandler.delete(deleteWorkspaceApiUrl);
93
- } catch (error) {
94
- if (axios.isAxiosError(error) && error.response?.status === 404) {
95
- Logger.error(`The workspace :${workspaceName} not found`);
96
- throw error;
97
- }
98
- Logger.error(`Stop workspace call failed. URL used: ${deleteWorkspaceStatus}`);
99
- throw error;
100
- }
101
-
102
- if (deleteWorkspaceResponse.status !== 204) {
103
- throw new Error(`Can not stop workspace. Code: ${deleteWorkspaceResponse.status} Data: ${deleteWorkspaceResponse.data}`);
104
- }
105
-
106
- for (let i = 0; i < this.attempts; i++) {
107
-
108
- try {
109
- deleteWorkspaceResponse = await this.processRequestHandler.get(deleteWorkspaceApiUrl);
110
- } catch (error) {
111
- if (axios.isAxiosError(error) && error.response?.status === 404) {
112
- deleteWorkspaceStatus = true;
113
- break;
114
- }
115
- }
116
- }
117
-
118
- if (!deleteWorkspaceStatus) {
119
- let waitTime = this.attempts * this.polling;
120
- throw new error.TimeoutError(`The workspace was not stopped in ${waitTime} ms.`);
55
+ await this.driverHelper.wait(polling);
121
56
  }
122
- }
123
-
124
- // stop workspace before deleting with checking stopping phase
125
- public async stopAndDeleteWorkspaceByName(namespace: string, workspaceName: string) {
126
- Logger.debug('TestWorkspaceUtil.stopAndDeleteWorkspaceByName');
127
57
 
128
- await this.stopWorkspaceByName(namespace, workspaceName);
129
- await this.deleteWorkspaceByName(namespace, workspaceName);
58
+ throw new error.TimeoutError(`Exceeded the maximum number of checking attempts, workspace status is: '${workspaceStatus}' different to '${expectedWorkspaceStatus}'`);
130
59
  }
131
60
 
132
- /**
133
- * @deprecated Method deprecated. Works with CHE server only
134
- */
135
61
  public async waitPluginAdding(namespace: string, workspaceName: string, pluginName: string) {
136
62
  Logger.debug('TestWorkspaceUtil.waitPluginAdding');
137
63
 
@@ -162,9 +88,6 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
162
88
  }
163
89
  }
164
90
 
165
- /**
166
- * @deprecated Method deprecated. Works with CHE server only
167
- */
168
91
  public async getListOfWorkspaceId(): Promise<string[]> {
169
92
  Logger.debug('TestWorkspaceUtil.getListOfWorkspaceId');
170
93
 
@@ -186,9 +109,6 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
186
109
  return wsList;
187
110
  }
188
111
 
189
- /**
190
- * @deprecated Method deprecated. Works with CHE server only
191
- */
192
112
  public async getIdOfRunningWorkspace(wsName: string): Promise<string> {
193
113
  Logger.debug('TestWorkspaceUtil.getIdOfRunningWorkspace');
194
114
 
@@ -197,9 +117,6 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
197
117
 
198
118
  }
199
119
 
200
- /**
201
- * @deprecated Method deprecated. Works with CHE server only
202
- */
203
120
  public async getIdOfRunningWorkspaces(): Promise<Array<string>> {
204
121
  Logger.debug('TestWorkspaceUtil.getIdOfRunningWorkspaces');
205
122
 
@@ -227,15 +144,13 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
227
144
  }
228
145
  }
229
146
 
230
- /**
231
- * @deprecated Method deprecated. Works with CHE server only
232
- */
233
147
  public async removeWorkspaceById(id: string) {
234
148
  Logger.debug('TestWorkspaceUtil.removeWorkspaceById');
235
149
 
236
150
  const workspaceIdUrl: string = `${TestWorkspaceUtil.WORKSPACE_API_URL}/${id}`;
237
151
  try {
238
152
  const deleteWorkspaceResponse = await this.processRequestHandler.delete(workspaceIdUrl);
153
+ // response code 204: "No Content" expected
239
154
  if (deleteWorkspaceResponse.status !== 204) {
240
155
  throw new Error(`Can not remove workspace. Code: ${deleteWorkspaceResponse.status} Data: ${deleteWorkspaceResponse.data}`);
241
156
  }
@@ -245,9 +160,6 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
245
160
  }
246
161
  }
247
162
 
248
- /**
249
- * @deprecated Method deprecated. Works with CHE server only
250
- */
251
163
  public async stopWorkspaceById(id: string) {
252
164
  Logger.debug('TestWorkspaceUtil.stopWorkspaceById');
253
165
 
@@ -255,13 +167,20 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
255
167
  let stopWorkspaceResponse;
256
168
 
257
169
  try {
258
- stopWorkspaceResponse = await this.processRequestHandler.delete(`${stopWorkspaceApiUrl}`);
170
+ stopWorkspaceResponse = await this.processRequestHandler.delete(`${stopWorkspaceApiUrl}/runtime`);
259
171
  } catch (err) {
260
- console.log(`Stop workspace call failed. URL used: ${stopWorkspaceApiUrl}`);
172
+ console.log(`Stop workspace call failed. URL used: ${stopWorkspaceApiUrl}/runtime`);
261
173
  throw err;
262
174
  }
263
175
 
264
- if (stopWorkspaceResponse.status !== 200) {
176
+ // if workspace is already stopped, it will return 409: "Conflict"
177
+ if (stopWorkspaceResponse.status === 409) {
178
+ Logger.warn(`TestWorkspaceUtil.stopWorkspaceById Workspace {${id}} is already STOPPED`);
179
+ return;
180
+ }
181
+
182
+ // response code 204: "No Content" expected
183
+ if (stopWorkspaceResponse.status !== 204) {
265
184
  throw new Error(`Can not stop workspace. Code: ${stopWorkspaceResponse.status} Data: ${stopWorkspaceResponse.data}`);
266
185
  }
267
186
 
@@ -269,7 +188,7 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
269
188
  let wsStatus = await this.processRequestHandler.get(stopWorkspaceApiUrl);
270
189
  for (let i = 0; i < TestConstants.TS_SELENIUM_PLUGIN_PRECENCE_ATTEMPTS; i++) {
271
190
  wsStatus = await this.processRequestHandler.get(stopWorkspaceApiUrl);
272
- if (wsStatus.data.status === WorkspaceStatus.STOPPED) {
191
+ if (wsStatus.data.status === 'STOPPED') {
273
192
  stopped = true;
274
193
  break;
275
194
  }
@@ -282,9 +201,6 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
282
201
  }
283
202
  }
284
203
 
285
- /**
286
- * @deprecated Method deprecated. Works with CHE server only
287
- */
288
204
  public async cleanUpAllWorkspaces() {
289
205
  Logger.debug('TestWorkspaceUtil.cleanUpAllWorkspaces');
290
206
 
@@ -301,9 +217,6 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
301
217
 
302
218
  }
303
219
 
304
- /**
305
- * @deprecated Method deprecated. Works with CHE server only
306
- */
307
220
  public async cleanUpRunningWorkspace(workspaceName: string) {
308
221
  if (workspaceName === undefined || workspaceName.length === 0) {
309
222
  Logger.warn(`Could nod delete workspace because workspaceName is undefined or empty`);
@@ -324,9 +237,6 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
324
237
  await this.removeWorkspaceById(workspaceID);
325
238
  }
326
239
 
327
- /**
328
- * @deprecated Method deprecated. Works with CHE server only
329
- */
330
240
  async createWsFromDevFile(customTemplate: che.workspace.devfile.Devfile) {
331
241
  Logger.debug('TestWorkspaceUtil.createWsFromDevFile');
332
242
 
@@ -338,9 +248,6 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
338
248
  }
339
249
  }
340
250
 
341
- /**
342
- * @deprecated Method deprecated. Works with CHE server only
343
- */
344
251
  async getBaseDevfile(): Promise<che.workspace.devfile.Devfile> {
345
252
  Logger.debug('TestWorkspaceUtil.getBaseDevfile');
346
253
 
@@ -354,9 +261,6 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
354
261
  return baseDevfile;
355
262
  }
356
263
 
357
- /**
358
- * @deprecated Method deprecated. Works with CHE server only
359
- */
360
264
  async startWorkspace(workspaceId: string) {
361
265
  Logger.debug('TestWorkspaceUtil.startWorkspace');
362
266
 
@@ -9,7 +9,7 @@
9
9
  **********************************************************************/
10
10
 
11
11
  export enum WorkspaceStatus {
12
- RUNNING = 'Running',
13
- STOPPED = 'Stopped',
14
- STARTING = 'Starting'
12
+ RUNNING = 'RUNNING',
13
+ STOPPED = 'STOPPED',
14
+ STARTING = 'STARTING'
15
15
  }
@@ -1,216 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.TestConstants = void 0;
13
- function getBaseUrl() {
14
- const baseUrl = process.env.TS_SELENIUM_BASE_URL;
15
- if (!baseUrl) {
16
- return 'http://sample-url';
17
- }
18
- return baseUrl.replace(/\/$/, '');
19
- }
20
- exports.TestConstants = {
21
- /**
22
- * Base URL of the application which should be checked
23
- */
24
- TS_SELENIUM_BASE_URL: getBaseUrl(),
25
- /**
26
- * Base URl of web console OpenShift which uses to test OperatorHub.
27
- */
28
- TS_SELENIUM_WEB_CONSOLE_OCP_URL: process.env.TS_SELENIUM_WEB_CONSOLE_OCP_URL || 'https://console-openshift-console.apps.',
29
- /**
30
- * Run browser in "Headless" (hiden) mode, "false" by default.
31
- */
32
- TS_SELENIUM_HEADLESS: process.env.TS_SELENIUM_HEADLESS === 'true',
33
- /**
34
- * Run browser in "Fullscreen" (kiosk) mode.
35
- * Default to true if undefined
36
- */
37
- TS_SELENIUM_LAUNCH_FULLSCREEN: (process.env.TS_SELENIUM_LAUNCH_FULLSCREEN === 'false') ? false : true,
38
- /**
39
- * Run browser with an enabled or disabled W3C protocol (on Chrome 76 and upper, it is enabled by default), "true" by default.
40
- */
41
- TS_SELENIUM_W3C_CHROME_OPTION: process.env.TS_SELENIUM_W3C_CHROME_OPTION !== 'false',
42
- /**
43
- * Browser width resolution, "1920" by default.
44
- */
45
- TS_SELENIUM_RESOLUTION_WIDTH: Number(process.env.TS_SELENIUM_RESOLUTION_WIDTH) || 1920,
46
- /**
47
- * Browser height resolution, "1080" by default.
48
- */
49
- TS_SELENIUM_RESOLUTION_HEIGHT: Number(process.env.TS_SELENIUM_RESOLUTION_HEIGHT) || 1080,
50
- /**
51
- * Default ammount of tries, "5" by default.
52
- */
53
- TS_SELENIUM_DEFAULT_ATTEMPTS: Number(process.env.TS_SELENIUM_DEFAULT_ATTEMPTS) || 5,
54
- /**
55
- * Default delay in milliseconds between tries, "1000" by default.
56
- */
57
- TS_SELENIUM_DEFAULT_POLLING: Number(process.env.TS_SELENIUM_DEFAULT_POLLING) || 1000,
58
- /**
59
- * Amount of tries for checking workspace status.
60
- */
61
- TS_SELENIUM_WORKSPACE_STATUS_ATTEMPTS: Number(process.env.TS_SELENIUM_WORKSPACE_STATUS_ATTEMPTS) || 90,
62
- /**
63
- * Delay in milliseconds between checking workspace status tries.
64
- */
65
- TS_SELENIUM_WORKSPACE_STATUS_POLLING: Number(process.env.TS_SELENIUM_WORKSPACE_STATUS_POLLING) || 10000,
66
- /**
67
- * Amount of tries for checking plugin precence.
68
- */
69
- TS_SELENIUM_PLUGIN_PRECENCE_ATTEMPTS: Number(process.env.TS_SELENIUM_PLUGIN_PRECENCE_ATTEMPTS) || 20,
70
- /**
71
- * Name of workspace created for 'Happy Path' scenario validation.
72
- */
73
- TS_SELENIUM_HAPPY_PATH_WORKSPACE_NAME: process.env.TS_SELENIUM_HAPPY_PATH_WORKSPACE_NAME || 'petclinic-dev-environment',
74
- /**
75
- * Using 'single-host' strategy, "false" by default.
76
- */
77
- TS_SELENIUM_SINGLE_HOST: process.env.TS_SELENIUM_SINGLE_HOST === 'true',
78
- /**
79
- * Value of OpenShift oAuth property determines how to login in installed application,
80
- * if 'false' as an user of application, if 'true' as a regular user of OCP.
81
- */
82
- TS_SELENIUM_VALUE_OPENSHIFT_OAUTH: process.env.TS_SELENIUM_VALUE_OPENSHIFT_OAUTH || 'false',
83
- /**
84
- * Username used to log in MultiUser Che.
85
- */
86
- TS_SELENIUM_USERNAME: process.env.TS_SELENIUM_USERNAME || 'che',
87
- /**
88
- * Password used to log in MultiUser Che.
89
- */
90
- TS_SELENIUM_PASSWORD: process.env.TS_SELENIUM_PASSWORD || '',
91
- /**
92
- * Log into OCP by using appropriate provider title.
93
- */
94
- TS_OCP_LOGIN_PAGE_PROVIDER_TITLE: process.env.TS_OCP_LOGIN_PAGE_PROVIDER_TITLE || '',
95
- /**
96
- * Path to folder with load tests execution report.
97
- */
98
- TS_SELENIUM_LOAD_TEST_REPORT_FOLDER: process.env.TS_SELENIUM_LOAD_TEST_REPORT_FOLDER || './load-test-folder',
99
- /**
100
- * Regular username used to login in OCP.
101
- */
102
- TS_SELENIUM_OCP_USERNAME: process.env.TS_SELENIUM_OCP_USERNAME || '',
103
- /**
104
- * Password regular user used to login in OCP.
105
- */
106
- TS_SELENIUM_OCP_PASSWORD: process.env.TS_SELENIUM_OCP_PASSWORD || '',
107
- /**
108
- * Email of regular user OpenShift to login CHE.
109
- */
110
- TS_SELENIUM_EMAIL_USER: process.env.TS_SELENIUM_EMAIL_USER || 'test@test.com',
111
- /**
112
- * First name of regular user OpenShift to login CHE.
113
- */
114
- TS_SELENIUM_FIRST_NAME: process.env.TS_SELENIUM_FIRST_NAME || 'qa',
115
- /**
116
- * Last name of regular user Openshift to login CHE.
117
- */
118
- TS_SELENIUM_LAST_NAME: process.env.TS_SELENIUM_LAST_NAME || 'test',
119
- /**
120
- * Delay between screenshots catching in the milliseconds for the execution screencast.
121
- */
122
- TS_SELENIUM_DELAY_BETWEEN_SCREENSHOTS: Number(process.env.TS_SELENIUM_DELAY_BETWEEN_SCREENSHOTS) || 1000,
123
- /**
124
- * Path to folder with tests execution report.
125
- */
126
- TS_SELENIUM_REPORT_FOLDER: process.env.TS_SELENIUM_REPORT_FOLDER || './report',
127
- /**
128
- * Enable or disable storing of execution screencast, "false" by default.
129
- */
130
- TS_SELENIUM_EXECUTION_SCREENCAST: process.env.TS_SELENIUM_EXECUTION_SCREENCAST === 'true',
131
- /**
132
- * Delete screencast after execution if all tests passed, "true" by default.
133
- */
134
- DELETE_SCREENCAST_IF_TEST_PASS: process.env.DELETE_SCREENCAST_IF_TEST_PASS !== 'false',
135
- /**
136
- * Remote driver URL.
137
- */
138
- TS_SELENIUM_REMOTE_DRIVER_URL: process.env.TS_SELENIUM_REMOTE_DRIVER_URL || '',
139
- /**
140
- * Stop and remove workspace if a test fails.
141
- */
142
- DELETE_WORKSPACE_ON_FAILED_TEST: process.env.DELETE_WORKSPACE_ON_FAILED_TEST === 'true',
143
- /**
144
- * Log level settings, possible variants: 'INFO' (by default), 'DEBUG', 'TRACE'.
145
- */
146
- TS_SELENIUM_LOG_LEVEL: process.env.TS_SELENIUM_LOG_LEVEL || 'INFO',
147
- /**
148
- * Enable Axios request interceptor, false by default
149
- */
150
- TS_SELENIUM_REQUEST_INTERCEPTOR: process.env.TS_SELENIUM_REQUEST_INTERCEPTOR === 'true',
151
- /**
152
- * Enable Axios response interceptor, false by default
153
- */
154
- TS_SELENIUM_RESPONSE_INTERCEPTOR: process.env.TS_SELENIUM_RESPONSE_INTERCEPTOR === 'true',
155
- /**
156
- * Running test suite - possible variants can be found in package.json scripts part.
157
- */
158
- TEST_SUITE: process.env.TEST_SUITE || 'test-happy-path',
159
- /**
160
- * The repo (with README.md in root) and access token are needed for to run test-git-ssh
161
- */
162
- TS_GITHUB_TEST_REPO: process.env.TS_GITHUB_TEST_REPO || '',
163
- /**
164
- * Token for a github repository with permissions which allow add the ssh keys
165
- */
166
- TS_GITHUB_TEST_REPO_ACCESS_TOKEN: process.env.TS_GITHUB_TEST_REPO_ACCESS_TOKEN || '',
167
- /**
168
- * Username of the github account
169
- */
170
- TS_GITHUB_USERNAME: process.env.TS_GITHUB_USERNAME || '',
171
- /**
172
- * Password of the github account
173
- */
174
- TS_GITHUB_PASSWORD: process.env.TS_GITHUB_PASSWORD || '',
175
- /**
176
- * Login for a user whom has been created in the test Openshift cluster. Need for Openshift connector test
177
- */
178
- TS_TEST_OPENSHIFT_PLUGIN_USERNAME: process.env.TS_TEST_OPENSHIFT_PLUGIN_USERNAME || '',
179
- /**
180
- * Password for a user whom has been created in the test Openshift cluster. Need for Openshift connector test
181
- */
182
- TS_TEST_OPENSHIFT_PLUGIN_PASSWORD: process.env.TS_TEST_OPENSHIFT_PLUGIN_PASSWORD || '',
183
- /**
184
- * The name of project in the Openshift plugin tree
185
- */
186
- TS_TEST_OPENSHIFT_PLUGIN_PROJECT: process.env.TS_TEST_OPENSHIFT_PLUGIN_PROJECT || '',
187
- /**
188
- * The name of the Openshift connector plugin component type
189
- */
190
- TS_TEST_OPENSHIFT_PLUGIN_COMPONENT_TYPE: process.env.TS_TEST_OPENSHIFT_PLUGIN_COMPONENT_TYPE || 'nodejs (s2i)',
191
- /**
192
- * The name of the Openshift connector plugin component version
193
- */
194
- TS_TEST_OPENSHIFT_PLUGIN_COMPONENT_VERSION: process.env.TS_TEST_OPENSHIFT_PLUGIN_COMPONENT_VERSION || 'latest',
195
- /**
196
- * Print all timeout variables when tests launch, defaulte to false
197
- */
198
- TS_SELENIUM_PRINT_TIMEOUT_VARIABLES: process.env.TS_SELENIUM_PRINT_TIMEOUT_VARIABLES || false,
199
- /**
200
- * URL of the workspace created by devworkspace-controller
201
- */
202
- TS_SELENIUM_DEVWORKSPACE_URL: process.env.TS_SELENIUM_DEVWORKSPACE_URL,
203
- /**
204
- * This variable specifies that run test is used for load testing and that all artifacts will be sent to ftp client.
205
- */
206
- TS_LOAD_TESTS: process.env.TS_LOAD_TESTS || 'false',
207
- /**
208
- * This variable determines whether to delete the workspace after the test or leave the workspace running.
209
- */
210
- TS_DELETE_PLUGINS_TEST_WORKSPACE: process.env.TS_DELETE_PLUGINS_TEST_WORKSPACE || 'true',
211
- /**
212
- * URL of Gogs self-hosted Git server.
213
- */
214
- TS_SELF_HOSTED_GIT_SERVER_URL: process.env.TS_SELF_HOSTED_GIT_SERVER_URL || '10.0.104.86:10080'
215
- };
216
- //# sourceMappingURL=TestConstants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TestConstants.js","sourceRoot":"","sources":["../TestConstants.ts"],"names":[],"mappings":"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"}