@teambit/tester 0.0.881 → 0.0.882

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.
Files changed (40) hide show
  1. package/dist/exceptions/index.js +0 -6
  2. package/dist/exceptions/index.js.map +1 -1
  3. package/dist/exceptions/no-matching-components.js +0 -3
  4. package/dist/exceptions/no-matching-components.js.map +1 -1
  5. package/dist/exceptions/no-test-files-found.js +0 -6
  6. package/dist/exceptions/no-test-files-found.js.map +1 -1
  7. package/dist/index.js +0 -8
  8. package/dist/index.js.map +1 -1
  9. package/dist/test.cmd.js +2 -37
  10. package/dist/test.cmd.js.map +1 -1
  11. package/dist/tester.aspect.js +0 -5
  12. package/dist/tester.aspect.js.map +1 -1
  13. package/dist/tester.compare.section.js +0 -13
  14. package/dist/tester.compare.section.js.map +1 -1
  15. package/dist/tester.composition.js +0 -6
  16. package/dist/tester.composition.js.map +1 -1
  17. package/dist/tester.graphql.js +0 -17
  18. package/dist/tester.graphql.js.map +1 -1
  19. package/dist/tester.js +0 -6
  20. package/dist/tester.js.map +1 -1
  21. package/dist/tester.main.runtime.js +3 -94
  22. package/dist/tester.main.runtime.js.map +1 -1
  23. package/dist/tester.service.js +0 -50
  24. package/dist/tester.service.js.map +1 -1
  25. package/dist/tester.task.js +11 -54
  26. package/dist/tester.task.js.map +1 -1
  27. package/dist/tester.ui.runtime.js +1 -34
  28. package/dist/tester.ui.runtime.js.map +1 -1
  29. package/dist/tests.section.js +0 -13
  30. package/dist/tests.section.js.map +1 -1
  31. package/dist/utils/detect-spec-files.js +0 -4
  32. package/dist/utils/detect-spec-files.js.map +1 -1
  33. package/dist/utils/index.js +0 -3
  34. package/dist/utils/index.js.map +1 -1
  35. package/dist/utils/junit-generator.js +0 -18
  36. package/dist/utils/junit-generator.js.map +1 -1
  37. package/package-tar/teambit-tester-0.0.882.tgz +0 -0
  38. package/package.json +11 -11
  39. package/{preview-1666409808293.js → preview-1666496165706.js} +2 -2
  40. package/package-tar/teambit-tester-0.0.881.tgz +0 -0
@@ -1,210 +1,147 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.array.flat.js");
6
-
7
5
  require("core-js/modules/es.array.iterator.js");
8
-
9
6
  require("core-js/modules/es.array.unscopables.flat.js");
10
-
11
7
  require("core-js/modules/es.promise.js");
12
-
13
8
  Object.defineProperty(exports, "__esModule", {
14
9
  value: true
15
10
  });
16
11
  exports.TesterMain = void 0;
17
-
18
12
  function _defineProperty2() {
19
13
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
20
-
21
14
  _defineProperty2 = function () {
22
15
  return data;
23
16
  };
24
-
25
17
  return data;
26
18
  }
27
-
28
19
  function _fsExtra() {
29
20
  const data = _interopRequireDefault(require("fs-extra"));
30
-
31
21
  _fsExtra = function () {
32
22
  return data;
33
23
  };
34
-
35
24
  return data;
36
25
  }
37
-
38
26
  function _cli() {
39
27
  const data = require("@teambit/cli");
40
-
41
28
  _cli = function () {
42
29
  return data;
43
30
  };
44
-
45
31
  return data;
46
32
  }
47
-
48
33
  function _lodash() {
49
34
  const data = _interopRequireDefault(require("lodash.compact"));
50
-
51
35
  _lodash = function () {
52
36
  return data;
53
37
  };
54
-
55
38
  return data;
56
39
  }
57
-
58
40
  function _envs() {
59
41
  const data = require("@teambit/envs");
60
-
61
42
  _envs = function () {
62
43
  return data;
63
44
  };
64
-
65
45
  return data;
66
46
  }
67
-
68
47
  function _logger() {
69
48
  const data = require("@teambit/logger");
70
-
71
49
  _logger = function () {
72
50
  return data;
73
51
  };
74
-
75
52
  return data;
76
53
  }
77
-
78
54
  function _workspace() {
79
55
  const data = require("@teambit/workspace");
80
-
81
56
  _workspace = function () {
82
57
  return data;
83
58
  };
84
-
85
59
  return data;
86
60
  }
87
-
88
61
  function _graphql() {
89
62
  const data = require("@teambit/graphql");
90
-
91
63
  _graphql = function () {
92
64
  return data;
93
65
  };
94
-
95
66
  return data;
96
67
  }
