@eclipse-che/che-e2e 7.64.0-dev-db63138 → 7.64.0-dev-f0466d9
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.
- package/configs/inversify.types.ts +2 -2
- package/configs/mocharc.ts +2 -2
- package/constants/TestConstants.ts +2 -2
- package/constants/TimeoutConstants.ts +1 -1
- package/dist/configs/inversify.types.js.map +1 -1
- package/dist/configs/mocharc.js +2 -2
- package/dist/configs/mocharc.js.map +1 -1
- package/dist/constants/TestConstants.js.map +1 -1
- package/dist/constants/TimeoutConstants.js.map +1 -1
- package/dist/driver/ChromeDriver.js.map +1 -1
- package/dist/pageobjects/dashboard/CreateWorkspace.js +5 -5
- package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -1
- package/dist/pageobjects/dashboard/Dashboard.js.map +1 -1
- package/dist/specs/MochaHooks.js.map +1 -1
- package/dist/specs/SmokeTest.spec.js +49 -0
- package/dist/specs/SmokeTest.spec.js.map +1 -0
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +1 -1
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js.map +1 -1
- package/dist/tests-library/WorkspaceHandlingTests.js +12 -0
- package/dist/tests-library/WorkspaceHandlingTests.js.map +1 -1
- package/dist/utils/CheReporter.js +5 -2
- package/dist/utils/CheReporter.js.map +1 -1
- package/dist/utils/DriverHelper.js.map +1 -1
- package/dist/utils/Logger.js.map +1 -1
- package/dist/utils/ScreenCatcher.js.map +1 -1
- package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +1 -1
- package/dist/utils/vsc/GitUtil.js +1 -6
- package/dist/utils/vsc/GitUtil.js.map +1 -1
- package/dist/utils/workspace/ApiUrlResolver.js.map +1 -1
- package/dist/utils/workspace/TestWorkspaceUtil.js +1 -1
- package/dist/utils/workspace/TestWorkspaceUtil.js.map +1 -1
- package/driver/ChromeDriver.ts +2 -2
- package/package.json +1 -1
- package/pageobjects/dashboard/CreateWorkspace.ts +6 -6
- package/pageobjects/dashboard/Dashboard.ts +15 -19
- package/pageobjects/dashboard/Workspaces.ts +20 -20
- package/pageobjects/dashboard/workspace-details/WorkspaceDetails.ts +16 -16
- package/pageobjects/git-providers/OauthPage.ts +12 -12
- package/pageobjects/ide/CheCodeLocatorLoader.ts +1 -1
- package/pageobjects/login/OcpUserLoginPage.ts +1 -1
- package/pageobjects/login/RedHatLoginPage.ts +6 -6
- package/pageobjects/login/RegularUserOcpCheLoginPage.ts +1 -1
- package/pageobjects/openshift/CheLoginPage.ts +3 -3
- package/pageobjects/openshift/OcpLoginPage.ts +8 -8
- package/specs/MochaHooks.ts +7 -7
- package/specs/SmokeTest.spec.ts +50 -0
- package/specs/devfiles/Quarkus.spec.ts +6 -6
- package/specs/factory/Factory.spec.ts +17 -17
- package/specs/factory/NoSetupRepoFactory.spec.ts +21 -21
- package/specs/factory/RefusedOAuthFactory.spec.ts +21 -21
- package/specs/miscellaneous/PredefinedNamespace.spec.ts +5 -5
- package/tests-library/WorkspaceHandlingTests.ts +13 -0
- package/tslint.json +4 -4
- package/utils/BrowserTabsUtil.ts +7 -7
- package/utils/CheReporter.ts +12 -8
- package/utils/DriverHelper.ts +31 -31
- package/utils/Logger.ts +8 -8
- package/utils/ScreenCatcher.ts +8 -7
- package/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.ts +2 -1
- package/utils/vsc/GitUtil.ts +1 -4
- package/utils/workspace/ApiUrlResolver.ts +3 -2
- package/utils/workspace/TestWorkspaceUtil.ts +22 -22
package/utils/Logger.ts
CHANGED
|
@@ -17,7 +17,7 @@ export abstract class Logger {
|
|
|
17
17
|
* @param text log text
|
|
18
18
|
* @param indentLevel log level
|
|
19
19
|
*/
|
|
20
|
-
public static error(text: string, indentLevel: number = 1) {
|
|
20
|
+
public static error(text: string, indentLevel: number = 1): void {
|
|
21
21
|
this.logText(indentLevel, `[ERROR] ${text}`);
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -26,7 +26,7 @@ export abstract class Logger {
|
|
|
26
26
|
* @param text log text
|
|
27
27
|
* @param indentLevel log level
|
|
28
28
|
*/
|
|
29
|
-
public static warn(text: string, indentLevel: number = 1) {
|
|
29
|
+
public static warn(text: string, indentLevel: number = 1): void {
|
|
30
30
|
if (TestConstants.TS_SELENIUM_LOG_LEVEL === 'ERROR') {
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
@@ -38,7 +38,7 @@ export abstract class Logger {
|
|
|
38
38
|
* @param text log text
|
|
39
39
|
* @param indentLevel log level
|
|
40
40
|
*/
|
|
41
|
-
public static info(text: string, indentLevel: number = 3) {
|
|
41
|
+
public static info(text: string, indentLevel: number = 3): void {
|
|
42
42
|
if (TestConstants.TS_SELENIUM_LOG_LEVEL === 'ERROR' ||
|
|
43
43
|
TestConstants.TS_SELENIUM_LOG_LEVEL === 'WARN') {
|
|
44
44
|
return;
|
|
@@ -51,7 +51,7 @@ export abstract class Logger {
|
|
|
51
51
|
* @param text log text
|
|
52
52
|
* @param indentLevel log level
|
|
53
53
|
*/
|
|
54
|
-
public static debug(text: string, indentLevel: number = 5) {
|
|
54
|
+
public static debug(text: string, indentLevel: number = 5): void {
|
|
55
55
|
if (TestConstants.TS_SELENIUM_LOG_LEVEL === 'ERROR' ||
|
|
56
56
|
TestConstants.TS_SELENIUM_LOG_LEVEL === 'WARN' ||
|
|
57
57
|
TestConstants.TS_SELENIUM_LOG_LEVEL === 'INFO') {
|
|
@@ -66,7 +66,7 @@ export abstract class Logger {
|
|
|
66
66
|
* @param text log text
|
|
67
67
|
* @param indentLevel log level
|
|
68
68
|
*/
|
|
69
|
-
public static trace(text: string, indentLevel: number = 6) {
|
|
69
|
+
public static trace(text: string, indentLevel: number = 6): void {
|
|
70
70
|
if (TestConstants.TS_SELENIUM_LOG_LEVEL === 'ERROR' ||
|
|
71
71
|
TestConstants.TS_SELENIUM_LOG_LEVEL === 'WARN' ||
|
|
72
72
|
TestConstants.TS_SELENIUM_LOG_LEVEL === 'INFO' ||
|
|
@@ -76,16 +76,16 @@ export abstract class Logger {
|
|
|
76
76
|
this.logText(indentLevel, `‣ ${text}`);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
private static logText(messageIndentationLevel: number, text: string) {
|
|
79
|
+
private static logText(messageIndentationLevel: number, text: string): void {
|
|
80
80
|
// start group for every level
|
|
81
|
-
for (let i = 0; i < messageIndentationLevel; i++) {
|
|
81
|
+
for (let i: number = 0; i < messageIndentationLevel; i++) {
|
|
82
82
|
console.group();
|
|
83
83
|
}
|
|
84
84
|
// print the trimmed text
|
|
85
85
|
// if multiline, the message should be properly padded
|
|
86
86
|
console.log(text);
|
|
87
87
|
// end group for every level
|
|
88
|
-
for (let i = 0; i < messageIndentationLevel; i++) {
|
|
88
|
+
for (let i: number = 0; i < messageIndentationLevel; i++) {
|
|
89
89
|
console.groupEnd();
|
|
90
90
|
}
|
|
91
91
|
}
|
package/utils/ScreenCatcher.ts
CHANGED
|
@@ -14,15 +14,16 @@ import { DriverHelper } from './DriverHelper';
|
|
|
14
14
|
import { Sanitizer } from './Sanitizer';
|
|
15
15
|
import { error } from 'selenium-webdriver';
|
|
16
16
|
import { TestConstants } from '../constants/TestConstants';
|
|
17
|
+
import { WriteStream } from 'fs';
|
|
17
18
|
|
|
18
19
|
@injectable()
|
|
19
20
|
export class ScreenCatcher {
|
|
20
21
|
constructor(@inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper,
|
|
21
22
|
@inject(CLASSES.Sanitizer) private readonly sanitizer: Sanitizer) { }
|
|
22
23
|
|
|
23
|
-
async catchMethodScreen(methodName: string, methodIndex: number, screenshotIndex: number) {
|
|
24
|
-
const executionScreenCastDir = `${TestConstants.TS_SELENIUM_REPORT_FOLDER}/executionScreencast`;
|
|
25
|
-
const executionScreenCastErrorsDir = `${TestConstants.TS_SELENIUM_REPORT_FOLDER}/executionScreencastErrors`;
|
|
24
|
+
async catchMethodScreen(methodName: string, methodIndex: number, screenshotIndex: number): Promise<void> {
|
|
25
|
+
const executionScreenCastDir: string = `${TestConstants.TS_SELENIUM_REPORT_FOLDER}/executionScreencast`;
|
|
26
|
+
const executionScreenCastErrorsDir: string = `${TestConstants.TS_SELENIUM_REPORT_FOLDER}/executionScreencastErrors`;
|
|
26
27
|
const formattedMethodIndex: string = new Intl.NumberFormat('en-us', { minimumIntegerDigits: 3 }).format(methodIndex);
|
|
27
28
|
const formattedScreenshotIndex: string = new Intl.NumberFormat('en-us', { minimumIntegerDigits: 5 }).format(screenshotIndex).replace(/,/g, '');
|
|
28
29
|
|
|
@@ -54,18 +55,18 @@ export class ScreenCatcher {
|
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
async catchScreen(screenshotPath: string) {
|
|
58
|
+
async catchScreen(screenshotPath: string): Promise<void> {
|
|
58
59
|
const screenshot: string = await this.driverHelper.getDriver().takeScreenshot();
|
|
59
|
-
const screenshotStream = fs.createWriteStream(screenshotPath);
|
|
60
|
+
const screenshotStream: WriteStream = fs.createWriteStream(screenshotPath);
|
|
60
61
|
screenshotStream.write(Buffer.from(screenshot, 'base64'));
|
|
61
62
|
screenshotStream.end();
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
async writeErrorLog(errorLogPath: string, err: error.IError) {
|
|
65
|
+
async writeErrorLog(errorLogPath: string, err: error.IError): Promise<void> {
|
|
65
66
|
console.log(`Failed to save screenshot, additional information in the ${errorLogPath}`);
|
|
66
67
|
|
|
67
68
|
if (err.stack) {
|
|
68
|
-
const screenshotStream = fs.createWriteStream(errorLogPath);
|
|
69
|
+
const screenshotStream: WriteStream = fs.createWriteStream(errorLogPath);
|
|
69
70
|
screenshotStream.write(Buffer.from(err.stack, 'utf8'));
|
|
70
71
|
screenshotStream.end();
|
|
71
72
|
}
|
|
@@ -13,6 +13,7 @@ import { inject, injectable } from 'inversify';
|
|
|
13
13
|
import { DriverHelper } from '../../DriverHelper';
|
|
14
14
|
import { CLASSES } from '../../../configs/inversify.types';
|
|
15
15
|
import { Logger } from '../../Logger';
|
|
16
|
+
import { IWebDriverCookie } from 'selenium-webdriver';
|
|
16
17
|
|
|
17
18
|
@injectable()
|
|
18
19
|
export class CheMultiuserAuthorizationHeaderHandler implements IAuthorizationHeaderHandler {
|
|
@@ -22,7 +23,7 @@ export class CheMultiuserAuthorizationHeaderHandler implements IAuthorizationHea
|
|
|
22
23
|
|
|
23
24
|
async get(): Promise<AxiosRequestConfig> {
|
|
24
25
|
try {
|
|
25
|
-
let token = await this.driverHelper.getDriver().manage().getCookie('_oauth_proxy');
|
|
26
|
+
let token: IWebDriverCookie = await this.driverHelper.getDriver().manage().getCookie('_oauth_proxy');
|
|
26
27
|
if (this.authorizationToken !== token.value) {
|
|
27
28
|
this.authorizationToken = token.value;
|
|
28
29
|
}
|
package/utils/vsc/GitUtil.ts
CHANGED
|
@@ -12,9 +12,6 @@ import { injectable } from 'inversify';
|
|
|
12
12
|
|
|
13
13
|
@injectable()
|
|
14
14
|
export class GitUtil {
|
|
15
|
-
|
|
16
|
-
constructor() { }
|
|
17
|
-
|
|
18
15
|
/**
|
|
19
16
|
* Method extracts a test repo name from git clone https url;
|
|
20
17
|
* it splits the url into string[] by "/" or ".", deletes empty elements and elements that contains just "git" word, than returns the last one;
|
|
@@ -22,7 +19,7 @@ export class GitUtil {
|
|
|
22
19
|
* @param url git https url (which using for "git clone")
|
|
23
20
|
* @return project name
|
|
24
21
|
*/
|
|
25
|
-
getProjectNameFromGitUrl(url: string) {
|
|
22
|
+
getProjectNameFromGitUrl(url: string): string {
|
|
26
23
|
return url.split(/[\/.]/).filter((e: string) => e !== '' && e !== 'git').reverse()[0];
|
|
27
24
|
}
|
|
28
25
|
}
|
|
@@ -11,6 +11,7 @@ import { inject, injectable } from 'inversify';
|
|
|
11
11
|
import { CLASSES } from '../../configs/inversify.types';
|
|
12
12
|
import { Logger } from '../Logger';
|
|
13
13
|
import { CheApiRequestHandler } from '../request-handlers/CheApiRequestHandler';
|
|
14
|
+
import { AxiosResponse } from 'axios';
|
|
14
15
|
|
|
15
16
|
@injectable()
|
|
16
17
|
export class ApiUrlResolver {
|
|
@@ -26,7 +27,7 @@ export class ApiUrlResolver {
|
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
public async getWorkspacesApiUrl(): Promise<string> {
|
|
29
|
-
const namespace = await this.obtainUserNamespace();
|
|
30
|
+
const namespace: string = await this.obtainUserNamespace();
|
|
30
31
|
return `${ApiUrlResolver.DASHBOARD_API_URL}/${namespace}/devworkspaces`;
|
|
31
32
|
}
|
|
32
33
|
|
|
@@ -34,7 +35,7 @@ export class ApiUrlResolver {
|
|
|
34
35
|
Logger.debug(`ApiUrlResolver.obtainUserNamespace ${this.userNamespace}`);
|
|
35
36
|
if (this.userNamespace.length === 0) {
|
|
36
37
|
Logger.trace(`ApiUrlResolver.obtainUserNamespace USER_NAMESPACE.length = 0, calling kubernetes API`);
|
|
37
|
-
const kubernetesResponse = await this.processRequestHandler.get(ApiUrlResolver.KUBERNETES_API_URL);
|
|
38
|
+
const kubernetesResponse: AxiosResponse = await this.processRequestHandler.get(ApiUrlResolver.KUBERNETES_API_URL);
|
|
38
39
|
if (kubernetesResponse.status !== 200) {
|
|
39
40
|
throw new Error(`Cannot get user namespace from kubernetes API. Code: ${kubernetesResponse.status} Data: ${kubernetesResponse.data}`);
|
|
40
41
|
}
|
|
@@ -17,7 +17,7 @@ import { error } from 'selenium-webdriver';
|
|
|
17
17
|
import { CheApiRequestHandler } from '../request-handlers/CheApiRequestHandler';
|
|
18
18
|
import { CLASSES } from '../../configs/inversify.types';
|
|
19
19
|
import { Logger } from '../Logger';
|
|
20
|
-
import axios from 'axios';
|
|
20
|
+
import axios, { AxiosResponse } from 'axios';
|
|
21
21
|
import { ITestWorkspaceUtil } from './ITestWorkspaceUtil';
|
|
22
22
|
import { ApiUrlResolver } from './ApiUrlResolver';
|
|
23
23
|
|
|
@@ -32,13 +32,13 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
|
|
|
32
32
|
@inject(CLASSES.ApiUrlResolver) private readonly apiUrlResolver: ApiUrlResolver
|
|
33
33
|
) { }
|
|
34
34
|
|
|
35
|
-
public async waitWorkspaceStatus(workspaceName: string, expectedWorkspaceStatus: WorkspaceStatus) {
|
|
35
|
+
public async waitWorkspaceStatus(workspaceName: string, expectedWorkspaceStatus: WorkspaceStatus): Promise<void> {
|
|
36
36
|
Logger.debug('TestWorkspaceUtil.waitWorkspaceStatus');
|
|
37
37
|
|
|
38
38
|
let workspaceStatus: string = '';
|
|
39
39
|
let expectedStatus: boolean = false;
|
|
40
|
-
for (let i = 0; i < this.attempts; i++) {
|
|
41
|
-
const response = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName));
|
|
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
43
|
if (response.status !== 200) {
|
|
44
44
|
throw new Error(`Can not get status of a workspace. Code: ${response.status} Data: ${response.data}`);
|
|
@@ -55,16 +55,16 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
if (!expectedStatus) {
|
|
58
|
-
let waitTime = this.attempts * this.polling;
|
|
59
|
-
throw new error.TimeoutError(`The workspace was not stopped in ${waitTime} ms.
|
|
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
60
|
}
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
public async stopWorkspaceByName(workspaceName: string) {
|
|
63
|
+
public async stopWorkspaceByName(workspaceName: string): Promise<void> {
|
|
64
64
|
Logger.debug('TestWorkspaceUtil.stopWorkspaceByName');
|
|
65
65
|
|
|
66
66
|
const stopWorkspaceApiUrl: string = await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName);
|
|
67
|
-
let stopWorkspaceResponse;
|
|
67
|
+
let stopWorkspaceResponse: AxiosResponse;
|
|
68
68
|
|
|
69
69
|
try {
|
|
70
70
|
stopWorkspaceResponse = await this.processRequestHandler.patch(stopWorkspaceApiUrl, [{'op': 'replace', 'path': '/spec/started', 'value': false}]);
|
|
@@ -81,11 +81,11 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
// delete a workspace without stopping phase (similar with force deleting)
|
|
84
|
-
public async deleteWorkspaceByName(workspaceName: string) {
|
|
84
|
+
public async deleteWorkspaceByName(workspaceName: string): Promise<void> {
|
|
85
85
|
Logger.debug(`TestWorkspaceUtil.deleteWorkspaceByName ${workspaceName}` );
|
|
86
86
|
|
|
87
87
|
const deleteWorkspaceApiUrl: string = await this.apiUrlResolver.getWorkspaceApiUrl(workspaceName);
|
|
88
|
-
let deleteWorkspaceResponse;
|
|
88
|
+
let deleteWorkspaceResponse: AxiosResponse;
|
|
89
89
|
let deleteWorkspaceStatus: boolean = false;
|
|
90
90
|
try {
|
|
91
91
|
deleteWorkspaceResponse = await this.processRequestHandler.delete(deleteWorkspaceApiUrl);
|
|
@@ -102,7 +102,7 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
|
|
|
102
102
|
throw new Error(`Can not delete workspace. Code: ${deleteWorkspaceResponse.status} Data: ${deleteWorkspaceResponse.data}`);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
for (let i = 0; i < this.attempts; i++) {
|
|
105
|
+
for (let i: number = 0; i < this.attempts; i++) {
|
|
106
106
|
try {
|
|
107
107
|
deleteWorkspaceResponse = await this.processRequestHandler.get(deleteWorkspaceApiUrl);
|
|
108
108
|
} catch (error) {
|
|
@@ -114,13 +114,13 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
if (!deleteWorkspaceStatus) {
|
|
117
|
-
let waitTime = this.attempts * this.polling;
|
|
117
|
+
let waitTime: number = this.attempts * this.polling;
|
|
118
118
|
throw new error.TimeoutError(`The workspace was not stopped in ${waitTime} ms.`);
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
// stop workspace before deleting with checking stopping phase
|
|
123
|
-
public async stopAndDeleteWorkspaceByName(workspaceName: string) {
|
|
123
|
+
public async stopAndDeleteWorkspaceByName(workspaceName: string): Promise<void> {
|
|
124
124
|
Logger.debug('TestWorkspaceUtil.stopAndDeleteWorkspaceByName');
|
|
125
125
|
|
|
126
126
|
await this.stopWorkspaceByName(workspaceName);
|
|
@@ -128,21 +128,21 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
// stop all run workspaces in the namespace
|
|
131
|
-
public async stopAllRunningWorkspaces(namespace: string) {
|
|
131
|
+
public async stopAllRunningWorkspaces(namespace: string): Promise<void> {
|
|
132
132
|
Logger.debug('TestWorkspaceUtil.stopAllRunProjects');
|
|
133
|
-
let response = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
|
|
134
|
-
for (let i = 0; i < response.data.items.length; i++) {
|
|
133
|
+
let response: AxiosResponse = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
|
|
134
|
+
for (let i: number = 0; i < response.data.items.length; i++) {
|
|
135
135
|
Logger.info('The project is being stopped: ' + response.data.items[i].metadata.name);
|
|
136
136
|
await this.stopWorkspaceByName(response.data.items[i].metadata.name);
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
// stop all run workspaces, check statuses and remove the workspaces
|
|
141
|
-
public async stopAndDeleteAllRunningWorkspaces(namespace: string) {
|
|
141
|
+
public async stopAndDeleteAllRunningWorkspaces(namespace: string): Promise<void> {
|
|
142
142
|
Logger.debug('TestWorkspaceUtil.stopAndDeleteAllRunProjects');
|
|
143
|
-
let response = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
|
|
143
|
+
let response: AxiosResponse = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
|
|
144
144
|
await this.stopAllRunningWorkspaces(namespace);
|
|
145
|
-
for (let i = 0; i < response.data.items.length; i++) {
|
|
145
|
+
for (let i: number = 0; i < response.data.items.length; i++) {
|
|
146
146
|
Logger.info('The project is being deleted: ' + response.data.items[i].metadata.name);
|
|
147
147
|
await this.deleteWorkspaceByName(response.data.items[i].metadata.name);
|
|
148
148
|
}
|
|
@@ -150,11 +150,11 @@ export class TestWorkspaceUtil implements ITestWorkspaceUtil {
|
|
|
150
150
|
|
|
151
151
|
// stop all run workspaces without stopping and waiting for of 'Stopped' phase
|
|
152
152
|
// similar with 'force' deleting
|
|
153
|
-
public async deleteAllWorkspaces(namespace: string) {
|
|
153
|
+
public async deleteAllWorkspaces(namespace: string): Promise<void> {
|
|
154
154
|
Logger.debug('TestWorkspaceUtil.deleteAllRunProjects');
|
|
155
|
-
let response = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
|
|
155
|
+
let response: AxiosResponse = await this.processRequestHandler.get(await this.apiUrlResolver.getWorkspacesApiUrl());
|
|
156
156
|
|
|
157
|
-
for (let i = 0; i < response.data.items.length; i++) {
|
|
157
|
+
for (let i: number = 0; i < response.data.items.length; i++) {
|
|
158
158
|
Logger.info('The project is being deleted .......: ' + response.data.items[i].metadata.name);
|
|
159
159
|
await this.deleteWorkspaceByName(response.data.items[i].metadata.name);
|
|
160
160
|
}
|