@eclipse-che/che-e2e 7.73.0-dev-1397a5e → 7.73.0-dev-ed57855

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 (177) hide show
  1. package/configs/inversify.config.ts +6 -6
  2. package/configs/inversify.types.ts +27 -27
  3. package/configs/mocharc.ts +21 -21
  4. package/constants/APITestConstants.ts +39 -38
  5. package/constants/BaseTestConstants.ts +46 -43
  6. package/constants/ChromeDriverConstants.ts +29 -29
  7. package/constants/FactoryTestConstants.ts +30 -30
  8. package/constants/MonacoConstants.ts +10 -10
  9. package/constants/OAuthConstants.ts +46 -46
  10. package/constants/ReporterConstants.ts +28 -28
  11. package/constants/TimeoutConstants.ts +101 -101
  12. package/dist/configs/inversify.config.js.map +1 -1
  13. package/dist/configs/inversify.types.js.map +1 -1
  14. package/dist/configs/mocharc.js +1 -1
  15. package/dist/configs/mocharc.js.map +1 -1
  16. package/dist/constants/APITestConstants.js +2 -2
  17. package/dist/constants/APITestConstants.js.map +1 -1
  18. package/dist/constants/BaseTestConstants.js +2 -1
  19. package/dist/constants/BaseTestConstants.js.map +1 -1
  20. package/dist/constants/ChromeDriverConstants.js +1 -1
  21. package/dist/constants/ChromeDriverConstants.js.map +1 -1
  22. package/dist/constants/FactoryTestConstants.js +1 -1
  23. package/dist/constants/FactoryTestConstants.js.map +1 -1
  24. package/dist/constants/MonacoConstants.js +1 -1
  25. package/dist/constants/MonacoConstants.js.map +1 -1
  26. package/dist/constants/OAuthConstants.js +1 -1
  27. package/dist/constants/OAuthConstants.js.map +1 -1
  28. package/dist/constants/ReporterConstants.js +1 -1
  29. package/dist/constants/ReporterConstants.js.map +1 -1
  30. package/dist/constants/TimeoutConstants.js.map +1 -1
  31. package/dist/driver/ChromeDriver.js.map +1 -1
  32. package/dist/pageobjects/dashboard/CreateWorkspace.js +8 -8
  33. package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -1
  34. package/dist/pageobjects/dashboard/Dashboard.js +11 -11
  35. package/dist/pageobjects/dashboard/Dashboard.js.map +1 -1
  36. package/dist/pageobjects/dashboard/Workspaces.js +14 -14
  37. package/dist/pageobjects/dashboard/Workspaces.js.map +1 -1
  38. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +8 -8
  39. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +1 -1
  40. package/dist/pageobjects/git-providers/OauthPage.js +17 -17
  41. package/dist/pageobjects/git-providers/OauthPage.js.map +1 -1
  42. package/dist/pageobjects/ide/CheCodeLocatorLoader.js +1 -1
  43. package/dist/pageobjects/ide/CheCodeLocatorLoader.js.map +1 -1
  44. package/dist/pageobjects/login/kubernetes/DexLoginPage.js +5 -5
  45. package/dist/pageobjects/login/kubernetes/DexLoginPage.js.map +1 -1
  46. package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js +1 -1
  47. package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js.map +1 -1
  48. package/dist/pageobjects/login/openshift/OcpLoginPage.js +10 -10
  49. package/dist/pageobjects/login/openshift/OcpLoginPage.js.map +1 -1
  50. package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js +2 -2
  51. package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js.map +1 -1
  52. package/dist/pageobjects/login/openshift/OcpUserLoginPage.js +1 -1
  53. package/dist/pageobjects/login/openshift/OcpUserLoginPage.js.map +1 -1
  54. package/dist/pageobjects/login/openshift/RedHatLoginPage.js +6 -6
  55. package/dist/pageobjects/login/openshift/RedHatLoginPage.js.map +1 -1
  56. package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js +2 -2
  57. package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js.map +1 -1
  58. package/dist/pageobjects/openshift/OcpApplicationPage.js +2 -2
  59. package/dist/pageobjects/openshift/OcpApplicationPage.js.map +1 -1
  60. package/dist/pageobjects/openshift/OcpImportFromGitPage.js +5 -5
  61. package/dist/pageobjects/openshift/OcpImportFromGitPage.js.map +1 -1
  62. package/dist/pageobjects/openshift/OcpMainPage.js +11 -11
  63. package/dist/pageobjects/openshift/OcpMainPage.js.map +1 -1
  64. package/dist/specs/MochaHooks.js +1 -1
  65. package/dist/specs/MochaHooks.js.map +1 -1
  66. package/dist/specs/SmokeTest.spec.js +7 -3
  67. package/dist/specs/SmokeTest.spec.js.map +1 -1
  68. package/dist/specs/api/ContainerOverridesAPI.spec.js.map +1 -1
  69. package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js +7 -5
  70. package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js.map +1 -1
  71. package/dist/specs/api/EmptyWorkspaceAPI.spec.js +1 -1
  72. package/dist/specs/api/EmptyWorkspaceAPI.spec.js.map +1 -1
  73. package/dist/specs/api/PodOverridesAPI.spec.js +2 -1
  74. package/dist/specs/api/PodOverridesAPI.spec.js.map +1 -1
  75. package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js +9 -5
  76. package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js.map +1 -1
  77. package/dist/specs/dashboard-samples/Quarkus.spec.js +7 -3
  78. package/dist/specs/dashboard-samples/Quarkus.spec.js.map +1 -1
  79. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js +6 -2
  80. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js.map +1 -1
  81. package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js +3 -1
  82. package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js.map +1 -1
  83. package/dist/specs/factory/Factory.spec.js +3 -1
  84. package/dist/specs/factory/Factory.spec.js.map +1 -1
  85. package/dist/specs/factory/NoSetupRepoFactory.spec.js +4 -2
  86. package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +1 -1
  87. package/dist/specs/factory/RefusedOAuthFactory.spec.js +4 -2
  88. package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +1 -1
  89. package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +6 -2
  90. package/dist/specs/miscellaneous/PredefinedNamespace.spec.js.map +1 -1
  91. package/dist/tests-library/LoginTests.js.map +1 -1
  92. package/dist/tests-library/ProjectAndFileTests.js +3 -3
  93. package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
  94. package/dist/tests-library/WorkspaceHandlingTests.js +54 -74
  95. package/dist/tests-library/WorkspaceHandlingTests.js.map +1 -1
  96. package/dist/utils/BrowserTabsUtil.js +10 -10
  97. package/dist/utils/BrowserTabsUtil.js.map +1 -1
  98. package/dist/utils/CheReporter.js.map +1 -1
  99. package/dist/utils/DevWorkspaceConfigurationHelper.js +2 -2
  100. package/dist/utils/DevWorkspaceConfigurationHelper.js.map +1 -1
  101. package/dist/utils/DevfilesRegistryHelper.js +7 -7
  102. package/dist/utils/DevfilesRegistryHelper.js.map +1 -1
  103. package/dist/utils/DriverHelper.js +81 -81
  104. package/dist/utils/DriverHelper.js.map +1 -1
  105. package/dist/utils/KubernetesCommandLineToolsExecutor.js +38 -35
  106. package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +1 -1
  107. package/dist/utils/Logger.js +19 -10
  108. package/dist/utils/Logger.js.map +1 -1
  109. package/dist/utils/ScreenCatcher.js.map +1 -1
  110. package/dist/utils/ShellExecutor.js.map +1 -1
  111. package/dist/utils/StringUtil.js +2 -2
  112. package/dist/utils/StringUtil.js.map +1 -1
  113. package/dist/utils/request-handlers/CheApiRequestHandler.js +13 -11
  114. package/dist/utils/request-handlers/CheApiRequestHandler.js.map +1 -1
  115. package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js +1 -1
  116. package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +1 -1
  117. package/dist/utils/workspace/ApiUrlResolver.js +3 -3
  118. package/dist/utils/workspace/ApiUrlResolver.js.map +1 -1
  119. package/dist/utils/workspace/TestWorkspaceUtil.js +20 -16
  120. package/dist/utils/workspace/TestWorkspaceUtil.js.map +1 -1
  121. package/dist/utils/workspace/WorkspaceStatus.js.map +1 -1
  122. package/driver/ChromeDriver.ts +44 -44
  123. package/driver/IDriver.ts +1 -1
  124. package/package.json +1 -1
  125. package/pageobjects/dashboard/CreateWorkspace.ts +52 -52
  126. package/pageobjects/dashboard/Dashboard.ts +72 -72
  127. package/pageobjects/dashboard/Workspaces.ts +138 -139
  128. package/pageobjects/dashboard/workspace-details/WorkspaceDetails.ts +92 -93
  129. package/pageobjects/git-providers/OauthPage.ts +136 -136
  130. package/pageobjects/ide/CheCodeLocatorLoader.ts +40 -40
  131. package/pageobjects/login/interfaces/ICheLoginPage.ts +1 -1
  132. package/pageobjects/login/interfaces/IOcpLoginPage.ts +1 -1
  133. package/pageobjects/login/kubernetes/DexLoginPage.ts +27 -27
  134. package/pageobjects/login/kubernetes/KubernetesLoginPage.ts +11 -11
  135. package/pageobjects/login/openshift/OcpLoginPage.ts +50 -50
  136. package/pageobjects/login/openshift/OcpRedHatLoginPage.ts +21 -21
  137. package/pageobjects/login/openshift/OcpUserLoginPage.ts +14 -14
  138. package/pageobjects/login/openshift/RedHatLoginPage.ts +44 -41
  139. package/pageobjects/login/openshift/RegularUserOcpCheLoginPage.ts +23 -23
  140. package/pageobjects/openshift/OcpApplicationPage.ts +16 -16
  141. package/pageobjects/openshift/OcpImportFromGitPage.ts +54 -54
  142. package/pageobjects/openshift/OcpMainPage.ts +64 -64
  143. package/resources/pod-overrides-airgap.yaml +37 -0
  144. package/specs/MochaHooks.ts +44 -44
  145. package/specs/SmokeTest.spec.ts +35 -31
  146. package/specs/api/ContainerOverridesAPI.spec.ts +23 -23
  147. package/specs/api/DevfileAcceptanceTestAPI.spec.ts +93 -91
  148. package/specs/api/EmptyWorkspaceAPI.spec.ts +50 -50
  149. package/specs/api/PodOverridesAPI.spec.ts +30 -29
  150. package/specs/dashboard-samples/EmptyWorkspace.spec.ts +29 -25
  151. package/specs/dashboard-samples/Quarkus.spec.ts +31 -27
  152. package/specs/dashboard-samples/RecommendedExtensions.spec.ts +156 -152
  153. package/specs/devconsole-intergration/DevConsoleIntegration.spec.ts +62 -64
  154. package/specs/factory/Factory.spec.ts +149 -147
  155. package/specs/factory/NoSetupRepoFactory.spec.ts +188 -186
  156. package/specs/factory/RefusedOAuthFactory.spec.ts +182 -180
  157. package/specs/miscellaneous/PredefinedNamespace.spec.ts +52 -48
  158. package/tests-library/LoginTests.ts +29 -29
  159. package/tests-library/ProjectAndFileTests.ts +13 -13
  160. package/tests-library/WorkspaceHandlingTests.ts +84 -103
  161. package/utils/BrowserTabsUtil.ts +69 -69
  162. package/utils/CheReporter.ts +4 -6
  163. package/utils/DevWorkspaceConfigurationHelper.ts +58 -58
  164. package/utils/DevfilesRegistryHelper.ts +51 -51
  165. package/utils/DriverHelper.ts +599 -600
  166. package/utils/KubernetesCommandLineToolsExecutor.ts +166 -158
  167. package/utils/Logger.ts +98 -67
  168. package/utils/ScreenCatcher.ts +42 -42
  169. package/utils/ShellExecutor.ts +10 -10
  170. package/utils/StringUtil.ts +29 -29
  171. package/utils/request-handlers/CheApiRequestHandler.ts +84 -82
  172. package/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.ts +18 -18
  173. package/utils/request-handlers/headers/IAuthorizationHeaderHandler.ts +1 -1
  174. package/utils/workspace/ApiUrlResolver.ts +23 -23
  175. package/utils/workspace/ITestWorkspaceUtil.ts +29 -29
  176. package/utils/workspace/TestWorkspaceUtil.ts +120 -116
  177. package/utils/workspace/WorkspaceStatus.ts +3 -3
