@syn7xx/testops-mcp-server 0.1.1 → 0.1.4
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/CHANGELOG.md +45 -0
- package/README.md +147 -76
- package/dist/args.d.ts +2 -2
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +57 -16
- package/dist/args.js.map +1 -1
- package/dist/domain/project/service.d.ts.map +1 -1
- package/dist/domain/project/service.js +1 -1
- package/dist/domain/project/service.js.map +1 -1
- package/dist/domain/project/types.d.ts.map +1 -1
- package/dist/domain/test-case/service.d.ts.map +1 -1
- package/dist/domain/test-case/service.js +3 -1
- package/dist/domain/test-case/service.js.map +1 -1
- package/dist/domain/test-case/types.d.ts.map +1 -1
- package/dist/domain/test-plan/service.d.ts.map +1 -1
- package/dist/domain/test-plan/service.js +1 -1
- package/dist/domain/test-plan/service.js.map +1 -1
- package/dist/domain/test-plan/types.d.ts.map +1 -1
- package/dist/presentation/project/tools.d.ts +2 -1
- package/dist/presentation/project/tools.d.ts.map +1 -1
- package/dist/presentation/project/tools.js +30 -8
- package/dist/presentation/project/tools.js.map +1 -1
- package/dist/presentation/test-case/tools.d.ts +2 -1
- package/dist/presentation/test-case/tools.d.ts.map +1 -1
- package/dist/presentation/test-case/tools.js +77 -21
- package/dist/presentation/test-case/tools.js.map +1 -1
- package/dist/presentation/test-plan/tools.d.ts +2 -1
- package/dist/presentation/test-plan/tools.d.ts.map +1 -1
- package/dist/presentation/test-plan/tools.js +17 -5
- package/dist/presentation/test-plan/tools.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +8 -5
- package/dist/server.js.map +1 -1
- package/dist/shared/api.d.ts +2 -4
- package/dist/shared/api.d.ts.map +1 -1
- package/dist/shared/api.js +34 -31
- package/dist/shared/api.js.map +1 -1
- package/dist/shared/pagination.d.ts.map +1 -1
- package/dist/shared/pagination.js.map +1 -1
- package/dist/shared/result.d.ts.map +1 -1
- package/dist/shared/result.js +7 -4
- package/dist/shared/result.js.map +1 -1
- package/package.json +19 -4
- package/dist/services/config.d.ts +0 -43
- package/dist/services/config.d.ts.map +0 -1
- package/dist/services/config.js +0 -99
- package/dist/services/config.js.map +0 -1
- package/dist/services/index.d.ts +0 -8
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/index.js +0 -8
- package/dist/services/index.js.map +0 -1
- package/dist/services/project.d.ts +0 -17
- package/dist/services/project.d.ts.map +0 -1
- package/dist/services/project.js +0 -27
- package/dist/services/project.js.map +0 -1
- package/dist/services/test-case.d.ts +0 -59
- package/dist/services/test-case.d.ts.map +0 -1
- package/dist/services/test-case.js +0 -138
- package/dist/services/test-case.js.map +0 -1
- package/dist/services/test-plan.d.ts +0 -20
- package/dist/services/test-plan.d.ts.map +0 -1
- package/dist/services/test-plan.js +0 -18
- package/dist/services/test-plan.js.map +0 -1
- package/dist/services/testops-client.d.ts +0 -96
- package/dist/services/testops-client.d.ts.map +0 -1
- package/dist/services/testops-client.js +0 -392
- package/dist/services/testops-client.js.map +0 -1
- package/dist/services/testops-types.d.ts +0 -62
- package/dist/services/testops-types.d.ts.map +0 -1
- package/dist/services/testops-types.js +0 -3
- package/dist/services/testops-types.js.map +0 -1
- package/dist/tools/index.d.ts +0 -8
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -8
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/project.d.ts +0 -5
- package/dist/tools/project.d.ts.map +0 -1
- package/dist/tools/project.js +0 -62
- package/dist/tools/project.js.map +0 -1
- package/dist/tools/test-case.d.ts +0 -5
- package/dist/tools/test-case.d.ts.map +0 -1
- package/dist/tools/test-case.js +0 -185
- package/dist/tools/test-case.js.map +0 -1
- package/dist/tools/test-plan.d.ts +0 -5
- package/dist/tools/test-plan.d.ts.map +0 -1
- package/dist/tools/test-plan.js +0 -57
- package/dist/tools/test-plan.js.map +0 -1
- package/dist/tools/testops.d.ts +0 -6
- package/dist/tools/testops.d.ts.map +0 -1
- package/dist/tools/testops.js +0 -302
- package/dist/tools/testops.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/shared/result.ts"],"names":[],"mappings":"AASA,kCAAkC;AAClC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,KAAQ,EAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAEhF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAY,KAAQ,EAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/shared/result.ts"],"names":[],"mappings":"AASA,kCAAkC;AAClC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,KAAQ,EAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAEhF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAY,KAAQ,EAAoB,EAAE,CAAC,CAAC;IACjE,EAAE,EAAE,KAAK;IACT,KAAK;CACN,CAAC,CAAC;AAEH,kDAAkD;AAClD,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,MAAoB,EACc,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;AAE1D,8CAA8C;AAC9C,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,MAAoB,EACe,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC;AAE5D,6CAA6C;AAC7C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAO,MAAoB,EAAK,EAAE;IACtD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,MAAM,MAAM,CAAC,KAAK,CAAC;AACrB,CAAC,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAO,MAAoB,EAAE,YAAe,EAAK,EAAE,CAC1E,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;AAElD,mCAAmC;AACnC,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,MAAoB,EACpB,EAAmB,EACL,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,iCAAiC;AACjC,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,MAAoB,EACpB,EAAmB,EACL,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,MAAoB,EACpB,EAA8B,EAChB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,gEAAgE;AAChE,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,EAAoB,EACO,EAAE;IAC7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,EAAE,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,22 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@syn7xx/testops-mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "TestOps MCP Server - Model Context Protocol server for test operations",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"files": [
|
|
9
|
-
"dist"
|
|
9
|
+
"dist",
|
|
10
|
+
"CHANGELOG.md"
|
|
10
11
|
],
|
|
11
12
|
"bin": {
|
|
12
13
|
"testops-mcp-server": "dist/index.js"
|
|
13
14
|
},
|
|
14
15
|
"scripts": {
|
|
16
|
+
"prepublishOnly": "npm run build",
|
|
15
17
|
"build": "tsc --project tsconfig.json",
|
|
16
18
|
"start": "node dist/index.js",
|
|
17
19
|
"dev": "tsc --watch",
|
|
18
20
|
"lint": "eslint 'src/**/*.ts'",
|
|
19
|
-
"lint:fix": "eslint 'src/**/*.ts' --fix"
|
|
21
|
+
"lint:fix": "eslint 'src/**/*.ts' --fix",
|
|
22
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
23
|
+
"format:check": "prettier --check \"src/**/*.ts\"",
|
|
24
|
+
"release": "release-it",
|
|
25
|
+
"release:dry": "release-it --dry-run",
|
|
26
|
+
"release:patch": "release-it patch",
|
|
27
|
+
"release:minor": "release-it minor",
|
|
28
|
+
"release:major": "release-it major"
|
|
20
29
|
},
|
|
21
30
|
"keywords": [
|
|
22
31
|
"mcp",
|
|
@@ -30,7 +39,11 @@
|
|
|
30
39
|
"type": "git",
|
|
31
40
|
"url": "https://github.com/syn7xx/testops-mcp-server.git"
|
|
32
41
|
},
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
},
|
|
33
45
|
"dependencies": {
|
|
46
|
+
"@cfworker/json-schema": "^4.1.1",
|
|
34
47
|
"@modelcontextprotocol/server": "2.0.0-alpha.2",
|
|
35
48
|
"zod": "^4.0.0"
|
|
36
49
|
},
|
|
@@ -40,9 +53,11 @@
|
|
|
40
53
|
"eslint": "^9.0.0",
|
|
41
54
|
"eslint-config-prettier": "^9.1.0",
|
|
42
55
|
"eslint-plugin-prettier": "^5.1.3",
|
|
56
|
+
"globals": "^17.4.0",
|
|
43
57
|
"prettier": "^3.2.0",
|
|
44
58
|
"release-it": "^19.2.4",
|
|
45
|
-
"typescript": "^5.3.3"
|
|
59
|
+
"typescript": "^5.3.3",
|
|
60
|
+
"typescript-eslint": "^8.58.0"
|
|
46
61
|
},
|
|
47
62
|
"engines": {
|
|
48
63
|
"node": ">=20.0.0"
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TestOps Client Configuration
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Sets the TestOps base URL and API token (from MCP process args).
|
|
6
|
-
*/
|
|
7
|
-
export declare function configureTestOpsClient(options: {
|
|
8
|
-
baseUrl: string;
|
|
9
|
-
token: string;
|
|
10
|
-
}): void;
|
|
11
|
-
export declare function requireClientConfig(): {
|
|
12
|
-
baseUrl: string;
|
|
13
|
-
token: string;
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* Clears cached JWT (useful for re-authentication).
|
|
17
|
-
*/
|
|
18
|
-
export declare function clearJwtToken(): void;
|
|
19
|
-
/**
|
|
20
|
-
* Exchanges the API token for a JWT used on subsequent requests.
|
|
21
|
-
*/
|
|
22
|
-
export declare function getJwtToken(): Promise<string>;
|
|
23
|
-
/**
|
|
24
|
-
* Simplified HTTP client wrapper around fetch.
|
|
25
|
-
*/
|
|
26
|
-
export declare function testopsFetch<T = any>(endpoint: string, options?: {
|
|
27
|
-
method?: 'GET' | 'POST' | 'PATCH' | 'DELETE';
|
|
28
|
-
queryParams?: Record<string, string | number | boolean | undefined>;
|
|
29
|
-
body?: any;
|
|
30
|
-
}): Promise<T>;
|
|
31
|
-
/**
|
|
32
|
-
* GET request helper.
|
|
33
|
-
*/
|
|
34
|
-
export declare function testopsGet<T = any>(endpoint: string, queryParams?: Record<string, string | number | boolean | undefined>): Promise<T>;
|
|
35
|
-
/**
|
|
36
|
-
* POST request helper.
|
|
37
|
-
*/
|
|
38
|
-
export declare function testopsPost<T = any>(endpoint: string, body?: any, queryParams?: Record<string, string | number | boolean | undefined>): Promise<T>;
|
|
39
|
-
/**
|
|
40
|
-
* PATCH request helper.
|
|
41
|
-
*/
|
|
42
|
-
export declare function testopsPatch<T = any>(endpoint: string, body?: any, queryParams?: Record<string, string | number | boolean | undefined>): Promise<T>;
|
|
43
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGxF;AAED,wBAAgB,mBAAmB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAOxE;AAID;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CA2BnD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,GAAG,GAAG,EACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACL,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC,EAAE,GAAG,CAAC;CACT,GACP,OAAO,CAAC,CAAC,CAAC,CA4BZ;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,CAAC,GAAG,GAAG,EACpC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GACpE,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,GAAG,GAAG,EACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,GAAG,EACV,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GACpE,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,GAAG,GAAG,EACtC,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,GAAG,EACV,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GACpE,OAAO,CAAC,CAAC,CAAC,CAEZ"}
|
package/dist/services/config.js
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TestOps Client Configuration
|
|
3
|
-
*/
|
|
4
|
-
let baseUrl = '';
|
|
5
|
-
let apiToken = '';
|
|
6
|
-
/**
|
|
7
|
-
* Sets the TestOps base URL and API token (from MCP process args).
|
|
8
|
-
*/
|
|
9
|
-
export function configureTestOpsClient(options) {
|
|
10
|
-
baseUrl = options.baseUrl.replace(/\/+$/, '');
|
|
11
|
-
apiToken = options.token;
|
|
12
|
-
}
|
|
13
|
-
export function requireClientConfig() {
|
|
14
|
-
if (!baseUrl || !apiToken) {
|
|
15
|
-
throw new Error('TestOps client is not configured: pass --url and --token when starting the server');
|
|
16
|
-
}
|
|
17
|
-
return { baseUrl, token: apiToken };
|
|
18
|
-
}
|
|
19
|
-
let jwtToken = null;
|
|
20
|
-
/**
|
|
21
|
-
* Clears cached JWT (useful for re-authentication).
|
|
22
|
-
*/
|
|
23
|
-
export function clearJwtToken() {
|
|
24
|
-
jwtToken = null;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Exchanges the API token for a JWT used on subsequent requests.
|
|
28
|
-
*/
|
|
29
|
-
export async function getJwtToken() {
|
|
30
|
-
if (jwtToken) {
|
|
31
|
-
return jwtToken;
|
|
32
|
-
}
|
|
33
|
-
const { baseUrl: root, token: userToken } = requireClientConfig();
|
|
34
|
-
const response = await fetch(`${root}/api/uaa/oauth/token`, {
|
|
35
|
-
method: 'POST',
|
|
36
|
-
headers: {
|
|
37
|
-
Accept: 'application/json',
|
|
38
|
-
'Content-Type': 'application/x-www-form-urlencoded',
|
|
39
|
-
},
|
|
40
|
-
body: new URLSearchParams({
|
|
41
|
-
grant_type: 'apitoken',
|
|
42
|
-
scope: 'openid',
|
|
43
|
-
token: userToken,
|
|
44
|
-
}),
|
|
45
|
-
});
|
|
46
|
-
if (!response.ok) {
|
|
47
|
-
throw new Error(`Failed to obtain JWT: ${response.status} ${response.statusText}`);
|
|
48
|
-
}
|
|
49
|
-
const data = await response.json();
|
|
50
|
-
jwtToken = data.access_token;
|
|
51
|
-
return jwtToken;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Simplified HTTP client wrapper around fetch.
|
|
55
|
-
*/
|
|
56
|
-
export async function testopsFetch(endpoint, options = {}) {
|
|
57
|
-
const { baseUrl: root } = requireClientConfig();
|
|
58
|
-
const token = await getJwtToken();
|
|
59
|
-
const url = new URL(`${root}${endpoint}`);
|
|
60
|
-
if (options.queryParams) {
|
|
61
|
-
Object.entries(options.queryParams).forEach(([key, value]) => {
|
|
62
|
-
if (value !== undefined) {
|
|
63
|
-
url.searchParams.set(key, String(value));
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
const response = await fetch(url.toString(), {
|
|
68
|
-
method: options.method ?? 'GET',
|
|
69
|
-
headers: {
|
|
70
|
-
Accept: 'application/json',
|
|
71
|
-
'Content-Type': 'application/json',
|
|
72
|
-
Authorization: `Bearer ${token}`,
|
|
73
|
-
},
|
|
74
|
-
body: options.body ? JSON.stringify(options.body) : undefined,
|
|
75
|
-
});
|
|
76
|
-
if (!response.ok) {
|
|
77
|
-
throw new Error(`${options.method ?? 'GET'} ${endpoint} failed: ${response.status} ${response.statusText}`);
|
|
78
|
-
}
|
|
79
|
-
return response.json();
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* GET request helper.
|
|
83
|
-
*/
|
|
84
|
-
export async function testopsGet(endpoint, queryParams) {
|
|
85
|
-
return testopsFetch(endpoint, { method: 'GET', queryParams });
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* POST request helper.
|
|
89
|
-
*/
|
|
90
|
-
export async function testopsPost(endpoint, body, queryParams) {
|
|
91
|
-
return testopsFetch(endpoint, { method: 'POST', body, queryParams });
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* PATCH request helper.
|
|
95
|
-
*/
|
|
96
|
-
export async function testopsPatch(endpoint, body, queryParams) {
|
|
97
|
-
return testopsFetch(endpoint, { method: 'PATCH', body, queryParams });
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"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"}
|
package/dist/services/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TestOps Services
|
|
3
|
-
*/
|
|
4
|
-
export { configureTestOpsClient, getJwtToken, clearJwtToken, testopsFetch, testopsGet, testopsPost, testopsPatch } from './config.js';
|
|
5
|
-
export * from './project.js';
|
|
6
|
-
export * from './test-plan.js';
|
|
7
|
-
export * from './test-case.js';
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtI,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
|
package/dist/services/index.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TestOps Services
|
|
3
|
-
*/
|
|
4
|
-
export { configureTestOpsClient, getJwtToken, clearJwtToken, testopsFetch, testopsGet, testopsPost, testopsPatch } from './config.js';
|
|
5
|
-
export * from './project.js';
|
|
6
|
-
export * from './test-plan.js';
|
|
7
|
-
export * from './test-case.js';
|
|
8
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtI,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TestOps Project Service
|
|
3
|
-
*/
|
|
4
|
-
import { TestOpsProject } from './testops-types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Lists projects visible to the authenticated user.
|
|
7
|
-
*/
|
|
8
|
-
export declare function getTestOpsProjects(options?: {
|
|
9
|
-
page?: number;
|
|
10
|
-
size?: number;
|
|
11
|
-
sort?: string;
|
|
12
|
-
}): Promise<TestOpsProject[]>;
|
|
13
|
-
/**
|
|
14
|
-
* Finds a project by name using the suggest endpoint.
|
|
15
|
-
*/
|
|
16
|
-
export declare function getTestOpsProjectByName(projectName: string): Promise<TestOpsProject | null>;
|
|
17
|
-
//# sourceMappingURL=project.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/services/project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAuB,MAAM,oBAAoB,CAAC;AAOzE;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAM5B;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAuBjG"}
|
package/dist/services/project.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TestOps Project Service
|
|
3
|
-
*/
|
|
4
|
-
import { testopsGet } from './config.js';
|
|
5
|
-
/**
|
|
6
|
-
* Lists projects visible to the authenticated user.
|
|
7
|
-
*/
|
|
8
|
-
export async function getTestOpsProjects(options) {
|
|
9
|
-
const data = await testopsGet('/api/project', { page: options?.page ?? 0, size: options?.size ?? 50, sort: options?.sort ?? 'name,ASC' });
|
|
10
|
-
return data.content || [];
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Finds a project by name using the suggest endpoint.
|
|
14
|
-
*/
|
|
15
|
-
export async function getTestOpsProjectByName(projectName) {
|
|
16
|
-
const data = await testopsGet('/api/project/suggest', { query: projectName, size: 10 });
|
|
17
|
-
if (!data.content?.length) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
const exactMatch = data.content.find((p) => p.name.toLowerCase() === projectName.toLowerCase());
|
|
21
|
-
if (exactMatch) {
|
|
22
|
-
return { id: exactMatch.id, name: exactMatch.name };
|
|
23
|
-
}
|
|
24
|
-
const partialMatch = data.content.find((p) => p.name.toLowerCase().includes(projectName.toLowerCase()));
|
|
25
|
-
return partialMatch ? { id: partialMatch.id, name: partialMatch.name } : null;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=project.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/services/project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAIxC;IACG,MAAM,IAAI,GAAG,MAAM,UAAU,CACzB,cAAc,EACd,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAC7F,CAAC;IACF,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,WAAmB;IAC7D,MAAM,IAAI,GAAG,MAAM,UAAU,CACzB,sBAAsB,EACtB,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CACnC,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAChC,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAC/E,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAoB,EAAE,EAAE,CAC5D,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAC3D,CAAC;IAEF,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,CAAC"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TestOps Test Case Service
|
|
3
|
-
*/
|
|
4
|
-
import { TestOpsNormalizedScenario, TestOpsCustomFieldWithValues, TestOpsTestCase } from './testops-types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Returns test case metadata plus flattened steps and custom fields when available.
|
|
7
|
-
*/
|
|
8
|
-
export declare function getTestOpsTestCaseDetail(testCaseId: number): Promise<{
|
|
9
|
-
id: any;
|
|
10
|
-
name: any;
|
|
11
|
-
steps: string[];
|
|
12
|
-
customFields: Record<string, string>;
|
|
13
|
-
tags: any;
|
|
14
|
-
owner: any;
|
|
15
|
-
}>;
|
|
16
|
-
/**
|
|
17
|
-
* Fetches scenario (steps + expected results) for a test case.
|
|
18
|
-
*/
|
|
19
|
-
export declare function getTestOpsTestCaseScenario(testCaseId: number): Promise<TestOpsNormalizedScenario>;
|
|
20
|
-
/**
|
|
21
|
-
* Updates a step (including expected result) for a test case.
|
|
22
|
-
*/
|
|
23
|
-
export declare function patchTestOpsScenarioStep(testCaseId: number, stepId: number, stepData: {
|
|
24
|
-
body?: string;
|
|
25
|
-
expectedResult?: string;
|
|
26
|
-
}): Promise<TestOpsNormalizedScenario>;
|
|
27
|
-
/**
|
|
28
|
-
* Sets the entire scenario (all steps) for a test case.
|
|
29
|
-
*/
|
|
30
|
-
export declare function setTestOpsTestCaseScenario(testCaseId: number, steps: Array<{
|
|
31
|
-
action: string;
|
|
32
|
-
expectedResult?: string;
|
|
33
|
-
}>): Promise<TestOpsNormalizedScenario>;
|
|
34
|
-
/**
|
|
35
|
-
* Fetches custom field values for a test case.
|
|
36
|
-
*/
|
|
37
|
-
export declare function getTestOpsTestCaseCustomFields(testCaseId: number): Promise<TestOpsCustomFieldWithValues[]>;
|
|
38
|
-
/**
|
|
39
|
-
* Updates custom field values for a test case.
|
|
40
|
-
*/
|
|
41
|
-
export declare function updateTestOpsTestCaseCustomFields(testCaseId: number, customFields: Array<{
|
|
42
|
-
customFieldId: number;
|
|
43
|
-
valueIds: number[];
|
|
44
|
-
}>): Promise<void>;
|
|
45
|
-
/**
|
|
46
|
-
* Searches test cases using AQL (Advanced Query Language).
|
|
47
|
-
*/
|
|
48
|
-
export declare function searchTestCasesByAQL(projectId: number, rql: string, options?: {
|
|
49
|
-
deleted?: boolean;
|
|
50
|
-
page?: number;
|
|
51
|
-
size?: number;
|
|
52
|
-
sort?: string;
|
|
53
|
-
}): Promise<{
|
|
54
|
-
testCases: TestOpsTestCase[];
|
|
55
|
-
total: number;
|
|
56
|
-
page: number;
|
|
57
|
-
size: number;
|
|
58
|
-
}>;
|
|
59
|
-
//# sourceMappingURL=test-case.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-case.d.ts","sourceRoot":"","sources":["../../src/services/test-case.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAGH,yBAAyB,EACzB,4BAA4B,EAC5B,eAAe,EAElB,MAAM,oBAAoB,CAAC;AAiD5B;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,UAAU,EAAE,MAAM;;;;;;;GAuChE;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC5C,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,yBAAyB,CAAC,CAEpC;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE;IACN,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B,GACF,OAAO,CAAC,yBAAyB,CAAC,CAUpC;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC5C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,KAAK,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC,GACH,OAAO,CAAC,yBAAyB,CAAC,CAYpC;AAED;;GAEG;AACH,wBAAsB,8BAA8B,CAChD,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAEzC;AAED;;GAEG;AACH,wBAAsB,iCAAiC,CACnD,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,KAAK,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC,GACH,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IACN,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,GACF,OAAO,CAAC;IAAE,SAAS,EAAE,eAAe,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBtF"}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TestOps Test Case Service
|
|
3
|
-
*/
|
|
4
|
-
import { testopsGet, testopsPost, testopsPatch } from './config.js';
|
|
5
|
-
/**
|
|
6
|
-
* Loads scenario step bodies for a test case.
|
|
7
|
-
*/
|
|
8
|
-
async function getTestOpsTestCaseSteps(testCaseId) {
|
|
9
|
-
const data = await testopsGet(`/api/testcase/${testCaseId}/step`);
|
|
10
|
-
if (data?.scenarioSteps && data.root?.children) {
|
|
11
|
-
const steps = [];
|
|
12
|
-
for (const stepId of data.root.children) {
|
|
13
|
-
const step = data.scenarioSteps[stepId];
|
|
14
|
-
if (step?.body) {
|
|
15
|
-
steps.push({ body: step.body });
|
|
16
|
-
const { expectedResultId } = step;
|
|
17
|
-
if (expectedResultId && data.scenarioSteps[expectedResultId]) {
|
|
18
|
-
const expectedNode = data.scenarioSteps[expectedResultId];
|
|
19
|
-
const expectedChildren = Array.isArray(expectedNode.children)
|
|
20
|
-
? expectedNode.children
|
|
21
|
-
: [];
|
|
22
|
-
for (const childId of expectedChildren) {
|
|
23
|
-
const child = data.scenarioSteps[childId];
|
|
24
|
-
if (child?.body) {
|
|
25
|
-
steps.push({ body: child.body });
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return steps;
|
|
32
|
-
}
|
|
33
|
-
return [];
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Loads custom field values for a test case.
|
|
37
|
-
*/
|
|
38
|
-
async function getTestOpsCustomFields(testCaseId) {
|
|
39
|
-
const data = await testopsGet(`/api/testcase/${testCaseId}/cfv`);
|
|
40
|
-
return Array.isArray(data) ? data : [];
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Returns test case metadata plus flattened steps and custom fields when available.
|
|
44
|
-
*/
|
|
45
|
-
export async function getTestOpsTestCaseDetail(testCaseId) {
|
|
46
|
-
const detail = await testopsGet(`/api/testcase/${testCaseId}`);
|
|
47
|
-
try {
|
|
48
|
-
const [steps, customFields] = await Promise.all([
|
|
49
|
-
getTestOpsTestCaseSteps(testCaseId),
|
|
50
|
-
getTestOpsCustomFields(testCaseId),
|
|
51
|
-
]);
|
|
52
|
-
const stepsArray = steps.map(({ body }) => body);
|
|
53
|
-
const customFieldsObject = customFields.reduce((acc, field) => {
|
|
54
|
-
acc[field.customField.name] = field.name;
|
|
55
|
-
return acc;
|
|
56
|
-
}, {});
|
|
57
|
-
return {
|
|
58
|
-
id: detail.id,
|
|
59
|
-
name: detail.name?.trim() || '',
|
|
60
|
-
steps: stepsArray,
|
|
61
|
-
customFields: customFieldsObject,
|
|
62
|
-
tags: (detail.tags || []).map((t) => t.name),
|
|
63
|
-
owner: detail.createdBy || '',
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
console.warn(`Could not load extra fields for test case ${testCaseId}: ${error}`);
|
|
68
|
-
}
|
|
69
|
-
return {
|
|
70
|
-
id: detail.id,
|
|
71
|
-
name: detail.name?.trim() || '',
|
|
72
|
-
steps: [],
|
|
73
|
-
customFields: {},
|
|
74
|
-
tags: (detail.tags || []).map((t) => t.name),
|
|
75
|
-
owner: detail.createdBy || '',
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Fetches scenario (steps + expected results) for a test case.
|
|
80
|
-
*/
|
|
81
|
-
export async function getTestOpsTestCaseScenario(testCaseId) {
|
|
82
|
-
return testopsGet(`/api/testcase/${testCaseId}/step`);
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Updates a step (including expected result) for a test case.
|
|
86
|
-
*/
|
|
87
|
-
export async function patchTestOpsScenarioStep(testCaseId, stepId, stepData) {
|
|
88
|
-
const patchData = {};
|
|
89
|
-
if (stepData.body !== undefined)
|
|
90
|
-
patchData.body = stepData.body;
|
|
91
|
-
if (stepData.expectedResult !== undefined)
|
|
92
|
-
patchData.expectedResult = stepData.expectedResult;
|
|
93
|
-
return testopsPatch(`/api/testcase/step/${stepId}`, patchData, { withExpectedResult: true });
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Sets the entire scenario (all steps) for a test case.
|
|
97
|
-
*/
|
|
98
|
-
export async function setTestOpsTestCaseScenario(testCaseId, steps) {
|
|
99
|
-
const scenarioData = {
|
|
100
|
-
steps: steps.map((step) => ({
|
|
101
|
-
action: step.action,
|
|
102
|
-
expectedResult: step.expectedResult || '',
|
|
103
|
-
})),
|
|
104
|
-
};
|
|
105
|
-
return testopsPost(`/api/testcase/${testCaseId}/scenario`, scenarioData);
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Fetches custom field values for a test case.
|
|
109
|
-
*/
|
|
110
|
-
export async function getTestOpsTestCaseCustomFields(testCaseId) {
|
|
111
|
-
return testopsGet(`/api/testcase/${testCaseId}/cfv`);
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Updates custom field values for a test case.
|
|
115
|
-
*/
|
|
116
|
-
export async function updateTestOpsTestCaseCustomFields(testCaseId, customFields) {
|
|
117
|
-
await testopsPatch(`/api/testcase/${testCaseId}/cfv`, customFields);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Searches test cases using AQL (Advanced Query Language).
|
|
121
|
-
*/
|
|
122
|
-
export async function searchTestCasesByAQL(projectId, rql, options) {
|
|
123
|
-
const data = await testopsGet('/api/testcase/__search', {
|
|
124
|
-
projectId,
|
|
125
|
-
rql,
|
|
126
|
-
deleted: options?.deleted,
|
|
127
|
-
page: options?.page,
|
|
128
|
-
size: options?.size,
|
|
129
|
-
sort: options?.sort,
|
|
130
|
-
});
|
|
131
|
-
return {
|
|
132
|
-
testCases: data.content || [],
|
|
133
|
-
total: data.totalElements || 0,
|
|
134
|
-
page: data.number || 0,
|
|
135
|
-
size: data.size || 0,
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=test-case.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-case.js","sourceRoot":"","sources":["../../src/services/test-case.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TestOps Test Plan Service
|
|
3
|
-
*/
|
|
4
|
-
import { TestOpsTestPlan } from './testops-types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Fetches a test plan by ID.
|
|
7
|
-
*/
|
|
8
|
-
export declare function getTestOpsTestPlan(testPlanId: number): Promise<TestOpsTestPlan>;
|
|
9
|
-
/**
|
|
10
|
-
* Fetches test cases from a test plan.
|
|
11
|
-
*/
|
|
12
|
-
export declare function getTestOpsTestPlanTestCases(testPlanId: number, options?: {
|
|
13
|
-
page?: number;
|
|
14
|
-
size?: number;
|
|
15
|
-
sort?: string;
|
|
16
|
-
}): Promise<{
|
|
17
|
-
id: number;
|
|
18
|
-
name: string;
|
|
19
|
-
}[]>;
|
|
20
|
-
//# sourceMappingURL=test-plan.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-plan.d.ts","sourceRoot":"","sources":["../../src/services/test-plan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAuB,MAAM,oBAAoB,CAAC;AAE1E;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAErF;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC7C,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IACN,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,GACF,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAMzC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TestOps Test Plan Service
|
|
3
|
-
*/
|
|
4
|
-
import { testopsGet } from './config.js';
|
|
5
|
-
/**
|
|
6
|
-
* Fetches a test plan by ID.
|
|
7
|
-
*/
|
|
8
|
-
export async function getTestOpsTestPlan(testPlanId) {
|
|
9
|
-
return testopsGet(`/api/testplan/${testPlanId}`);
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Fetches test cases from a test plan.
|
|
13
|
-
*/
|
|
14
|
-
export async function getTestOpsTestPlanTestCases(testPlanId, options) {
|
|
15
|
-
const data = await testopsGet(`/api/testplan/${testPlanId}/tree/leaf`, { page: options?.page ?? 0, size: options?.size ?? 50, sort: options?.sort ?? 'name,ASC' });
|
|
16
|
-
return data.content || [];
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=test-plan.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-plan.js","sourceRoot":"","sources":["../../src/services/test-plan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IACvD,OAAO,UAAU,CAAkB,iBAAiB,UAAU,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC7C,UAAkB,EAClB,OAIC;IAED,MAAM,IAAI,GAAG,MAAM,UAAU,CACzB,iBAAiB,UAAU,YAAY,EACvC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAC7F,CAAC;IACF,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC9B,CAAC"}
|