testit-adapter-codecept 1.1.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/README.md +198 -0
- package/build/bootstrap.d.ts +1 -0
- package/build/bootstrap.js +34 -0
- package/build/common/__tests/box.class.spec.d.ts +1 -0
- package/build/common/__tests/box.class.spec.js +15 -0
- package/build/common/__tests/test.utils.d.ts +4 -0
- package/build/common/__tests/test.utils.js +71 -0
- package/build/common/classes/box.class.d.ts +5 -0
- package/build/common/classes/box.class.js +18 -0
- package/build/common/classes/config.class.d.ts +6 -0
- package/build/common/classes/config.class.js +66 -0
- package/build/common/classes/logger.class.d.ts +9 -0
- package/build/common/classes/logger.class.js +28 -0
- package/build/common/classes/outcome.factory.d.ts +7 -0
- package/build/common/classes/outcome.factory.js +19 -0
- package/build/common/functions/compose.function.d.ts +1 -0
- package/build/common/functions/compose.function.js +5 -0
- package/build/common/functions/hash.function.d.ts +1 -0
- package/build/common/functions/hash.function.js +15 -0
- package/build/common/functions/humanize.function.d.ts +1 -0
- package/build/common/functions/humanize.function.js +7 -0
- package/build/common/functions/is-passed.function.d.ts +2 -0
- package/build/common/functions/is-passed.function.js +7 -0
- package/build/common/functions/to-iso-string.function.d.ts +1 -0
- package/build/common/functions/to-iso-string.function.js +10 -0
- package/build/common/functions/use-hash.function.d.ts +9 -0
- package/build/common/functions/use-hash.function.js +13 -0
- package/build/common/types/nullable.type.d.ts +1 -0
- package/build/common/types/nullable.type.js +2 -0
- package/build/helper.d.ts +9 -0
- package/build/helper.js +37 -0
- package/build/http/default-http-client.class.d.ts +22 -0
- package/build/http/default-http-client.class.js +123 -0
- package/build/http/http-client.errors.d.ts +7 -0
- package/build/http/http-client.errors.js +18 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +18 -0
- package/build/jest.config.d.ts +7 -0
- package/build/jest.config.js +12 -0
- package/build/services/__tests/attachments.class.spec.d.ts +1 -0
- package/build/services/__tests/attachments.class.spec.js +23 -0
- package/build/services/__tests/runs.builder.spec.d.ts +1 -0
- package/build/services/__tests/runs.builder.spec.js +79 -0
- package/build/services/__tests/tests.builder.spec.d.ts +1 -0
- package/build/services/__tests/tests.builder.spec.js +32 -0
- package/build/services/attachments.service.d.ts +11 -0
- package/build/services/attachments.service.js +28 -0
- package/build/services/runs.builder.d.ts +10 -0
- package/build/services/runs.builder.js +65 -0
- package/build/services/tests.builder.d.ts +10 -0
- package/build/services/tests.builder.js +55 -0
- package/build/strategies/base-strategy.class.d.ts +24 -0
- package/build/strategies/base-strategy.class.js +65 -0
- package/build/strategies/default-strategy.class.d.ts +16 -0
- package/build/strategies/default-strategy.class.js +44 -0
- package/build/strategies/partial-startegy.class.d.ts +20 -0
- package/build/strategies/partial-startegy.class.js +72 -0
- package/build/strategies/scratch-strategy.class.d.ts +18 -0
- package/build/strategies/scratch-strategy.class.js +49 -0
- package/build/strategies/strategy.factory.d.ts +8 -0
- package/build/strategies/strategy.factory.js +21 -0
- package/build/types/codecept.type.d.ts +27 -0
- package/build/types/codecept.type.js +2 -0
- package/build/types/origin.type.d.ts +44 -0
- package/build/types/origin.type.js +2 -0
- package/build/types/strategy.type.d.ts +10 -0
- package/build/types/strategy.type.js +2 -0
- package/package.json +46 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultStrategy = void 0;
|
|
4
|
+
const attachments_service_1 = require("../services/attachments.service");
|
|
5
|
+
const base_strategy_class_1 = require("./base-strategy.class");
|
|
6
|
+
class DefaultStrategy extends base_strategy_class_1.BaseStrategy {
|
|
7
|
+
constructor(http, logger, config) {
|
|
8
|
+
super(http, logger, config);
|
|
9
|
+
this.http = http;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.attachments = new attachments_service_1.AttachmentsService(this.http);
|
|
13
|
+
}
|
|
14
|
+
async bootstrap() {
|
|
15
|
+
await this.http.startRunIfNeeded(this.config.testRunId);
|
|
16
|
+
}
|
|
17
|
+
async teardown() {
|
|
18
|
+
await this.http.completeRunIfNeeded(this.config.testRunId);
|
|
19
|
+
}
|
|
20
|
+
async transferTestsToSystem(suite) {
|
|
21
|
+
await this.createOrUpdateTests(suite);
|
|
22
|
+
}
|
|
23
|
+
async transferRunsToSystem(suite) {
|
|
24
|
+
var _a, _b, _c;
|
|
25
|
+
for (const test of suite.tests) {
|
|
26
|
+
const config = this.box.get(test.id);
|
|
27
|
+
const screenshot = (_a = test.artifacts) === null || _a === void 0 ? void 0 : _a.screenshot;
|
|
28
|
+
const clientUrls = (_b = config === null || config === void 0 ? void 0 : config.attachments) !== null && _b !== void 0 ? _b : [];
|
|
29
|
+
if (screenshot) {
|
|
30
|
+
clientUrls.push(screenshot);
|
|
31
|
+
}
|
|
32
|
+
const attachments = await this.attachments.attach(clientUrls);
|
|
33
|
+
if (config === null || config === void 0 ? void 0 : config.text) {
|
|
34
|
+
const attach = await this.attachments
|
|
35
|
+
.attachTextLikeFile(config.text.content, (_c = config.text) === null || _c === void 0 ? void 0 : _c.name);
|
|
36
|
+
attachments.push(attach);
|
|
37
|
+
}
|
|
38
|
+
const run = this.runsBuilder.build(test, config, attachments);
|
|
39
|
+
await this.http.updateRuns(run);
|
|
40
|
+
}
|
|
41
|
+
this.logger.log(`Test run - ${this.config.testRunId} transferred to remote system`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.DefaultStrategy = DefaultStrategy;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/// <reference types="codeceptjs" />
|
|
2
|
+
import { Logger } from '../common/classes/logger.class';
|
|
3
|
+
import { DefaultHttpClient } from '../http/default-http-client.class';
|
|
4
|
+
import { Codecept } from '../types/codecept.type';
|
|
5
|
+
import { Strategy } from '../types/strategy.type';
|
|
6
|
+
import { Origin } from '../types/origin.type';
|
|
7
|
+
import { BaseStrategy } from './base-strategy.class';
|
|
8
|
+
export declare class PartialStrategy extends BaseStrategy implements Strategy {
|
|
9
|
+
protected readonly http: DefaultHttpClient;
|
|
10
|
+
protected readonly logger: Logger;
|
|
11
|
+
protected readonly config: Origin.Config;
|
|
12
|
+
private readonly attachments;
|
|
13
|
+
private readonly testsInRun;
|
|
14
|
+
constructor(http: DefaultHttpClient, logger: Logger, config: Origin.Config);
|
|
15
|
+
bootstrap(): Promise<void>;
|
|
16
|
+
teardown(): Promise<void>;
|
|
17
|
+
beforeTest(test: Codecept.Test): Promise<void>;
|
|
18
|
+
transferRunsToSystem(suite: any): Promise<void>;
|
|
19
|
+
transferTestsToSystem(suite: Mocha.Suite): Promise<void>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PartialStrategy = void 0;
|
|
4
|
+
const use_hash_function_1 = require("../common/functions/use-hash.function");
|
|
5
|
+
const attachments_service_1 = require("../services/attachments.service");
|
|
6
|
+
const base_strategy_class_1 = require("./base-strategy.class");
|
|
7
|
+
class PartialStrategy extends base_strategy_class_1.BaseStrategy {
|
|
8
|
+
constructor(http, logger, config) {
|
|
9
|
+
super(http, logger, config);
|
|
10
|
+
this.http = http;
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.attachments = new attachments_service_1.AttachmentsService(this.http);
|
|
14
|
+
this.testsInRun = this.http.getTestsIdsByRunId(this.config.testRunId);
|
|
15
|
+
}
|
|
16
|
+
async bootstrap() {
|
|
17
|
+
await this.http.startRunIfNeeded(this.config.testRunId);
|
|
18
|
+
}
|
|
19
|
+
async teardown() {
|
|
20
|
+
await this.http.completeRunIfNeeded(this.config.testRunId);
|
|
21
|
+
}
|
|
22
|
+
async beforeTest(test) {
|
|
23
|
+
var _a;
|
|
24
|
+
const tests = await this.testsInRun;
|
|
25
|
+
const hash = (_a = (0, use_hash_function_1.useDefaultHash)(test)) !== null && _a !== void 0 ? _a : (0, use_hash_function_1.useCompositeHash)(test);
|
|
26
|
+
if (!tests.includes(hash.toString())) {
|
|
27
|
+
test.run = () => test.skip();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async transferRunsToSystem(suite) {
|
|
31
|
+
const tests = await this.testsInRun;
|
|
32
|
+
const data = await Promise.all(suite.tests
|
|
33
|
+
.filter(test => {
|
|
34
|
+
var _a;
|
|
35
|
+
const hash = (_a = (0, use_hash_function_1.useDefaultHash)(test)) !== null && _a !== void 0 ? _a : (0, use_hash_function_1.useCompositeHash)(test);
|
|
36
|
+
return tests.includes(hash.toString());
|
|
37
|
+
})
|
|
38
|
+
.map(async (test) => {
|
|
39
|
+
var _a, _b, _c;
|
|
40
|
+
const config = this.box.get(test.id);
|
|
41
|
+
const screenshot = (_a = test.artifacts) === null || _a === void 0 ? void 0 : _a.screenshot;
|
|
42
|
+
const clientUrls = (_b = config === null || config === void 0 ? void 0 : config.attachments) !== null && _b !== void 0 ? _b : [];
|
|
43
|
+
if (screenshot) {
|
|
44
|
+
clientUrls.push(screenshot);
|
|
45
|
+
}
|
|
46
|
+
const attachments = await this.attachments.attach(clientUrls);
|
|
47
|
+
if (config === null || config === void 0 ? void 0 : config.text) {
|
|
48
|
+
const attach = await this.attachments
|
|
49
|
+
.attachTextLikeFile(config.text.content, (_c = config.text) === null || _c === void 0 ? void 0 : _c.name);
|
|
50
|
+
attachments.push(attach);
|
|
51
|
+
}
|
|
52
|
+
return this.runsBuilder.build(test, config, attachments);
|
|
53
|
+
}));
|
|
54
|
+
if (data.length) {
|
|
55
|
+
await this.http.updateManyRuns(data);
|
|
56
|
+
this.logger.log(`Test run - ${this.config.testRunId} transferred to remote system`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async transferTestsToSystem(suite) {
|
|
60
|
+
const tests = await this.testsInRun;
|
|
61
|
+
const suiteWithNeededTests = {
|
|
62
|
+
...suite,
|
|
63
|
+
tests: suite.tests.filter((test) => {
|
|
64
|
+
var _a;
|
|
65
|
+
const hash = (_a = (0, use_hash_function_1.useDefaultHash)(test)) !== null && _a !== void 0 ? _a : (0, use_hash_function_1.useCompositeHash)(test);
|
|
66
|
+
return tests.includes(hash.toString());
|
|
67
|
+
})
|
|
68
|
+
};
|
|
69
|
+
await this.createOrUpdateTests(suiteWithNeededTests);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.PartialStrategy = PartialStrategy;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="codeceptjs" />
|
|
2
|
+
import { Logger } from '../common/classes/logger.class';
|
|
3
|
+
import { DefaultHttpClient } from '../http/default-http-client.class';
|
|
4
|
+
import { Strategy } from '../types/strategy.type';
|
|
5
|
+
import { Origin } from '../types/origin.type';
|
|
6
|
+
import { BaseStrategy } from './base-strategy.class';
|
|
7
|
+
export declare class ScratchStrategy extends BaseStrategy implements Strategy {
|
|
8
|
+
protected readonly http: DefaultHttpClient;
|
|
9
|
+
protected readonly logger: Logger;
|
|
10
|
+
protected readonly config: Origin.Config;
|
|
11
|
+
private readonly attachments;
|
|
12
|
+
private run;
|
|
13
|
+
constructor(http: DefaultHttpClient, logger: Logger, config: Origin.Config);
|
|
14
|
+
bootstrap(): Promise<void>;
|
|
15
|
+
teardown(): Promise<void>;
|
|
16
|
+
transferTestsToSystem(suite: Mocha.Suite): Promise<void>;
|
|
17
|
+
transferRunsToSystem(suite: any): Promise<void>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScratchStrategy = void 0;
|
|
4
|
+
const attachments_service_1 = require("../services/attachments.service");
|
|
5
|
+
const base_strategy_class_1 = require("./base-strategy.class");
|
|
6
|
+
class ScratchStrategy extends base_strategy_class_1.BaseStrategy {
|
|
7
|
+
constructor(http, logger, config) {
|
|
8
|
+
super(http, logger, config);
|
|
9
|
+
this.http = http;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.attachments = new attachments_service_1.AttachmentsService(this.http);
|
|
13
|
+
}
|
|
14
|
+
async bootstrap() {
|
|
15
|
+
var _a;
|
|
16
|
+
const run = await this.http.createEmptyRun((_a = this.config.testRunName) !== null && _a !== void 0 ? _a : '');
|
|
17
|
+
if (run) {
|
|
18
|
+
await this.http.startRunIfNeeded(run.id);
|
|
19
|
+
this.run = run;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async teardown() {
|
|
23
|
+
await this.http.completeRunIfNeeded(this.run.id);
|
|
24
|
+
}
|
|
25
|
+
async transferTestsToSystem(suite) {
|
|
26
|
+
await this.createOrUpdateTests(suite);
|
|
27
|
+
}
|
|
28
|
+
async transferRunsToSystem(suite) {
|
|
29
|
+
var _a, _b, _c;
|
|
30
|
+
for (const test of suite.tests) {
|
|
31
|
+
const config = this.box.get(test.id);
|
|
32
|
+
const screenshot = (_a = test.artifacts) === null || _a === void 0 ? void 0 : _a.screenshot;
|
|
33
|
+
const clientUrls = (_b = config === null || config === void 0 ? void 0 : config.attachments) !== null && _b !== void 0 ? _b : [];
|
|
34
|
+
if (screenshot) {
|
|
35
|
+
clientUrls.push(screenshot);
|
|
36
|
+
}
|
|
37
|
+
const attachments = await this.attachments.attach(clientUrls);
|
|
38
|
+
if (config === null || config === void 0 ? void 0 : config.text) {
|
|
39
|
+
const attach = await this.attachments
|
|
40
|
+
.attachTextLikeFile(config.text.content, (_c = config.text) === null || _c === void 0 ? void 0 : _c.name);
|
|
41
|
+
attachments.push(attach);
|
|
42
|
+
}
|
|
43
|
+
const data = this.runsBuilder.build(test, config, attachments);
|
|
44
|
+
await this.http.updateRuns(data, this.run.id);
|
|
45
|
+
}
|
|
46
|
+
this.logger.log(`Test run - ${this.run.id} transferred to remote system`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.ScratchStrategy = ScratchStrategy;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Logger } from '../common/classes/logger.class';
|
|
2
|
+
import { DefaultHttpClient } from '../http/default-http-client.class';
|
|
3
|
+
import { Strategy } from '../types/strategy.type';
|
|
4
|
+
import { Origin } from '../types/origin.type';
|
|
5
|
+
export type AdapterMode = 0 | 1 | 2;
|
|
6
|
+
export declare class StrategyFactory {
|
|
7
|
+
static create(http: DefaultHttpClient, logger: Logger, config: Origin.Config): Strategy;
|
|
8
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StrategyFactory = void 0;
|
|
4
|
+
const default_strategy_class_1 = require("./default-strategy.class");
|
|
5
|
+
const partial_startegy_class_1 = require("./partial-startegy.class");
|
|
6
|
+
const scratch_strategy_class_1 = require("./scratch-strategy.class");
|
|
7
|
+
class StrategyFactory {
|
|
8
|
+
static create(http, logger, config) {
|
|
9
|
+
var _a;
|
|
10
|
+
const strategies = {
|
|
11
|
+
0: () => new partial_startegy_class_1.PartialStrategy(http, logger, config),
|
|
12
|
+
1: () => new default_strategy_class_1.DefaultStrategy(http, logger, config),
|
|
13
|
+
2: () => new scratch_strategy_class_1.ScratchStrategy(http, logger, config)
|
|
14
|
+
};
|
|
15
|
+
if (!strategies[config === null || config === void 0 ? void 0 : config.adapterMode]) {
|
|
16
|
+
logger.warn(`This mode ${config === null || config === void 0 ? void 0 : config.adapterMode} is invalid. Use mode 0, 1, 2`);
|
|
17
|
+
}
|
|
18
|
+
return strategies[(_a = config === null || config === void 0 ? void 0 : config.adapterMode) !== null && _a !== void 0 ? _a : 0]();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.StrategyFactory = StrategyFactory;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/// <reference types="codeceptjs" />
|
|
2
|
+
export declare namespace Codecept {
|
|
3
|
+
type Status = 'success' | 'failure';
|
|
4
|
+
interface Step {
|
|
5
|
+
name: string;
|
|
6
|
+
args: string[];
|
|
7
|
+
status: Status;
|
|
8
|
+
duration: number;
|
|
9
|
+
startTime: number;
|
|
10
|
+
endTime: number;
|
|
11
|
+
finishedAt: number;
|
|
12
|
+
steps: Step[];
|
|
13
|
+
startedAt: number;
|
|
14
|
+
}
|
|
15
|
+
interface Test<T = any> extends Mocha.Test {
|
|
16
|
+
id: string;
|
|
17
|
+
steps: Step[];
|
|
18
|
+
startedAt: number;
|
|
19
|
+
config: any;
|
|
20
|
+
inject: any;
|
|
21
|
+
artifacts: any;
|
|
22
|
+
err?: {
|
|
23
|
+
cliMessage?: () => string;
|
|
24
|
+
};
|
|
25
|
+
opts: T;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { LinkPost } from 'testit-api-client';
|
|
2
|
+
import { AdapterMode } from '../strategies/strategy.factory';
|
|
3
|
+
export declare namespace Origin {
|
|
4
|
+
interface TestConfig {
|
|
5
|
+
title?: string;
|
|
6
|
+
displayName?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
externalId?: string;
|
|
9
|
+
links: LinkPost[];
|
|
10
|
+
labels?: string[];
|
|
11
|
+
workitemIds?: [];
|
|
12
|
+
}
|
|
13
|
+
interface TestText {
|
|
14
|
+
name: string;
|
|
15
|
+
content: string;
|
|
16
|
+
}
|
|
17
|
+
interface TestMetadata {
|
|
18
|
+
links?: LinkPost[];
|
|
19
|
+
attachments?: string[];
|
|
20
|
+
message?: string;
|
|
21
|
+
text?: TestText;
|
|
22
|
+
}
|
|
23
|
+
interface Config {
|
|
24
|
+
url?: string;
|
|
25
|
+
privateToken?: string;
|
|
26
|
+
projectId?: string;
|
|
27
|
+
configurationId?: string;
|
|
28
|
+
testRunId?: string;
|
|
29
|
+
testRunName?: string;
|
|
30
|
+
adapterMode?: AdapterMode;
|
|
31
|
+
configFile?: string;
|
|
32
|
+
__DEV?: boolean;
|
|
33
|
+
}
|
|
34
|
+
type EnvironmentsConfig = Partial<{
|
|
35
|
+
TMS_URL: string;
|
|
36
|
+
TMS_PRIVATE_TOKEN: string;
|
|
37
|
+
TMS_PROJECT_ID: string;
|
|
38
|
+
TMS_CONFIGURATION_ID: string;
|
|
39
|
+
TMS_TEST_RUN_ID: string;
|
|
40
|
+
TMS_TEST_RUN_NAME: string;
|
|
41
|
+
TMS_ADAPTER_MODE: AdapterMode;
|
|
42
|
+
TMS_CONFIG_FILE: string;
|
|
43
|
+
}>;
|
|
44
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="codeceptjs" />
|
|
2
|
+
import { Origin } from './origin.type';
|
|
3
|
+
export interface Strategy {
|
|
4
|
+
bootstrap(): Promise<any>;
|
|
5
|
+
teardown(): Promise<any>;
|
|
6
|
+
beforeTest(test: Mocha.Test): Promise<void>;
|
|
7
|
+
transferTestsToSystem(suite: Mocha.Suite): Promise<void>;
|
|
8
|
+
transferRunsToSystem(suite: Mocha.Suite): Promise<void>;
|
|
9
|
+
collect(id: string, data: Origin.TestMetadata): void;
|
|
10
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "testit-adapter-codecept",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Codecept adapter for TestIT",
|
|
5
|
+
"keywords": [],
|
|
6
|
+
"main": "build/index.js",
|
|
7
|
+
"types": "build/index.d.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "run-p build:*",
|
|
10
|
+
"build:main": "tsc -p tsconfig.publish.json",
|
|
11
|
+
"build:dev": "tsc -p tsconfig.json",
|
|
12
|
+
"publish:local": "npm run build:main && npm pack --pack-destination ~/Packages",
|
|
13
|
+
"watch:dev": "tsc -p tsconfig.publish.json -w",
|
|
14
|
+
"test": "jest"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"dotenv": "^16.0.3",
|
|
18
|
+
"npm-run-all": "^4.1.5",
|
|
19
|
+
"testit-api-client": "^1.0.5"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@codeceptjs/configure": "^0.10.0",
|
|
23
|
+
"@codeceptjs/examples": "^1.2.1",
|
|
24
|
+
"@codeceptjs/ui": "^0.4.7",
|
|
25
|
+
"@types/jest": "^29.2.2",
|
|
26
|
+
"@types/node": "^18.11.9",
|
|
27
|
+
"@typescript-eslint/eslint-plugin": "^5.42.0",
|
|
28
|
+
"@typescript-eslint/parser": "^5.42.0",
|
|
29
|
+
"codeceptjs": "^3.3.6",
|
|
30
|
+
"eslint": "^8.27.0",
|
|
31
|
+
"jest": "^29.2.2",
|
|
32
|
+
"playwright": "^1.27.1",
|
|
33
|
+
"prettier": "2.7.1",
|
|
34
|
+
"ts-jest": "^29.0.3",
|
|
35
|
+
"ts-node": "^10.9.1",
|
|
36
|
+
"typescript": "^4.8.4"
|
|
37
|
+
},
|
|
38
|
+
"bugs": {
|
|
39
|
+
"url": "https://github.com/testit-tms/adapters-js/issues"
|
|
40
|
+
},
|
|
41
|
+
"homepage": "https://github.com/testit-tms/adapters-js",
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "git+https://github.com/testit-tms/adapters-js.git"
|
|
45
|
+
}
|
|
46
|
+
}
|