@@ -9,7 +9,7 @@
9
9
  **********************************************************************/
10
10
 
11
11
  import 'reflect-metadata';
12
- import { injectable, inject } from 'inversify';
12
+ import { inject, injectable } from 'inversify';
13
13
  import { DriverHelper } from '../DriverHelper';
14
14
  import { WorkspaceStatus } from './WorkspaceStatus';
15
15
  import { error } from 'selenium-webdriver';
@@ -23,142 +23,146 @@ import { TimeoutConstants } from '../../constants/TimeoutConstants';
23
23
 
24
24
  @injectable()
25
25
  export class TestWorkspaceUtil implements ITestWorkspaceUtil {
26
- readonly polling: number = TimeoutConstants.TS_SELENIUM_DEFAULT_POLLING;
27
- readonly attempts: number = TimeoutConstants.TS_DASHBOARD_WORKSPACE_STOP_TIMEOUT / this.polling;
26
+ readonly polling: number = TimeoutConstants.TS_SELENIUM_DEFAULT_POLLING;
27
+ readonly attempts: number = TimeoutConstants.TS_DASHBOARD_WORKSPACE_STOP_TIMEOUT / this.polling;
28
28
 
29
- constructor(
30
- @inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper,
31
- @inject(CLASSES.CheApiRequestHandler) private readonly processRequestHandler: CheApiRequestHandler,
32
- @inject(CLASSES.ApiUrlResolver) private readonly apiUrlResolver: ApiUrlResolver
33
- ) { }
29
+ constructor(
30
+ @inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper,
31
+ @inject(CLASSES.CheApiRequestHandler) private readonly processRequestHandler: CheApiRequestHandler,
32
+ @inject(CLASSES.ApiUrlResolver) private readonly apiUrlResolver: ApiUrlResolver
33
+ ) { }
34
34
 
35
- async waitWorkspaceStatus(workspaceName: string, expectedWorkspaceStatus: WorkspaceStatus): Promise<void> {
36
- Logger.debug('TestWorkspaceUtil.waitWorkspaceStatus');
35
+ async waitWorkspaceStatus(workspaceName: string, expectedWorkspaceStatus: WorkspaceStatus): Promise<void> {
36
+ Logger.debug();
37
37
 
38
- let workspaceStatus: string = '';
39
- let expectedStatus: boolean = false;
40
- for (let i: number = 0; i < this.attempts; i++) {
41
- const response: AxiosResponse = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName));
38
+ let workspaceStatus: string = '';
39
+ let expectedStatus: boolean = false;
40
+ for (let i: number = 0; i < this.attempts; i++) {
41
+ const response: AxiosResponse = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName));
42
42
 
43
- if (response.status !== 200) {
44
- throw new Error(`Can not get status of a workspace. Code: ${response.status} Data: ${response.data}`);
45
- }
43
+ if (response.status !== 200) {
44
+ throw new Error(`Can not get status of a workspace. Code: ${response.status} Data: ${response.data}`);
45
+ }
46
46
 
47
- workspaceStatus = await response.data.status.phase;
47
+ workspaceStatus = await response.data.status.phase;
48
48
 
49
- if (workspaceStatus === expectedWorkspaceStatus) {
50
- expectedStatus = true;
51
- break;
52
- }
49
+ if (workspaceStatus === expectedWorkspaceStatus) {
50
+ expectedStatus = true;
51
+ break;
52
+ }
53
53
 
54
- await this.driverHelper.wait(this.polling);
55
- }
56
-
57
- if (!expectedStatus) {
58
- let waitTime: number = this.attempts * this.polling;
59
- throw new error.TimeoutError(`The workspace was not stopped in ${waitTime} ms. Current status is: ${workspaceStatus}`);
60
- }
54
+ await this.driverHelper.wait(this.polling);
61
55
  }
