testit-js-commons 3.3.0 → 3.4.0
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/lib/client/client.d.ts +2 -1
- package/lib/client/client.js +1 -0
- package/lib/client/client.type.d.ts +2 -1
- package/lib/services/index.d.ts +1 -0
- package/lib/services/index.js +1 -0
- package/lib/services/testresults/index.d.ts +2 -0
- package/lib/services/testresults/index.js +18 -0
- package/lib/services/testresults/testresults.converter.d.ts +9 -0
- package/lib/services/testresults/testresults.converter.js +18 -0
- package/lib/services/testresults/testresults.handler.d.ts +1 -0
- package/lib/services/testresults/testresults.handler.js +12 -0
- package/lib/services/testresults/testresults.service.d.ts +13 -0
- package/lib/services/testresults/testresults.service.js +58 -0
- package/lib/services/testresults/testresults.type.d.ts +3 -0
- package/lib/services/testresults/testresults.type.js +2 -0
- package/lib/services/testruns/testruns.converter.d.ts +2 -4
- package/lib/services/testruns/testruns.converter.js +2 -23
- package/lib/services/testruns/testruns.service.d.ts +1 -2
- package/lib/services/testruns/testruns.service.js +0 -7
- package/lib/services/testruns/testruns.type.d.ts +1 -2
- package/lib/strategy/strategy.type.d.ts +2 -2
- package/lib/strategy/zero.strategy.d.ts +1 -2
- package/lib/strategy/zero.strategy.js +1 -1
- package/package.json +2 -2
package/lib/client/client.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { AdapterConfig } from "../common";
|
|
2
|
-
import { type IAttachmentsService, type IAutotestService, type ITestRunsService } from "../services";
|
|
2
|
+
import { type IAttachmentsService, type IAutotestService, type ITestResultsService, type ITestRunsService } from "../services";
|
|
3
3
|
import { IClient } from "./client.type";
|
|
4
4
|
export declare class Client implements IClient {
|
|
5
5
|
private readonly config;
|
|
6
6
|
attachments: IAttachmentsService;
|
|
7
7
|
autoTests: IAutotestService;
|
|
8
|
+
testResults: ITestResultsService;
|
|
8
9
|
testRuns: ITestRunsService;
|
|
9
10
|
constructor(config: AdapterConfig);
|
|
10
11
|
getConfig(): Readonly<AdapterConfig>;
|
package/lib/client/client.js
CHANGED
|
@@ -7,6 +7,7 @@ class Client {
|
|
|
7
7
|
this.config = config;
|
|
8
8
|
this.attachments = new services_1.AttachmentsService(config);
|
|
9
9
|
this.autoTests = new services_1.AutotestsService(config);
|
|
10
|
+
this.testResults = new services_1.TestResultsService(config);
|
|
10
11
|
this.testRuns = new services_1.TestRunsService(config);
|
|
11
12
|
}
|
|
12
13
|
getConfig() {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { IAttachmentsService, IAutotestService, ITestRunsService } from "../services";
|
|
1
|
+
import type { IAttachmentsService, IAutotestService, ITestResultsService, ITestRunsService } from "../services";
|
|
2
2
|
import type { AdapterConfig } from "../common";
|
|
3
3
|
export interface IClient {
|
|
4
4
|
attachments: IAttachmentsService;
|
|
5
5
|
autoTests: IAutotestService;
|
|
6
|
+
testResults: ITestResultsService;
|
|
6
7
|
testRuns: ITestRunsService;
|
|
7
8
|
getConfig(): AdapterConfig;
|
|
8
9
|
}
|
package/lib/services/index.d.ts
CHANGED
package/lib/services/index.js
CHANGED
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./attachments"), exports);
|
|
18
18
|
__exportStar(require("./autotests"), exports);
|
|
19
|
+
__exportStar(require("./testresults"), exports);
|
|
19
20
|
__exportStar(require("./testruns"), exports);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./testresults.service"), exports);
|
|
18
|
+
__exportStar(require("./testresults.type"), exports);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TestResultsFilterApiModel } from "testit-api-client";
|
|
2
|
+
import { AdapterConfig, BaseConverter } from "../../common";
|
|
3
|
+
export interface ITestResultsConverter {
|
|
4
|
+
getTestResultsFilterApiModel(): TestResultsFilterApiModel;
|
|
5
|
+
}
|
|
6
|
+
export declare class TestResultsConverter extends BaseConverter implements ITestResultsConverter {
|
|
7
|
+
constructor(config: AdapterConfig);
|
|
8
|
+
getTestResultsFilterApiModel(): TestResultsFilterApiModel;
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestResultsConverter = void 0;
|
|
4
|
+
const common_1 = require("../../common");
|
|
5
|
+
class TestResultsConverter extends common_1.BaseConverter {
|
|
6
|
+
constructor(config) {
|
|
7
|
+
super(config);
|
|
8
|
+
}
|
|
9
|
+
getTestResultsFilterApiModel() {
|
|
10
|
+
const model = {
|
|
11
|
+
testRunIds: [this.config.testRunId],
|
|
12
|
+
configurationIds: [this.config.configurationId],
|
|
13
|
+
statusCodes: ["InProgress"],
|
|
14
|
+
};
|
|
15
|
+
return model;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.TestResultsConverter = TestResultsConverter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function handleHttpError(err: unknown, message?: string): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleHttpError = handleHttpError;
|
|
4
|
+
const testit_api_client_1 = require("testit-api-client");
|
|
5
|
+
function handleHttpError(err, message = "") {
|
|
6
|
+
if (err instanceof testit_api_client_1.HttpError) {
|
|
7
|
+
console.error(`HttpError ${err.statusCode}: ${message}. Error body: \n`, err.body);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
console.log(message, err);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TestResultsApi } from "testit-api-client";
|
|
2
|
+
import { AdapterConfig, BaseService } from "../../common";
|
|
3
|
+
import { ITestResultsConverter } from "./testresults.converter";
|
|
4
|
+
import { ITestResultsService } from "./testresults.type";
|
|
5
|
+
export declare class TestResultsService extends BaseService implements ITestResultsService {
|
|
6
|
+
protected readonly config: AdapterConfig;
|
|
7
|
+
protected _client: TestResultsApi;
|
|
8
|
+
protected _converter: ITestResultsConverter;
|
|
9
|
+
protected _testsLimit: number;
|
|
10
|
+
constructor(config: AdapterConfig);
|
|
11
|
+
getExternalIdsForRun(): Promise<string[]>;
|
|
12
|
+
private getTestResults;
|
|
13
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TestResultsService = void 0;
|
|
13
|
+
const testit_api_client_1 = require("testit-api-client");
|
|
14
|
+
const common_1 = require("../../common");
|
|
15
|
+
const testresults_handler_1 = require("./testresults.handler");
|
|
16
|
+
const testresults_converter_1 = require("./testresults.converter");
|
|
17
|
+
const testResultsApiKey = testit_api_client_1.TestResultsApiApiKeys["Bearer or PrivateToken"];
|
|
18
|
+
class TestResultsService extends common_1.BaseService {
|
|
19
|
+
constructor(config) {
|
|
20
|
+
super(config);
|
|
21
|
+
this.config = config;
|
|
22
|
+
this._testsLimit = 100;
|
|
23
|
+
this._client = new testit_api_client_1.TestResultsApi(config.url);
|
|
24
|
+
this._converter = new testresults_converter_1.TestResultsConverter(config);
|
|
25
|
+
this._client.setApiKey(testResultsApiKey, `PrivateToken ${config.privateToken}`);
|
|
26
|
+
if (config.certValidation !== undefined) {
|
|
27
|
+
this._client.setRejectUnauthorized(config.certValidation);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
getExternalIdsForRun() {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
var skip = 0;
|
|
33
|
+
var externalIds = [];
|
|
34
|
+
const model = this._converter.getTestResultsFilterApiModel();
|
|
35
|
+
while (true) {
|
|
36
|
+
const testResults = yield this.getTestResults(skip, model);
|
|
37
|
+
if (testResults.length != 0) {
|
|
38
|
+
externalIds = externalIds.concat(testResults.map((result) => result.autotestExternalId).filter((id) => id !== undefined));
|
|
39
|
+
skip += this._testsLimit;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
return externalIds;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
getTestResults(skip, model) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
return yield this._client
|
|
49
|
+
.apiV2TestResultsSearchPost(skip, this._testsLimit, undefined, undefined, undefined, model)
|
|
50
|
+
.then(({ body }) => body)
|
|
51
|
+
.catch((err) => {
|
|
52
|
+
(0, testresults_handler_1.handleHttpError)(err);
|
|
53
|
+
return [];
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.TestResultsService = TestResultsService;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { AutoTestResultsForTestRunModel,
|
|
1
|
+
import { AutoTestResultsForTestRunModel, TestRunState, TestRunV2ApiResult } from "testit-api-client";
|
|
2
2
|
import { BaseConverter, AdapterConfig } from "../../common";
|
|
3
|
-
import { AutotestResult,
|
|
3
|
+
import { AutotestResult, RunState, TestRunGet } from "./testruns.type";
|
|
4
4
|
export interface ITestRunConverter {
|
|
5
5
|
toOriginState(state: RunState): TestRunState;
|
|
6
6
|
toLocalState(state: TestRunState): RunState;
|
|
7
7
|
toLocalTestRun(testRun: TestRunV2ApiResult): TestRunGet;
|
|
8
8
|
toOriginAutotestResult(autotest: AutotestResult): AutoTestResultsForTestRunModel;
|
|
9
|
-
toLocalAutotestResult(autotest: TestResultV2GetModel): AutotestResultGet;
|
|
10
9
|
}
|
|
11
10
|
export declare class TestRunConverter extends BaseConverter implements ITestRunConverter {
|
|
12
11
|
private autotestConverter;
|
|
@@ -14,6 +13,5 @@ export declare class TestRunConverter extends BaseConverter implements ITestRunC
|
|
|
14
13
|
toLocalState(state: TestRunState): RunState;
|
|
15
14
|
toOriginState(state: RunState): TestRunState;
|
|
16
15
|
toOriginAutotestResult(autotest: AutotestResult): AutoTestResultsForTestRunModel;
|
|
17
|
-
toLocalAutotestResult(test: TestResultV2GetModel): AutotestResultGet;
|
|
18
16
|
toLocalTestRun(testRun: TestRunV2ApiResult): TestRunGet;
|
|
19
17
|
}
|
|
@@ -21,7 +21,7 @@ class TestRunConverter extends common_1.BaseConverter {
|
|
|
21
21
|
configurationId: this.config.configurationId,
|
|
22
22
|
autoTestExternalId: autotest.autoTestExternalId,
|
|
23
23
|
links: (_a = autotest.links) === null || _a === void 0 ? void 0 : _a.map((link) => this.toOriginLink(link)),
|
|
24
|
-
|
|
24
|
+
statusCode: autotest.outcome,
|
|
25
25
|
stepResults: (_b = autotest.stepResults) === null || _b === void 0 ? void 0 : _b.map((step) => this.toOriginStep(step)),
|
|
26
26
|
setupResults: (_c = autotest.setupResults) === null || _c === void 0 ? void 0 : _c.map((step) => this.toOriginStep(step)),
|
|
27
27
|
teardownResults: (_d = autotest.teardownResults) === null || _d === void 0 ? void 0 : _d.map((step) => this.toOriginStep(step)),
|
|
@@ -42,28 +42,8 @@ class TestRunConverter extends common_1.BaseConverter {
|
|
|
42
42
|
}
|
|
43
43
|
return model;
|
|
44
44
|
}
|
|
45
|
-
toLocalAutotestResult(test) {
|
|
46
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
47
|
-
return {
|
|
48
|
-
id: test.id,
|
|
49
|
-
testRunId: test.testRunId,
|
|
50
|
-
configurationId: test.configurationId,
|
|
51
|
-
autoTestId: (_a = test.autoTestId) !== null && _a !== void 0 ? _a : undefined,
|
|
52
|
-
comment: (_b = test.comment) !== null && _b !== void 0 ? _b : undefined,
|
|
53
|
-
outcome: (_c = test.outcome) !== null && _c !== void 0 ? _c : undefined,
|
|
54
|
-
links: (_d = test.links) === null || _d === void 0 ? void 0 : _d.map((link) => this.toLocalLink(link)),
|
|
55
|
-
attachments: (_e = test.attachments) !== null && _e !== void 0 ? _e : undefined,
|
|
56
|
-
parameters: (_f = test.parameters) !== null && _f !== void 0 ? _f : undefined,
|
|
57
|
-
properties: (_g = test.properties) !== null && _g !== void 0 ? _g : undefined,
|
|
58
|
-
completedOn: (_h = test.completedOn) !== null && _h !== void 0 ? _h : undefined,
|
|
59
|
-
message: (_j = test.message) !== null && _j !== void 0 ? _j : undefined,
|
|
60
|
-
traces: (_k = test.traces) !== null && _k !== void 0 ? _k : undefined,
|
|
61
|
-
startedOn: (_l = test.startedOn) !== null && _l !== void 0 ? _l : undefined,
|
|
62
|
-
autoTest: test.autoTest ? this.autotestConverter.toLocalAutotestByModel(test.autoTest) : undefined,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
45
|
toLocalTestRun(testRun) {
|
|
66
|
-
var _a, _b, _c, _d
|
|
46
|
+
var _a, _b, _c, _d;
|
|
67
47
|
return {
|
|
68
48
|
id: testRun.id,
|
|
69
49
|
name: testRun.name,
|
|
@@ -72,7 +52,6 @@ class TestRunConverter extends common_1.BaseConverter {
|
|
|
72
52
|
description: (_c = testRun.description) !== null && _c !== void 0 ? _c : undefined,
|
|
73
53
|
launchSource: (_d = testRun.launchSource) !== null && _d !== void 0 ? _d : undefined,
|
|
74
54
|
stateName: this.toLocalState(testRun.stateName),
|
|
75
|
-
testResults: (_e = testRun.testResults) === null || _e === void 0 ? void 0 : _e.map((test) => this.toLocalAutotestResult(test)),
|
|
76
55
|
};
|
|
77
56
|
}
|
|
78
57
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TestRunsApi } from "testit-api-client";
|
|
2
2
|
import { AdapterConfig, BaseService } from "../../common";
|
|
3
|
-
import { type ITestRunsService, TestRunId, AutotestResult, TestRunGet
|
|
3
|
+
import { type ITestRunsService, TestRunId, AutotestResult, TestRunGet } from "./testruns.type";
|
|
4
4
|
import { type ITestRunConverter } from "./testruns.converter";
|
|
5
5
|
export declare class TestRunsService extends BaseService implements ITestRunsService {
|
|
6
6
|
protected readonly config: AdapterConfig;
|
|
@@ -11,6 +11,5 @@ export declare class TestRunsService extends BaseService implements ITestRunsSer
|
|
|
11
11
|
startTestRun(testRunId: TestRunId): Promise<void>;
|
|
12
12
|
completeTestRun(testRunId: TestRunId): Promise<void>;
|
|
13
13
|
loadAutotests(testRunId: string, autotests: Array<AutotestResult>): Promise<void>;
|
|
14
|
-
getAutotests(testRunId: string): Promise<AutotestResultGet[] | undefined>;
|
|
15
14
|
getTestRun(testRunId: TestRunId): Promise<TestRunGet>;
|
|
16
15
|
}
|
|
@@ -73,13 +73,6 @@ class TestRunsService extends common_1.BaseService {
|
|
|
73
73
|
}
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
|
-
getAutotests(testRunId) {
|
|
77
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
-
var _a;
|
|
79
|
-
const testRun = yield this.getTestRun(testRunId);
|
|
80
|
-
return (_a = testRun.testResults) === null || _a === void 0 ? void 0 : _a.filter((autotest) => autotest.configurationId === this.config.configurationId);
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
76
|
getTestRun(testRunId) {
|
|
84
77
|
return __awaiter(this, void 0, void 0, function* () {
|
|
85
78
|
return yield this._client
|
|
@@ -10,7 +10,6 @@ export interface TestRunGet {
|
|
|
10
10
|
startedOn?: Date;
|
|
11
11
|
completedOn?: Date;
|
|
12
12
|
stateName: RunState;
|
|
13
|
-
testResults?: Array<AutotestResultGet>;
|
|
14
13
|
}
|
|
15
14
|
interface AutotestResultBase {
|
|
16
15
|
links?: Array<Link>;
|
|
@@ -38,6 +37,7 @@ export interface AutotestResultGet extends AutotestResultBase {
|
|
|
38
37
|
id?: string;
|
|
39
38
|
configurationId?: string;
|
|
40
39
|
autoTest?: AutotestGet;
|
|
40
|
+
autoTestExternalId?: string;
|
|
41
41
|
autoTestId?: string;
|
|
42
42
|
testRunId?: string;
|
|
43
43
|
comment?: string;
|
|
@@ -48,7 +48,6 @@ export interface ITestRunsService {
|
|
|
48
48
|
getTestRun(testRunId: TestRunId): Promise<TestRunGet>;
|
|
49
49
|
startTestRun(testRunId: TestRunId): Promise<void>;
|
|
50
50
|
completeTestRun(testRunId: TestRunId): Promise<void>;
|
|
51
|
-
getAutotests(testRunId: TestRunId): Promise<AutotestResultGet[] | undefined>;
|
|
52
51
|
loadAutotests(testRunId: string, autotests: Array<AutotestResult>): Promise<void>;
|
|
53
52
|
}
|
|
54
53
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AutotestPost, AutotestResult,
|
|
1
|
+
import { AutotestPost, AutotestResult, TestRunId } from "../services";
|
|
2
2
|
export interface IStrategy {
|
|
3
3
|
readonly testRunId: Promise<TestRunId>;
|
|
4
|
-
readonly testsInRun?: Promise<
|
|
4
|
+
readonly testsInRun?: Promise<string[] | undefined>;
|
|
5
5
|
setup(): Promise<void>;
|
|
6
6
|
teardown(): Promise<void>;
|
|
7
7
|
loadAutotest(autotest: AutotestPost, status: string): Promise<void>;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AdapterConfig } from "../common";
|
|
2
|
-
import { AutotestResultGet } from "../services";
|
|
3
2
|
import { IStrategy } from "./strategy.type";
|
|
4
3
|
import { BaseStrategy } from "./base.strategy";
|
|
5
4
|
export declare class ZeroStrategy extends BaseStrategy implements IStrategy {
|
|
6
|
-
readonly testsInRun: Promise<
|
|
5
|
+
readonly testsInRun: Promise<string[]>;
|
|
7
6
|
constructor(config: AdapterConfig);
|
|
8
7
|
}
|
|
@@ -7,7 +7,7 @@ class ZeroStrategy extends base_strategy_1.BaseStrategy {
|
|
|
7
7
|
super(config);
|
|
8
8
|
if (!config.testRunId)
|
|
9
9
|
throw new Error("testRunId is required when mode is 0");
|
|
10
|
-
this.testsInRun = this.client.
|
|
10
|
+
this.testsInRun = this.client.testResults.getExternalIdsForRun();
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
exports.ZeroStrategy = ZeroStrategy;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "testit-js-commons",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"description": "JavaScript commons for Test IT",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"dotenv": "^16.0.3",
|
|
35
|
-
"testit-api-client": "6.3.
|
|
35
|
+
"testit-api-client": "6.3.1"
|
|
36
36
|
},
|
|
37
37
|
"files": [
|
|
38
38
|
"lib"
|