97
-
98
68
  function _builder() {
99
69
  const data = require("@teambit/builder");
100
-
101
70
  _builder = function () {
102
71
  return data;
103
72
  };
104
-
105
73
  return data;
106
74
  }
107
-
108
75
  function _ui() {
109
76
  const data = require("@teambit/ui");
110
-
111
77
  _ui = function () {
112
78
  return data;
113
79
  };
114
-
115
80
  return data;
116
81
  }
117
-
118
82
  function _lodash2() {
119
83
  const data = require("lodash");
120
-
121
84
  _lodash2 = function () {
122
85
  return data;
123
86
  };
124
-
125
87
  return data;
126
88
  }
127
-
128
89
  function _devFiles() {
129
90
  const data = _interopRequireDefault(require("@teambit/dev-files"));
130
-
131
91
  _devFiles = function () {
132
92
  return data;
133
93
  };
134
-
135
94
  return data;
136
95
  }
137
-
138
96
  function _test() {
139
97
  const data = require("./test.cmd");
140
-
141
98
  _test = function () {
142
99
  return data;
143
100
  };
144
-
145
101
  return data;
146
102
  }
147
-
148
103
  function _tester() {
149
104
  const data = require("./tester.aspect");
150
-
151
105
  _tester = function () {
152
106
  return data;
153
107
  };
154
-
155
108
  return data;
156
109
  }
157
-
158
110
  function _tester2() {
159
111
  const data = require("./tester.service");
160
-
161
112
  _tester2 = function () {
162
113
  return data;
163
114
  };
164
-
165
115
  return data;
166
116
  }
167
-
168
117
  function _tester3() {
169
118
  const data = require("./tester.task");
170
-
171
119
  _tester3 = function () {
172
120
  return data;
173
121
  };
174
-
175
122
  return data;
176
123
  }
177
-
178
124
  function _utils() {
179
125
  const data = require("./utils");
180
-
181
126
  _utils = function () {
182
127
  return data;
183
128
  };
184
-
185
129
  return data;
186
130
  }
187
-
188
131
  function _tester4() {
189
132
  const data = require("./tester.graphql");
190
-
191
133
  _tester4 = function () {
192
134
  return data;
193
135
  };
194
-
195
136
  return data;
196
137
  }
197
-
198
138
  function _junitGenerator() {
199
139
  const data = require("./utils/junit-generator");
200
-
201
140
  _junitGenerator = function () {
202
141
  return data;
203
142
  };
204
-
205
143
  return data;
206
144
  }