62
56
 
63
- async stopWorkspaceByName(workspaceName: string): Promise<void> {
64
- Logger.debug(`TestWorkspaceUtil.stopWorkspaceByName: ${workspaceName}`);
65
-
66
- const stopWorkspaceApiUrl: string = await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName);
67
- let stopWorkspaceResponse: AxiosResponse;
68
-
69
- try {
70
- stopWorkspaceResponse = await this.processRequestHandler.patch(stopWorkspaceApiUrl, [{'op': 'replace', 'path': '/spec/started', 'value': false}]);
71
- } catch (err) {
72
- Logger.error(`Stop workspace call failed. URL used: ${stopWorkspaceApiUrl}`);
73
- throw err;
74
- }
75
-
76
- if (stopWorkspaceResponse.status !== 200) {
77
- throw new Error(`Cannot stop workspace. Code: ${stopWorkspaceResponse.status} Data: ${stopWorkspaceResponse.data}`);
78
- }
79
-
80
- await this.waitWorkspaceStatus(workspaceName, WorkspaceStatus.STOPPED);
81
- Logger.debug(`TestWorkspaceUtil.stopWorkspaceByName: ${workspaceName} stopped successfully`);
57
+ if (!expectedStatus) {
58
+ let waitTime: number = this.attempts * this.polling;
59
+ throw new error.TimeoutError(`The workspace was not stopped in ${waitTime} ms. Current status is: ${workspaceStatus}`);
60
+ }
61
+ }
62
+
63
+ async stopWorkspaceByName(workspaceName: string): Promise<void> {
64
+ Logger.debug(`${workspaceName}`);
65
+
66
+ const stopWorkspaceApiUrl: string = await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName);
67
+ let stopWorkspaceResponse: AxiosResponse;
68
+
69
+ try {
70
+ stopWorkspaceResponse = await this.processRequestHandler.patch(stopWorkspaceApiUrl, [{
71
+ 'op': 'replace',
72
+ 'path': '/spec/started',
73
+ 'value': false
74
+ }]);
75
+ } catch (err) {
76
+ Logger.error(`stop workspace call failed. URL used: ${stopWorkspaceApiUrl}`);
77
+ throw err;
82
78
  }
