testit-adapter-codecept 1.1.0 → 1.1.2

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 CHANGED
@@ -1,198 +1,208 @@
1
- # Test IT TMS adapters for Codecept
2
- ![Test IT](https://raw.githubusercontent.com/testit-tms/adapters-js/master/images/banner.png)
3
-
4
- ## Getting Started
5
-
6
- ### Compatibility
7
-
8
- | Test IT | Adapter |
9
- |---------|---------|
10
- | 3.5 | 1.0 |
11
- |---------|---------|
12
- | 4.0 | 1.1 |
13
-
14
- ### Installation
15
- ```
16
- npm install testit-adapter-codecept
17
- ```
18
-
19
- ## Usage
20
-
21
- ### API client
22
-
23
- To use adapter you need to install `testit-api-client`:
24
- ```
25
- npm install testit-api-client
26
- ```
27
-
28
- ### Configuration
29
-
30
- Add TestITHelper and TestITPlugin to Codecept file configuration
31
-
32
- ```ts
33
- export const config: CodeceptJS.MainConfig = {
34
- tests: './**/*_test.ts',
35
- output: './output',
36
- helpers: {
37
- Playwright: {
38
- url: 'http://localhost',
39
- show: false,
40
- browser: 'chromium'
41
- },
42
- TestITHelper: {
43
- require: 'testit-adapter-codecept/build/helper.js'
44
- }
45
- },
46
- plugins: {
47
- TestITPlugin: {
48
- require: 'testit-adapter-codecept/build/bootstrap.js',
49
- enabled: true
50
- }
51
- },
52
- include: {},
53
- name: 'codecept-test-it-testing'
54
- }
55
- ```
56
-
57
- Create step.d.ts file and import TestMetadataHelper
58
-
59
- ```ts
60
- type TestITHelper = import('testit-adapter-codecept/build/helper').TestMetadataHelper;
61
-
62
- declare namespace CodeceptJS {
63
- interface SupportObject { I: I, current: any }
64
- interface Methods extends Playwright, TestITHelper {}
65
- interface I extends WithTranslation<Methods>{}
66
- namespace Translation {
67
- interface Actions {}
68
- }
69
- }
70
- ```
71
-
72
- #### File
73
-
74
- 1. Create .env config or file config with default name testit-adapter.config.json in the root directory of the project
75
-
76
- ```json
77
- {
78
- "url": "example-project-url",
79
- "projectId": "example-project-id",
80
- "testRunId": "example-project-run-id",
81
- "configurationId": "example-project-configuration-id",
82
- "adapterMode": "example-adapter-mode",
83
- "testRunName": "example-test-run-name"
84
- }
85
- ```
86
-
87
- 2. Fill parameters with your configuration, where:
88
- * `url` - location of the TMS instance
89
-
90
- * `privateToken` - API secret key
91
- 1. go to the https://{DOMAIN}/user-profile profile
92
- 2. copy the API secret key
93
-
94
- * `projectId` - ID of project in TMS instance.
95
-
96
- 1. create a project
97
- 2. open DevTools -> network
98
- 3. go to the project https://{DOMAIN}/projects/{PROJECT_ID}/tests
99
- 4. GET-request project, Preview tab, copy id field
100
-
101
- * `configurationId` - ID of configuration in TMS instance.
102
-
103
- 1. create a project
104
- 2. open DevTools -> network
105
- 3. go to the project https://{DOMAIN}/projects/{PROJECT_ID}/tests
106
- 4. GET-request configurations, Preview tab, copy id field
107
-
108
- * `testRunId` - id of the created test run in TMS instance. `testRunId` is optional. If it is not provided, it is created automatically.
109
-
110
- * `testRunName` - parameter for specifying the name of test run in TMS instance. `testRunName` is optional. If it is not provided, it is created automatically.
111
-
112
-
113
- ### Methods
114
-
115
- Methods can be used to specify information about autotest.
116
-
117
- Description of metadata methods:
118
- - `workItemIds` - linking an autotest to a test case
119
- - `displayName` - name of the autotest in the Test IT system (can be replaced with documentation strings)
120
- - `externalId` - ID of the autotest within the project in the Test IT System
121
- - `title` - title in the autotest card
122
- - `description` - description in the autotest card
123
- - `labels` - tags in the work item
124
- - `link` - links in the autotest card
125
-
126
- Description of methods:
127
- - `addLinks` - links in the autotest result
128
- - `addAttachments` - uploading files in the autotest result
129
- - `addMessage` - information about autotest in the autotest result
130
-
131
- ### Examples
132
-
133
- #### Simple test
134
- ```ts
135
- Scenario(
136
- 'Scenario name',
137
- {
138
- externalId: '1',
139
- displayName: 'Name',
140
- title: 'Title',
141
- description: 'Description',
142
- labels: ['Custom label'],
143
- links: [
144
- {
145
- title: 'Google about this error',
146
- description: 'Google documents',
147
- url: 'https://google.com',
148
- type: 'Requirement',
149
- hasInfo: true
150
- }
151
- ],
152
- workitemIds: ['1140']
153
- },
154
- ({ I }) => {
155
- I.amOnPage('https://github.com');
156
- I.addLinks([
157
- {
158
- title: 'Github page',
159
- description: 'Github SPA page',
160
- url: 'https://github.com',
161
- type: 'Repository',
162
- hasInfo: true
163
- }
164
- ])
165
- I.addMessage('Hello');
166
- I.see('GitHub');
167
- });
168
-
169
- ```
170
-
171
- #### Parameterized test
172
- ```ts
173
- const data = new DataTable(['target', 'element']);
174
-
175
- data.add(['https://mail.google.com', '//a[contains(., "Почта")]']);
176
- data.add(['https://www.wikipedia.org', '//input']);
177
- data.add(['https://google.com', '//a[contains(., "Google")]']);
178
-
179
- Data(data).Scenario('Should render main page for all users', ({ I, current }) => {
180
- I.amOnPage(current.target);
181
- I.seeElement(current.element);
182
- })
183
- ```
184
-
185
-
186
- # Contributing
187
-
188
- You can help to develop the project. Any contributions are **greatly appreciated**.
189
-
190
- * If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/testit-tms/adapters-js/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes.
191
- * Please make sure you check your spelling and grammar.
192
- * Create individual PR for each suggestion.
193
- * Please also read through the [Code Of Conduct](https://github.com/testit-tms/adapters-js/blob/master/CODE_OF_CONDUCT.md) before posting your first idea as well.
194
-
195
- # License
196
-
197
- Distributed under the Apache-2.0 License. See [LICENSE](https://github.com/testit-tms/adapters-js/blob/master/LICENSE.md) for more information.
198
-
1
+ # Test IT TMS adapters for Codecept
2
+ ![Test IT](https://raw.githubusercontent.com/testit-tms/adapters-js/master/images/banner.png)
3
+
4
+ ## Getting Started
5
+
6
+ ### Compatibility
7
+
8
+ | Test IT | Adapter |
9
+ |---------|---------|
10
+ | 3.5 | 1.0 |
11
+ | 4.0 | 1.1 |
12
+
13
+ ### Installation
14
+ ```
15
+ npm install testit-adapter-codecept
16
+ ```
17
+
18
+ ## Usage
19
+
20
+ ### API client
21
+
22
+ To use adapter you need to install `testit-api-client`:
23
+ ```
24
+ npm install testit-api-client
25
+ ```
26
+
27
+ ### Configuration
28
+
29
+ Add TestITHelper and TestITPlugin to Codecept file configuration
30
+
31
+ ```ts
32
+ export const config: CodeceptJS.MainConfig = {
33
+ tests: './**/*_test.ts',
34
+ output: './output',
35
+ helpers: {
36
+ Playwright: {
37
+ url: 'http://localhost',
38
+ show: false,
39
+ browser: 'chromium'
40
+ },
41
+ TestITHelper: {
42
+ require: 'testit-adapter-codecept/build/helper.js'
43
+ }
44
+ },
45
+ plugins: {
46
+ TestITPlugin: {
47
+ require: 'testit-adapter-codecept/build/bootstrap.js',
48
+ enabled: true
49
+ }
50
+ },
51
+ include: {},
52
+ name: 'codecept-test-it-testing'
53
+ }
54
+ ```
55
+
56
+ Create step.d.ts file and import TestMetadataHelper
57
+
58
+ ```ts
59
+ type TestITHelper = import('testit-adapter-codecept/build/helper').TestMetadataHelper;
60
+
61
+ declare namespace CodeceptJS {
62
+ interface SupportObject { I: I, current: any }
63
+ interface Methods extends Playwright, TestITHelper {}
64
+ interface I extends WithTranslation<Methods>{}
65
+ namespace Translation {
66
+ interface Actions {}
67
+ }
68
+ }
69
+ ```
70
+
71
+ #### File
72
+
73
+ 1. Create .env config or file config with default name testit-adapter.config.json in the root directory of the project
74
+
75
+ ```json
76
+ {
77
+ "url": "<url>",
78
+ "privateToken": "<token>",
79
+ "projectId": "<id>",
80
+ "configurationId": "<id>",
81
+ "testRunId": "<id>",
82
+ "testRunName": "<optional name>",
83
+ "adapterMode": <optional>,
84
+ "automaticCreationTestCases": <optional boolean>
85
+ }
86
+ ```
87
+
88
+ 2. Fill parameters with your configuration, where:
89
+ * `url` - location of the TMS instance
90
+
91
+ * `privateToken` - API secret key
92
+ 1. go to the https://{DOMAIN}/user-profile profile
93
+ 2. copy the API secret key
94
+
95
+ * `projectId` - ID of project in TMS instance.
96
+
97
+ 1. create a project
98
+ 2. open DevTools -> network
99
+ 3. go to the project https://{DOMAIN}/projects/{PROJECT_ID}/tests
100
+ 4. GET-request project, Preview tab, copy id field
101
+
102
+ * `configurationId` - ID of configuration in TMS instance.
103
+
104
+ 1. create a project
105
+ 2. open DevTools -> network
106
+ 3. go to the project https://{DOMAIN}/projects/{PROJECT_ID}/tests
107
+ 4. GET-request configurations, Preview tab, copy id field
108
+
109
+ * `testRunId` - id of the created test run in TMS instance. `testRunId` is optional. If it is not provided, it is created automatically.
110
+
111
+ * `testRunName` - parameter for specifying the name of test run in TMS instance. `testRunName` is optional. If it is not provided, it is created automatically.
112
+
113
+ * `adapterMode` - adapter mode. Default value - 0. The adapter supports following modes:
114
+ * 0 - in this mode, the adapter filters tests by test run ID and configuration ID, and sends the results to the test run.
115
+ * 1 - in this mode, the adapter sends all results to the test run without filtering.
116
+ * 2 - in this mode, the adapter creates a new test run and sends results to the new test run.
117
+
118
+ * `automaticCreationTestCases` - mode of automatic creation test cases. Default value - false. The adapter supports following modes:
119
+ * true - in this mode, the adapter will create a test case linked to the created autotest (not to the updated autotest).
120
+ * false - in this mode, the adapter will not create a test case.
121
+
122
+
123
+ ### Methods
124
+
125
+ Methods can be used to specify information about autotest.
126
+
127
+ Description of metadata methods:
128
+ - `workItemIds` - linking an autotest to a test case
129
+ - `displayName` - name of the autotest in the Test IT system (can be replaced with documentation strings)
130
+ - `externalId` - ID of the autotest within the project in the Test IT System
131
+ - `title` - title in the autotest card
132
+ - `description` - description in the autotest card
133
+ - `labels` - tags in the work item
134
+ - `link` - links in the autotest card
135
+
136
+ Description of methods:
137
+ - `addLinks` - links in the autotest result
138
+ - `addAttachments` - uploading files in the autotest result
139
+ - `addMessage` - information about autotest in the autotest result
140
+
141
+ ### Examples
142
+
143
+ #### Simple test
144
+ ```ts
145
+ Scenario(
146
+ 'Scenario name',
147
+ {
148
+ externalId: '1',
149
+ displayName: 'Name',
150
+ title: 'Title',
151
+ description: 'Description',
152
+ labels: ['Custom label'],
153
+ links: [
154
+ {
155
+ title: 'Google about this error',
156
+ description: 'Google documents',
157
+ url: 'https://google.com',
158
+ type: 'Requirement',
159
+ hasInfo: true
160
+ }
161
+ ],
162
+ workitemIds: ['1140']
163
+ },
164
+ ({ I }) => {
165
+ I.amOnPage('https://github.com');
166
+ I.addLinks([
167
+ {
168
+ title: 'Github page',
169
+ description: 'Github SPA page',
170
+ url: 'https://github.com',
171
+ type: 'Repository',
172
+ hasInfo: true
173
+ }
174
+ ])
175
+ I.addMessage('Hello');
176
+ I.see('GitHub');
177
+ });
178
+
179
+ ```
180
+
181
+ #### Parameterized test
182
+ ```ts
183
+ const data = new DataTable(['target', 'element']);
184
+
185
+ data.add(['https://mail.google.com', '//a[contains(., "Почта")]']);
186
+ data.add(['https://www.wikipedia.org', '//input']);
187
+ data.add(['https://google.com', '//a[contains(., "Google")]']);
188
+
189
+ Data(data).Scenario('Should render main page for all users', ({ I, current }) => {
190
+ I.amOnPage(current.target);
191
+ I.seeElement(current.element);
192
+ })
193
+ ```
194
+
195
+
196
+ # Contributing
197
+
198
+ You can help to develop the project. Any contributions are **greatly appreciated**.
199
+
200
+ * If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/testit-tms/adapters-js/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes.
201
+ * Please make sure you check your spelling and grammar.
202
+ * Create individual PR for each suggestion.
203
+ * Please also read through the [Code Of Conduct](https://github.com/testit-tms/adapters-js/blob/master/CODE_OF_CONDUCT.md) before posting your first idea as well.
204
+
205
+ # License
206
+
207
+ Distributed under the Apache-2.0 License. See [LICENSE](https://github.com/testit-tms/adapters-js/blob/master/LICENSE.md) for more information.
208
+
@@ -42,15 +42,15 @@ class ConfigComposer {
42
42
  .toString();
43
43
  const file = JSON.parse(buffer);
44
44
  if ((file === null || file === void 0 ? void 0 : file.privateToken) || (base === null || base === void 0 ? void 0 : base.privateToken)) {
45
- console.warn(`
46
- The configuration file specifies a private token. It is not safe.
47
- Use TMS_PRIVATE_TOKEN environment variable
45
+ console.warn(`
46
+ The configuration file specifies a private token. It is not safe.
47
+ Use TMS_PRIVATE_TOKEN environment variable
48
48
  `);
49
49
  }
50
50
  return this.merge(base, file, environment);
51
51
  }
52
52
  merge(base, file, environment) {
53
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
53
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
54
54
  return {
55
55
  url: (_b = (_a = environment === null || environment === void 0 ? void 0 : environment.TMS_URL) !== null && _a !== void 0 ? _a : file.url) !== null && _b !== void 0 ? _b : base === null || base === void 0 ? void 0 : base.url,
56
56
  privateToken: (_d = (_c = environment === null || environment === void 0 ? void 0 : environment.TMS_PRIVATE_TOKEN) !== null && _c !== void 0 ? _c : file === null || file === void 0 ? void 0 : file.privateToken) !== null && _d !== void 0 ? _d : base === null || base === void 0 ? void 0 : base.url,
@@ -59,7 +59,8 @@ class ConfigComposer {
59
59
  testRunId: (_k = (_j = environment === null || environment === void 0 ? void 0 : environment.TMS_TEST_RUN_ID) !== null && _j !== void 0 ? _j : file === null || file === void 0 ? void 0 : file.testRunId) !== null && _k !== void 0 ? _k : base === null || base === void 0 ? void 0 : base.testRunId,
60
60
  testRunName: (_m = (_l = environment === null || environment === void 0 ? void 0 : environment.TMS_TEST_RUN_NAME) !== null && _l !== void 0 ? _l : file === null || file === void 0 ? void 0 : file.testRunName) !== null && _m !== void 0 ? _m : base === null || base === void 0 ? void 0 : base.testRunName,
61
61
  adapterMode: (_q = (_p = (_o = environment === null || environment === void 0 ? void 0 : environment.TMS_ADAPTER_MODE) !== null && _o !== void 0 ? _o : file === null || file === void 0 ? void 0 : file.adapterMode) !== null && _p !== void 0 ? _p : base === null || base === void 0 ? void 0 : base.adapterMode) !== null && _q !== void 0 ? _q : 0,
62
- __DEV: (_r = file.__DEV) !== null && _r !== void 0 ? _r : false
62
+ automaticCreationTestCases: (_t = (_s = (_r = environment === null || environment === void 0 ? void 0 : environment.TMS_AUTOMATIC_CREATION_TEST_CASES) !== null && _r !== void 0 ? _r : file === null || file === void 0 ? void 0 : file.automaticCreationTestCases) !== null && _s !== void 0 ? _s : base === null || base === void 0 ? void 0 : base.automaticCreationTestCases) !== null && _t !== void 0 ? _t : false,
63
+ __DEV: (_u = file.__DEV) !== null && _u !== void 0 ? _u : false
63
64
  };
64
65
  }
65
66
  }
@@ -17,11 +17,11 @@ class Logger {
17
17
  }
18
18
  error(error) {
19
19
  var _a, _b, _c, _d;
20
- this.logger.error(`
21
- ${(_a = error.response) === null || _a === void 0 ? void 0 : _a.status},
22
- ${(_b = error.config) === null || _b === void 0 ? void 0 : _b.method},
23
- ${(_c = error.config) === null || _c === void 0 ? void 0 : _c.url},
24
- ${JSON.stringify((_d = error.response) === null || _d === void 0 ? void 0 : _d.data)}
20
+ this.logger.error(`
21
+ ${(_a = error.response) === null || _a === void 0 ? void 0 : _a.status},
22
+ ${(_b = error.config) === null || _b === void 0 ? void 0 : _b.method},
23
+ ${(_c = error.config) === null || _c === void 0 ? void 0 : _c.url},
24
+ ${JSON.stringify((_d = error.response) === null || _d === void 0 ? void 0 : _d.data)}
25
25
  `);
26
26
  }
27
27
  }
@@ -35,7 +35,7 @@ class RunsBuilder {
35
35
  traces: (_h = (_g = test === null || test === void 0 ? void 0 : test.err) === null || _g === void 0 ? void 0 : _g.cliMessage()) !== null && _h !== void 0 ? _h : '',
36
36
  teardownResults,
37
37
  setupResults,
38
- completeOn: (0, to_iso_string_function_1.safetyUseISOString)((test === null || test === void 0 ? void 0 : test.startedAt) + (test === null || test === void 0 ? void 0 : test.duration)),
38
+ completedOn: (0, to_iso_string_function_1.safetyUseISOString)((test === null || test === void 0 ? void 0 : test.startedAt) + (test === null || test === void 0 ? void 0 : test.duration)),
39
39
  message: (_j = metadata === null || metadata === void 0 ? void 0 : metadata.message) !== null && _j !== void 0 ? _j : null,
40
40
  outcome: outcome_factory_1.OutcomeFactory.create(test.state),
41
41
  stepResults: !outcome_factory_1.OutcomeFactory.isSkipped(test.state) ? this.buildManySteps(test.steps) : null
@@ -38,6 +38,7 @@ class BaseStrategy {
38
38
  }
39
39
  }
40
40
  async createTestInOriginSystem(testToOriginSystem, test) {
41
+ testToOriginSystem.shouldCreateWorkItem = this.config.automaticCreationTestCases;
41
42
  const response = await this.http.create(testToOriginSystem);
42
43
  if (!response) {
43
44
  return;
@@ -28,6 +28,7 @@ export declare namespace Origin {
28
28
  testRunId?: string;
29
29
  testRunName?: string;
30
30
  adapterMode?: AdapterMode;
31
+ automaticCreationTestCases?: boolean;
31
32
  configFile?: string;
32
33
  __DEV?: boolean;
33
34
  }
@@ -39,6 +40,7 @@ export declare namespace Origin {
39
40
  TMS_TEST_RUN_ID: string;
40
41
  TMS_TEST_RUN_NAME: string;
41
42
  TMS_ADAPTER_MODE: AdapterMode;
43
+ TMS_AUTOMATIC_CREATION_TEST_CASES: boolean;
42
44
  TMS_CONFIG_FILE: string;
43
45
  }>;
44
46
  }
package/package.json CHANGED
@@ -1,46 +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
- }
1
+ {
2
+ "name": "testit-adapter-codecept",
3
+ "version": "1.1.2",
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.8"
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
+ }