207
-
208
145
  class TesterMain {
209
146
  constructor(patterns,
210
147
  /**
@@ -237,46 +174,36 @@ class TesterMain {
237
174
  this.builder = builder;
238
175
  (0, _defineProperty2().default)(this, "_testsResults", []);
239
176
  }
240
-
241
177
  async test(components, opts) {
242
178
  const options = this.getOptions(opts);
243
179
  const envsRuntime = await this.envs.createEnvironment(components);
244
-
245
180
  if (opts !== null && opts !== void 0 && opts.env) {
246
181
  return envsRuntime.runEnv(opts.env, this.service, options);
247
182
  }
248
-
249
183
  const results = await envsRuntime.run(this.service, options);
250
-
251
184
  if (opts !== null && opts !== void 0 && opts.junit) {
252
185
  await this.generateJUnit(opts === null || opts === void 0 ? void 0 : opts.junit, results);
253
186
  }
254
-
255
187
  return results;
256
188
  }
257
-
258
189
  async generateJUnit(filePath, testsResults) {
259
190
  const components = testsResults.results.map(envResult => {
260
191
  var _envResult$data;
261
-
262
192
  return (_envResult$data = envResult.data) === null || _envResult$data === void 0 ? void 0 : _envResult$data.components;
263
193
  }).flat();
264
194
  const jUnit = (0, _junitGenerator().testsResultsToJUnitFormat)((0, _lodash().default)(components));
265
195
  await _fsExtra().default.outputFile(filePath, jUnit);
266
196
  }
197
+
267
198
  /**
268
199
  * watch all components for changes and test upon each.
269
200
  */
270
-
271
-
272
201
  async watch(components, opts) {
273
202
  const options = this.getOptions(opts);
274
203
  const envsRuntime = await this.envs.createEnvironment(components);
275
-
276
204
  if (opts !== null && opts !== void 0 && opts.env) {
277
205
  return envsRuntime.runEnv(opts.env, this.service, options);
278
206
  }
279
-
280
207
  this.service.onTestRunComplete(results => {
281
208
  results.components.forEach(component => {
282
209
  this._testsResults[component.componentId.toString()] = component;
@@ -284,7 +211,6 @@ class TesterMain {
284
211
  });
285
212
  return envsRuntime.run(this.service, options);
286
213
  }
287
-
288
214
  async uiWatch() {
289
215
  const components = await this.workspace.list();
290
216
  return this.watch(components, {
@@ -293,58 +219,48 @@ class TesterMain {
293
219
  ui: true
294
220
  });
295
221
  }
296
-
297
222
  async getTestsResults(component, idHasVersion = true) {
298
223
  const entry = component.get(_tester().TesterAspect.id);
299
224
  const isModified = !idHasVersion && (await component.isModified());
300
225
  const data = this.builder.getDataByAspect(component, _tester().TesterAspect.id);
301
-
302
226
  if ((entry || data) && !isModified) {
303
227
  return {
304
228
  testsResults: (data === null || data === void 0 ? void 0 : data.tests) || (entry === null || entry === void 0 ? void 0 : entry.data.tests),
305
229
  loading: false
306
230
  };
307
231
  }
308
-
309
232
  return this.getTestsResultsFromState(component);
310
233
  }
311
-
312
234
  getTestsResultsFromState(component) {
313
235
  const tests = this._testsResults[component.id.toString()];
314
-
315
236
  return {
316
237
  testsResults: tests === null || tests === void 0 ? void 0 : tests.results,
317
238
  loading: (tests === null || tests === void 0 ? void 0 : tests.loading) || false
318
239
  };
319
240
  }
241
+
320
242
  /**
321
243
  * Get the tests patterns from the config. (used as default patterns in case the env does not provide them via getTestsDevPatterns)
322
244
  * @returns
323
245
  */
324
-
325
-
326
246
  getPatterns() {
327
247
  return this.patterns;
328
248
  }
329
-
330
249
  getComponentDevPatterns(component) {
331
250
  const env = this.envs.calculateEnv(component).env;
332
251
  const componentPatterns = env.getTestsDevPatterns ? env.getTestsDevPatterns(component) : this.getPatterns();
333
252
  return componentPatterns;
334
253
  }
335
-
336
254
  getDevPatternToRegister() {
337
255
  return this.getComponentDevPatterns.bind(this);
338
256
  }
257
+
339
258
  /**
340
259
  * get all test files of a component.
341
260
  */
342
-
343
-
344
261
  getTestFiles(component) {
345
262
  return (0, _utils().detectTestFiles)(component, this.devFiles);
346
263
  }
347
-
348
264
  getOptions(options) {
349
265
  const defaults = {
350
266
  watch: false,
@@ -352,14 +268,12 @@ class TesterMain {
352
268
  };
353
269
  return (0, _lodash2().merge)(defaults, options);
354
270
  }
355
-
356
271
  static async provider([cli, envs, workspace, loggerAspect, graphql, ui, devFiles, builder], config) {
357
272
  const logger = loggerAspect.createLogger(_tester().TesterAspect.id);
358
273
  const testerService = new (_tester2().TesterService)(workspace, logger, graphql.pubsub, devFiles);
359
274
  envs.registerService(testerService);
360
275
  const tester = new TesterMain(config.patterns, graphql, envs, workspace, testerService, new (_tester3().TesterTask)(_tester().TesterAspect.id, devFiles), devFiles, builder);
361
276
  devFiles.registerDevPattern(tester.getDevPatternToRegister());
362
-
363
277
  if (workspace) {
364
278
  ui.registerOnStart(async () => {
365
279
  if (!config.watchOnStart) return undefined;
@@ -367,14 +281,11 @@ class TesterMain {
367
281
  return undefined;
368
282
  });
369
283
  }
370
-
371
284
  cli.register(new (_test().TestCmd)(tester, workspace, logger));
372
285
  graphql.register((0, _tester4().testerSchema)(tester, graphql));
373
286
  return tester;
374
287
  }
375
-
376
288
  }
377
-
378
289
  exports.TesterMain = TesterMain;
379
290
  (0, _defineProperty2().default)(TesterMain, "runtime", _cli().MainRuntime);
380
291
  (0, _defineProperty2().default)(TesterMain, "dependencies", [_cli().CLIAspect, _envs().EnvsAspect, _workspace().WorkspaceAspect, _logger().LoggerAspect, _graphql().GraphqlAspect, _ui().UIAspect, _devFiles().default, _builder().BuilderAspect]);
@@ -383,13 +294,11 @@ exports.TesterMain = TesterMain;
383
294
  * default test regex for which files tester to apply on.
384
295
  */
385
296
  patterns: ['**/*.spec.+(js|ts|jsx|tsx)', '**/*.test.+(js|ts|jsx|tsx)'],
386
-
387
297
  /**
388
298
  * determine whether to watch on start.
389
299
  */
390
300
  watchOnStart: true
391
301
  });
392
-
393
302
  _tester().TesterAspect.addRuntime(TesterMain);
394
303
 
395
304
  //# sourceMappingURL=tester.main.runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TesterMain","constructor","patterns","graphql","envs","workspace","service","task","devFiles","builder","test","components","opts","options","getOptions","envsRuntime","createEnvironment","env","runEnv","results","run","junit","generateJUnit","filePath","testsResults","map","envResult","data","flat","jUnit","testsResultsToJUnitFormat","compact","fs","outputFile","watch","onTestRunComplete","forEach","component","_testsResults","componentId","toString","uiWatch","list","debug","ui","getTestsResults","idHasVersion","entry","get","TesterAspect","id","isModified","getDataByAspect","tests","loading","getTestsResultsFromState","getPatterns","getComponentDevPatterns","calculateEnv","componentPatterns","getTestsDevPatterns","getDevPatternToRegister","bind","getTestFiles","detectTestFiles","defaults","merge","provider","cli","loggerAspect","config","logger","createLogger","testerService","TesterService","pubsub","registerService","tester","TesterTask","registerDevPattern","registerOnStart","watchOnStart","undefined","register","TestCmd","testerSchema","MainRuntime","CLIAspect","EnvsAspect","WorkspaceAspect","LoggerAspect","GraphqlAspect","UIAspect","DevFilesAspect","BuilderAspect","addRuntime"],"sources":["tester.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Component, IComponent } from '@teambit/component';\nimport compact from 'lodash.compact';\nimport { EnvsAspect, EnvsExecutionResult, EnvsMain } from '@teambit/envs';\nimport { LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { UiMain, UIAspect } from '@teambit/ui';\nimport { merge } from 'lodash';\nimport DevFilesAspect, { DevFilesMain } from '@teambit/dev-files';\nimport { TestsResult } from '@teambit/tests-results';\nimport { ComponentsResults, CallbackFn, Tests } from './tester';\nimport { TestCmd } from './test.cmd';\nimport { TesterAspect } from './tester.aspect';\nimport { TesterService } from './tester.service';\nimport { TesterTask } from './tester.task';\nimport { detectTestFiles } from './utils';\nimport { testerSchema } from './tester.graphql';\nimport { testsResultsToJUnitFormat } from './utils/junit-generator';\n\nexport type TesterExtensionConfig = {\n /**\n * regex of the text environment.\n */\n testRegex: string;\n\n /**\n * determine whether to watch on start.\n */\n watchOnStart: boolean;\n patterns: string[];\n};\n\nexport type TesterOptions = {\n /**\n * start the tester in watch mode.\n */\n watch: boolean;\n\n /**\n * start the tester in debug mode.\n */\n debug: boolean;\n\n /**\n * start the tester in debug mode.\n */\n ui?: boolean;\n\n /**\n * initiate the tester on given env.\n */\n env?: string;\n\n /**\n * generate JUnit files on the specified dir\n */\n junit?: string;\n\n /**\n * show code coverage\n */\n coverage?: boolean;\n\n callback?: CallbackFn;\n};\n\nexport class TesterMain {\n static runtime = MainRuntime;\n static dependencies = [\n CLIAspect,\n EnvsAspect,\n WorkspaceAspect,\n LoggerAspect,\n GraphqlAspect,\n UIAspect,\n DevFilesAspect,\n BuilderAspect,\n ];\n\n constructor(\n private patterns: string[],\n /**\n * graphql extension.\n */\n private graphql: GraphqlMain,\n\n /**\n * envs extension.\n */\n private envs: EnvsMain,\n\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * tester service.\n */\n readonly service: TesterService,\n\n /**\n * build task.\n */\n readonly task: TesterTask,\n\n private devFiles: DevFilesMain,\n\n private builder: BuilderMain\n ) {}\n\n _testsResults: { [componentId: string]: ComponentsResults } | undefined[] = [];\n\n async test(components: Component[], opts?: TesterOptions): Promise<EnvsExecutionResult<Tests>> {\n const options = this.getOptions(opts);\n const envsRuntime = await this.envs.createEnvironment(components);\n if (opts?.env) {\n return envsRuntime.runEnv(opts.env, this.service, options);\n }\n const results = await envsRuntime.run(this.service, options);\n if (opts?.junit) {\n await this.generateJUnit(opts?.junit, results);\n }\n return results;\n }\n\n private async generateJUnit(filePath: string, testsResults: EnvsExecutionResult<Tests>) {\n const components = testsResults.results.map((envResult) => envResult.data?.components).flat();\n const jUnit = testsResultsToJUnitFormat(compact(components));\n await fs.outputFile(filePath, jUnit);\n }\n\n /**\n * watch all components for changes and test upon each.\n */\n async watch(components: Component[], opts?: TesterOptions) {\n const options = this.getOptions(opts);\n const envsRuntime = await this.envs.createEnvironment(components);\n if (opts?.env) {\n return envsRuntime.runEnv(opts.env, this.service, options);\n }\n\n this.service.onTestRunComplete((results) => {\n results.components.forEach((component) => {\n this._testsResults[component.componentId.toString()] = component;\n });\n });\n return envsRuntime.run(this.service, options);\n }\n\n async uiWatch() {\n const components = await this.workspace.list();\n return this.watch(components, { watch: true, debug: false, ui: true });\n }\n\n async getTestsResults(\n component: IComponent,\n idHasVersion = true\n ): Promise<{ testsResults?: TestsResult; loading: boolean } | undefined> {\n const entry = component.get(TesterAspect.id);\n const isModified = !idHasVersion && (await component.isModified());\n const data = this.builder.getDataByAspect(component, TesterAspect.id) as { tests: TestsResult };\n if ((entry || data) && !isModified) {\n return { testsResults: data?.tests || entry?.data.tests, loading: false };\n }\n return this.getTestsResultsFromState(component);\n }\n\n private getTestsResultsFromState(component: IComponent) {\n const tests = this._testsResults[component.id.toString()];\n return { testsResults: tests?.results, loading: tests?.loading || false };\n }\n\n /**\n * Get the tests patterns from the config. (used as default patterns in case the env does not provide them via getTestsDevPatterns)\n * @returns\n */\n getPatterns() {\n return this.patterns;\n }\n\n getComponentDevPatterns(component: Component) {\n const env = this.envs.calculateEnv(component).env;\n const componentPatterns: string[] = env.getTestsDevPatterns\n ? env.getTestsDevPatterns(component)\n : this.getPatterns();\n return componentPatterns;\n }\n\n getDevPatternToRegister() {\n return this.getComponentDevPatterns.bind(this);\n }\n\n /**\n * get all test files of a component.\n */\n getTestFiles(component: Component) {\n return detectTestFiles(component, this.devFiles);\n }\n\n private getOptions(options?: TesterOptions): TesterOptions {\n const defaults = {\n watch: false,\n debug: false,\n };\n\n return merge(defaults, options);\n }\n\n static defaultConfig = {\n /**\n * default test regex for which files tester to apply on.\n */\n patterns: ['**/*.spec.+(js|ts|jsx|tsx)', '**/*.test.+(js|ts|jsx|tsx)'],\n\n /**\n * determine whether to watch on start.\n */\n watchOnStart: true,\n };\n\n static async provider(\n [cli, envs, workspace, loggerAspect, graphql, ui, devFiles, builder]: [\n CLIMain,\n EnvsMain,\n Workspace,\n LoggerMain,\n GraphqlMain,\n UiMain,\n DevFilesMain,\n BuilderMain\n ],\n config: TesterExtensionConfig\n ) {\n const logger = loggerAspect.createLogger(TesterAspect.id);\n const testerService = new TesterService(workspace, logger, graphql.pubsub, devFiles);\n envs.registerService(testerService);\n const tester = new TesterMain(\n config.patterns,\n graphql,\n envs,\n workspace,\n testerService,\n new TesterTask(TesterAspect.id, devFiles),\n devFiles,\n builder\n );\n devFiles.registerDevPattern(tester.getDevPatternToRegister());\n\n if (workspace) {\n ui.registerOnStart(async () => {\n if (!config.watchOnStart) return undefined;\n await tester.uiWatch();\n return undefined;\n });\n }\n cli.register(new TestCmd(tester, workspace, logger));\n\n graphql.register(testerSchema(tester, graphql));\n\n return tester;\n }\n}\n\nTesterAspect.addRuntime(TesterMain);\n"],"mappings":"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"}
1
+ {"version":3,"names":["TesterMain","constructor","patterns","graphql","envs","workspace","service","task","devFiles","builder","test","components","opts","options","getOptions","envsRuntime","createEnvironment","env","runEnv","results","run","junit","generateJUnit","filePath","testsResults","map","envResult","data","flat","jUnit","testsResultsToJUnitFormat","compact","fs","outputFile","watch","onTestRunComplete","forEach","component","_testsResults","componentId","toString","uiWatch","list","debug","ui","getTestsResults","idHasVersion","entry","get","TesterAspect","id","isModified","getDataByAspect","tests","loading","getTestsResultsFromState","getPatterns","getComponentDevPatterns","calculateEnv","componentPatterns","getTestsDevPatterns","getDevPatternToRegister","bind","getTestFiles","detectTestFiles","defaults","merge","provider","cli","loggerAspect","config","logger","createLogger","testerService","TesterService","pubsub","registerService","tester","TesterTask","registerDevPattern","registerOnStart","watchOnStart","undefined","register","TestCmd","testerSchema","MainRuntime","CLIAspect","EnvsAspect","WorkspaceAspect","LoggerAspect","GraphqlAspect","UIAspect","DevFilesAspect","BuilderAspect","addRuntime"],"sources":["tester.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Component, IComponent } from '@teambit/component';\nimport compact from 'lodash.compact';\nimport { EnvsAspect, EnvsExecutionResult, EnvsMain } from '@teambit/envs';\nimport { LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { UiMain, UIAspect } from '@teambit/ui';\nimport { merge } from 'lodash';\nimport DevFilesAspect, { DevFilesMain } from '@teambit/dev-files';\nimport { TestsResult } from '@teambit/tests-results';\nimport { ComponentsResults, CallbackFn, Tests } from './tester';\nimport { TestCmd } from './test.cmd';\nimport { TesterAspect } from './tester.aspect';\nimport { TesterService } from './tester.service';\nimport { TesterTask } from './tester.task';\nimport { detectTestFiles } from './utils';\nimport { testerSchema } from './tester.graphql';\nimport { testsResultsToJUnitFormat } from './utils/junit-generator';\n\nexport type TesterExtensionConfig = {\n /**\n * regex of the text environment.\n */\n testRegex: string;\n\n /**\n * determine whether to watch on start.\n */\n watchOnStart: boolean;\n patterns: string[];\n};\n\nexport type TesterOptions = {\n /**\n * start the tester in watch mode.\n */\n watch: boolean;\n\n /**\n * start the tester in debug mode.\n */\n debug: boolean;\n\n /**\n * start the tester in debug mode.\n */\n ui?: boolean;\n\n /**\n * initiate the tester on given env.\n */\n env?: string;\n\n /**\n * generate JUnit files on the specified dir\n */\n junit?: string;\n\n /**\n * show code coverage\n */\n coverage?: boolean;\n\n callback?: CallbackFn;\n};\n\nexport class TesterMain {\n static runtime = MainRuntime;\n static dependencies = [\n CLIAspect,\n EnvsAspect,\n WorkspaceAspect,\n LoggerAspect,\n GraphqlAspect,\n UIAspect,\n DevFilesAspect,\n BuilderAspect,\n ];\n\n constructor(\n private patterns: string[],\n /**\n * graphql extension.\n */\n private graphql: GraphqlMain,\n\n /**\n * envs extension.\n */\n private envs: EnvsMain,\n\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * tester service.\n */\n readonly service: TesterService,\n\n /**\n * build task.\n */\n readonly task: TesterTask,\n\n private devFiles: DevFilesMain,\n\n private builder: BuilderMain\n ) {}\n\n _testsResults: { [componentId: string]: ComponentsResults } | undefined[] = [];\n\n async test(components: Component[], opts?: TesterOptions): Promise<EnvsExecutionResult<Tests>> {\n const options = this.getOptions(opts);\n const envsRuntime = await this.envs.createEnvironment(components);\n if (opts?.env) {\n return envsRuntime.runEnv(opts.env, this.service, options);\n }\n const results = await envsRuntime.run(this.service, options);\n if (opts?.junit) {\n await this.generateJUnit(opts?.junit, results);\n }\n return results;\n }\n\n private async generateJUnit(filePath: string, testsResults: EnvsExecutionResult<Tests>) {\n const components = testsResults.results.map((envResult) => envResult.data?.components).flat();\n const jUnit = testsResultsToJUnitFormat(compact(components));\n await fs.outputFile(filePath, jUnit);\n }\n\n /**\n * watch all components for changes and test upon each.\n */\n async watch(components: Component[], opts?: TesterOptions) {\n const options = this.getOptions(opts);\n const envsRuntime = await this.envs.createEnvironment(components);\n if (opts?.env) {\n return envsRuntime.runEnv(opts.env, this.service, options);\n }\n\n this.service.onTestRunComplete((results) => {\n results.components.forEach((component) => {\n this._testsResults[component.componentId.toString()] = component;\n });\n });\n return envsRuntime.run(this.service, options);\n }\n\n async uiWatch() {\n const components = await this.workspace.list();\n return this.watch(components, { watch: true, debug: false, ui: true });\n }\n\n async getTestsResults(\n component: IComponent,\n idHasVersion = true\n ): Promise<{ testsResults?: TestsResult; loading: boolean } | undefined> {\n const entry = component.get(TesterAspect.id);\n const isModified = !idHasVersion && (await component.isModified());\n const data = this.builder.getDataByAspect(component, TesterAspect.id) as { tests: TestsResult };\n if ((entry || data) && !isModified) {\n return { testsResults: data?.tests || entry?.data.tests, loading: false };\n }\n return this.getTestsResultsFromState(component);\n }\n\n private getTestsResultsFromState(component: IComponent) {\n const tests = this._testsResults[component.id.toString()];\n return { testsResults: tests?.results, loading: tests?.loading || false };\n }\n\n /**\n * Get the tests patterns from the config. (used as default patterns in case the env does not provide them via getTestsDevPatterns)\n * @returns\n */\n getPatterns() {\n return this.patterns;\n }\n\n getComponentDevPatterns(component: Component) {\n const env = this.envs.calculateEnv(component).env;\n const componentPatterns: string[] = env.getTestsDevPatterns\n ? env.getTestsDevPatterns(component)\n : this.getPatterns();\n return componentPatterns;\n }\n\n getDevPatternToRegister() {\n return this.getComponentDevPatterns.bind(this);\n }\n\n /**\n * get all test files of a component.\n */\n getTestFiles(component: Component) {\n return detectTestFiles(component, this.devFiles);\n }\n\n private getOptions(options?: TesterOptions): TesterOptions {\n const defaults = {\n watch: false,\n debug: false,\n };\n\n return merge(defaults, options);\n }\n\n static defaultConfig = {\n /**\n * default test regex for which files tester to apply on.\n */\n patterns: ['**/*.spec.+(js|ts|jsx|tsx)', '**/*.test.+(js|ts|jsx|tsx)'],\n\n /**\n * determine whether to watch on start.\n */\n watchOnStart: true,\n };\n\n static async provider(\n [cli, envs, workspace, loggerAspect, graphql, ui, devFiles, builder]: [\n CLIMain,\n EnvsMain,\n Workspace,\n LoggerMain,\n GraphqlMain,\n UiMain,\n DevFilesMain,\n BuilderMain\n ],\n config: TesterExtensionConfig\n ) {\n const logger = loggerAspect.createLogger(TesterAspect.id);\n const testerService = new TesterService(workspace, logger, graphql.pubsub, devFiles);\n envs.registerService(testerService);\n const tester = new TesterMain(\n config.patterns,\n graphql,\n envs,\n workspace,\n testerService,\n new TesterTask(TesterAspect.id, devFiles),\n devFiles,\n builder\n );\n devFiles.registerDevPattern(tester.getDevPatternToRegister());\n\n if (workspace) {\n ui.registerOnStart(async () => {\n if (!config.watchOnStart) return undefined;\n await tester.uiWatch();\n return undefined;\n });\n }\n cli.register(new TestCmd(tester, workspace, logger));\n\n graphql.register(testerSchema(tester, graphql));\n\n return tester;\n }\n}\n\nTesterAspect.addRuntime(TesterMain);\n"],"mappings":"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"}
@@ -1,111 +1,78 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.array.iterator.js");
6
-
7
5
  require("core-js/modules/es.promise.js");
8
-
9
6
  Object.defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
9
  exports.TesterService = exports.OnTestsChanged = void 0;
13
-
14
10
  function _defineProperty2() {
15
11
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
-
17
12
  _defineProperty2 = function () {
18
13
  return data;
19
14
  };
20
-
21
15
  return data;
22
16
  }
23
-
24
17
  function _path() {
25
18
  const data = require("path");
26
-
27
19
  _path = function () {
28
20
  return data;
29
21
  };
30
-
31
22
  return data;
32
23
  }
33
-
34
24
  function _react() {
35
25
  const data = _interopRequireDefault(require("react"));
36
-
37
26
  _react = function () {
38
27
  return data;
39
28
  };
40
-
41
29
  return data;
42
30
  }
43
-
44
31
  function _ink() {
45
32
  const data = require("ink");
46
-
47
33
  _ink = function () {
48
34
  return data;
49
35
  };
50
-
51
36
  return data;
52
37
  }
53
-
54
38
  function _component() {
55
39
  const data = require("@teambit/component");
56
-
57
40
  _component = function () {
58
41
  return data;
59
42
  };
60
-
61
43
  return data;
62
44
  }
63
-
64
45
  function _cliHighlight() {
65
46
  const data = _interopRequireDefault(require("cli-highlight"));
66
-
67
47
  _cliHighlight = function () {
68
48
  return data;
69
49
  };
70
-
71
50
  return data;
72
51
  }
73
-
74
52
  function _tester() {
75
53
  const data = require("./tester");
76
-
77
54
  _tester = function () {
78
55
  return data;
79
56
  };
80
-
81
57
  return data;
82
58
  }
83
-
84
59
  function _tester2() {
85
60
  const data = require("./tester.aspect");
86
-
87
61
  _tester2 = function () {
88
62
  return data;
89
63
  };
90
-
91
64
  return data;
92
65
  }
93
-
94
66
  function _utils() {
95
67
  const data = require("./utils");
96
-
97
68
  _utils = function () {
98
69
  return data;
99
70
  };
100
-
101
71
  return data;
102
72
  }
103
-
104
73
  const chalk = require('chalk');
105
-
106
74
  const OnTestsChanged = 'OnTestsChanged';
107
75
  exports.OnTestsChanged = OnTestsChanged;
108
-
109
76
  class TesterService {
110
77
  constructor(workspace, logger, pubsub, devFiles) {
111
78
  this.workspace = workspace;
@@ -115,7 +82,6 @@ class TesterService {
115
82
  (0, _defineProperty2().default)(this, "name", 'tester');
116
83
  (0, _defineProperty2().default)(this, "_callback", void 0);
117
84
  }
118
-
119
85
  render(env) {
120
86
  const descriptor = this.getDescriptor(env);
121
87
  return /*#__PURE__*/_react().default.createElement(_ink().Text, {
@@ -130,7 +96,6 @@ class TesterService {
130
96
  ignoreIllegals: true
131
97
  })), /*#__PURE__*/_react().default.createElement(_ink().Newline, null));
132
98
  }
133
-
134
99
  getDescriptor(environment) {
135
100
  if (!environment.env.getTester) return undefined;
136
101
  const tester = environment.env.getTester();
@@ -142,31 +107,24 @@ class TesterService {
142
107
  version: tester.version ? tester.version() : '?'
143
108
  };
144
109
  }
145
-
146
110
  onTestRunComplete(callback) {
147
111
  this._callback = callback;
148
112
  }
149
-
150
113
  async run(context, options) {
151
114
  const tester = context.env.getTester();
152
-
153
115
  const specFiles = _component().ComponentMap.as(context.components, component => {
154
116
  return (0, _utils().detectTestFiles)(component, this.devFiles);
155
117
  });
156
-
157
118
  const testCount = specFiles.toArray().reduce((acc, [, specs]) => acc + specs.length, 0);
158
119
  const componentWithTests = specFiles.toArray().reduce((acc, [, specs]) => {
159
120
  if (specs.length > 0) acc += 1;
160
121
  return acc;
161
122
  }, 0);
162
-
163
123
  if (testCount === 0 && !options.ui) {
164
124
  this.logger.consoleWarning(`no tests found for environment ${chalk.cyan(context.id)}\n`);
165
125
  return new (_tester().Tests)([]);
166
126
  }
167
-
168
127
  if (!options.ui) this.logger.console(`testing ${componentWithTests} components with environment ${chalk.cyan(context.id)}\n`);
169
-
170
128
  const patterns = _component().ComponentMap.as(context.components, component => {
171
129
  const componentDir = this.workspace.componentDir(component.id);
172
130
  const componentPatterns = this.devFiles.getDevPatterns(component, _tester2().TesterAspect.id);
@@ -178,13 +136,10 @@ class TesterService {
178
136
  })) || []
179
137
  };
180
138
  });
181
-
182
139
  let additionalHostDependencies = [];
183
-
184
140
  if (context.env.getAdditionalTestHostDependencies && typeof context.env.getAdditionalTestHostDependencies === 'function') {
185
141
  additionalHostDependencies = await context.env.getAdditionalTestHostDependencies();
186
142
  }
187
-
188
143
  const testerContext = Object.assign(context, {
189
144
  release: false,
190
145
  specFiles,
@@ -197,7 +152,6 @@ class TesterService {
197
152
  coverage: options.coverage,
198
153
  additionalHostDependencies
199
154
  });
200
-
201
155
  if (options.watch && options.ui && tester.watch) {
202
156
  if (tester.onTestRunComplete) {
203
157
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
@@ -215,16 +169,12 @@ class TesterService {
215
169
  });
216
170
  });
217
171
  }
218
-
219
172
  return tester.watch(testerContext);
220
173
  }
221
-
222
174
  const results = await tester.test(testerContext);
223
175
  return results;
224
176
  }
225
-
226
177
  }
227
-
228
178
  exports.TesterService = TesterService;
229
179
 
230
180
  //# sourceMappingURL=tester.service.js.map