83
79
 
84
- // delete a workspace without stopping phase (similar with force deleting)
85
- async deleteWorkspaceByName(workspaceName: string): Promise<void> {
86
- Logger.debug(`TestWorkspaceUtil.deleteWorkspaceByName: ${workspaceName}` );
87
-
88
- const deleteWorkspaceApiUrl: string = await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName);
89
- let deleteWorkspaceResponse: AxiosResponse;
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(`Delete workspace call failed. URL used: ${deleteWorkspaceStatus}`);
99
- throw error;
100
- }
101
-
102
- if (deleteWorkspaceResponse.status !== 204) {
103
- throw new Error(`Can not delete workspace. Code: ${deleteWorkspaceResponse.status} Data: ${deleteWorkspaceResponse.data}`);
104
- }
105
-
106
- for (let i: number = 0; i < this.attempts; i++) {
107
- try {
108
- deleteWorkspaceResponse = await this.processRequestHandler.get(deleteWorkspaceApiUrl);
109
- } catch (error) {
110
- if (axios.isAxiosError(error) && error.response?.status === 404) {
111
- deleteWorkspaceStatus = true;
112
- Logger.debug(`TestWorkspaceUtil.stopWorkspaceByName: ${workspaceName} deleted successfully`);
113
- break;
114
- }
115
- }
116
- }
117
-
118
- if (!deleteWorkspaceStatus) {
119
- let waitTime: number = this.attempts * this.polling;
120
- throw new error.TimeoutError(`The workspace was not deleted in ${waitTime} ms.`);
121
- }
80
+ if (stopWorkspaceResponse.status !== 200) {
81
+ throw new Error(`Cannot stop workspace. Code: ${stopWorkspaceResponse.status} Data: ${stopWorkspaceResponse.data}`);
122
82
  }
123
83
 
124
- // stop workspace before deleting with checking stopping phase
125
- async stopAndDeleteWorkspaceByName(workspaceName: string): Promise<void> {
126
- Logger.debug('TestWorkspaceUtil.stopAndDeleteWorkspaceByName');
84
+ await this.waitWorkspaceStatus(workspaceName, WorkspaceStatus.STOPPED);
85
+ Logger.debug(`${workspaceName} stopped successfully`);
86
+ }
87
+
88
+ // delete a workspace without stopping phase (similar with force deleting)
89
+ async deleteWorkspaceByName(workspaceName: string): Promise<void> {
90
+ Logger.debug(`${workspaceName}`);
91
+
92
+ const deleteWorkspaceApiUrl: string = await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName);
93
+ let deleteWorkspaceResponse: AxiosResponse;
94
+ let deleteWorkspaceStatus: boolean = false;
95
+ try {
96
+ deleteWorkspaceResponse = await this.processRequestHandler.delete(deleteWorkspaceApiUrl);
97
+ } catch (error) {
98
+ if (axios.isAxiosError(error) && error.response?.status === 404) {
99
+ Logger.error(`the workspace :${workspaceName} not found`);
100
+ throw error;
101
+ }
102
+ Logger.error(`delete workspace call failed. URL used: ${deleteWorkspaceStatus}`);
103
+ throw error;
104
+ }
127
105
 
128
- await this.stopWorkspaceByName(workspaceName);
129
- await this.deleteWorkspaceByName(workspaceName);
106
+ if (deleteWorkspaceResponse.status !== 204) {
107
+ throw new Error(`Can not delete workspace. Code: ${deleteWorkspaceResponse.status} Data: ${deleteWorkspaceResponse.data}`);
130
108
  }
131
109
 
132
- // stop all run workspaces in the namespace
133
- async stopAllRunningWorkspaces(namespace: string): Promise<void> {
134
- Logger.debug('TestWorkspaceUtil.stopAllRunProjects');
135
- let response: AxiosResponse = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
136
- for (let i: number = 0; i < response.data.items.length; i++) {
137
- Logger.info('The project is being stopped: ' + response.data.items[i].metadata.name);
138
- await this.stopWorkspaceByName(response.data.items[i].metadata.name);
110
+ for (let i: number = 0; i < this.attempts; i++) {
111
+ try {
112
+ deleteWorkspaceResponse = await this.processRequestHandler.get(deleteWorkspaceApiUrl);
113
+ } catch (error) {
114
+ if (axios.isAxiosError(error) && error.response?.status === 404) {
115
+ deleteWorkspaceStatus = true;
116
+ Logger.debug(`${workspaceName} deleted successfully`);
117
+ break;
139
118
  }
119
+ }
140
120
  }
141
121
 
142
- // stop all run workspaces, check statuses and remove the workspaces
143
- async stopAndDeleteAllRunningWorkspaces(namespace: string): Promise<void> {
144
- Logger.debug('TestWorkspaceUtil.stopAndDeleteAllRunProjects');
145
- let response: AxiosResponse = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
146
- await this.stopAllRunningWorkspaces(namespace);
147
- for (let i: number = 0; i < response.data.items.length; i++) {
148
- Logger.info('The project is being deleted: ' + response.data.items[i].metadata.name);
149
- await this.deleteWorkspaceByName(response.data.items[i].metadata.name);
150
- }
122
+ if (!deleteWorkspaceStatus) {
123
+ let waitTime: number = this.attempts * this.polling;
124
+ throw new error.TimeoutError(`The workspace was not deleted in ${waitTime} ms.`);
125
+ }
126
+ }
127
+
128
+ // stop workspace before deleting with checking stopping phase
129
+ async stopAndDeleteWorkspaceByName(workspaceName: string): Promise<void> {
130
+ Logger.debug();
131
+
132
+ await this.stopWorkspaceByName(workspaceName);
133
+ await this.deleteWorkspaceByName(workspaceName);
134
+ }
135
+
136
+ // stop all run workspaces in the namespace
137
+ async stopAllRunningWorkspaces(namespace: string): Promise<void> {
138
+ Logger.debug();
139
+ let response: AxiosResponse = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
140
+ for (let i: number = 0; i < response.data.items.length; i++) {
141
+ Logger.info('the project is being stopped: ' + response.data.items[i].metadata.name);
142
+ await this.stopWorkspaceByName(response.data.items[i].metadata.name);
151
143
  }
144
+ }
145
+
146
+ // stop all run workspaces, check statuses and remove the workspaces
147
+ async stopAndDeleteAllRunningWorkspaces(namespace: string): Promise<void> {
148
+ Logger.debug();
149
+ let response: AxiosResponse = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
150
+ await this.stopAllRunningWorkspaces(namespace);
151
+ for (let i: number = 0; i < response.data.items.length; i++) {
152
+ Logger.info('the project is being deleted: ' + response.data.items[i].metadata.name);
153
+ await this.deleteWorkspaceByName(response.data.items[i].metadata.name);
154
+ }
155
+ }
152
156
 
153
- // stop all run workspaces without stopping and waiting for of 'Stopped' phase
154
- // similar with 'force' deleting
155
- async deleteAllWorkspaces(namespace: string): Promise<void> {
156
- Logger.debug('TestWorkspaceUtil.deleteAllRunProjects');
157
- let response: AxiosResponse = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
157
+ // stop all run workspaces without stopping and waiting for of 'Stopped' phase
158
+ // similar with 'force' deleting
159
+ async deleteAllWorkspaces(namespace: string): Promise<void> {
160
+ Logger.debug();
161
+ let response: AxiosResponse = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
158
162
 
159
- for (let i: number = 0; i < response.data.items.length; i++) {
160
- Logger.info('The project is being deleted .......: ' + response.data.items[i].metadata.name);
161
- await this.deleteWorkspaceByName(response.data.items[i].metadata.name);
162
- }
163
+ for (let i: number = 0; i < response.data.items.length; i++) {
164
+ Logger.info('the project is being deleted .......: ' + response.data.items[i].metadata.name);
165
+ await this.deleteWorkspaceByName(response.data.items[i].metadata.name);
163
166
  }
167
+ }
164
168
  }
@@ -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
  }