@teambit/tester 1.0.106 → 1.0.108
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/dist/{preview-1703505948637.js → preview-1703647408454.js} +2 -2
- package/dist/test.cmd.d.ts +4 -4
- package/dist/tester.composition.d.ts +2 -2
- package/dist/tester.d.ts +5 -5
- package/dist/tester.main.runtime.d.ts +3 -6
- package/dist/tester.main.runtime.js +9 -13
- package/dist/tester.main.runtime.js.map +1 -1
- package/dist/tester.service.d.ts +5 -5
- package/dist/tester.service.js +4 -4
- package/dist/tester.service.js.map +1 -1
- package/dist/tester.task.js +1 -2
- package/dist/tester.task.js.map +1 -1
- package/dist/tester.ui.runtime.d.ts +3 -3
- package/dist/tests.section.d.ts +2 -2
- package/dist/utils/junit-generator.js +3 -5
- package/dist/utils/junit-generator.js.map +1 -1
- package/index.ts +18 -0
- package/package.json +24 -31
- package/tester-env.ts +6 -0
- package/tester.aspect.ts +7 -0
- package/tester.graphql.ts +80 -0
- package/tester.main.runtime.ts +268 -0
- package/tester.task.ts +116 -0
- package/tester.ts +172 -0
- package/tsconfig.json +16 -21
- package/types/asset.d.ts +15 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@1.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@1.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@1.0.108/dist/tester.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@1.0.108/dist/tester.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
package/dist/test.cmd.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { Command, CommandOptions } from '@teambit/cli';
|
|
2
3
|
import { Logger } from '@teambit/logger';
|
|
3
4
|
import { Workspace } from '@teambit/workspace';
|
|
4
|
-
import React from 'react';
|
|
5
5
|
import type { TesterMain } from './tester.main.runtime';
|
|
6
|
-
|
|
6
|
+
type TestFlags = {
|
|
7
7
|
watch: boolean;
|
|
8
8
|
debug: boolean;
|
|
9
9
|
all: boolean;
|
|
@@ -28,9 +28,9 @@ export declare class TestCmd implements Command {
|
|
|
28
28
|
group: string;
|
|
29
29
|
options: CommandOptions;
|
|
30
30
|
constructor(tester: TesterMain, workspace: Workspace, logger: Logger);
|
|
31
|
-
render([userPattern]: [string], { watch, debug, all, env, scope, junit, coverage, unmodified }: TestFlags): Promise<
|
|
31
|
+
render([userPattern]: [string], { watch, debug, all, env, scope, junit, coverage, unmodified }: TestFlags): Promise<JSX.Element | {
|
|
32
32
|
code: number;
|
|
33
|
-
data:
|
|
33
|
+
data: JSX.Element;
|
|
34
34
|
}>;
|
|
35
35
|
}
|
|
36
36
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const Logo: () =>
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const Logo: () => JSX.Element;
|
package/dist/tester.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare class Tests {
|
|
|
7
7
|
constructor(components: ComponentsResults[]);
|
|
8
8
|
get errors(): Error[];
|
|
9
9
|
}
|
|
10
|
-
export
|
|
10
|
+
export type ComponentsResults = {
|
|
11
11
|
/**
|
|
12
12
|
* component id.
|
|
13
13
|
*/
|
|
@@ -25,8 +25,8 @@ export declare type ComponentsResults = {
|
|
|
25
25
|
*/
|
|
26
26
|
loading?: boolean;
|
|
27
27
|
};
|
|
28
|
-
export
|
|
29
|
-
export
|
|
28
|
+
export type SpecFiles = ComponentMap<AbstractVinyl[]>;
|
|
29
|
+
export type ComponentPatternsEntry = {
|
|
30
30
|
/**
|
|
31
31
|
* component directory in the workspace.
|
|
32
32
|
*/
|
|
@@ -43,7 +43,7 @@ export declare type ComponentPatternsEntry = {
|
|
|
43
43
|
*/
|
|
44
44
|
packageRootDir: string;
|
|
45
45
|
};
|
|
46
|
-
export
|
|
46
|
+
export type ComponentPatternsMap = ComponentMap<ComponentPatternsEntry>;
|
|
47
47
|
export interface TesterContext extends ExecutionContext {
|
|
48
48
|
/**
|
|
49
49
|
* whether the tester run for release (during bit build/tag) or not (during bit test command).
|
|
@@ -140,4 +140,4 @@ export interface Tester {
|
|
|
140
140
|
*/
|
|
141
141
|
version(): string;
|
|
142
142
|
}
|
|
143
|
-
export
|
|
143
|
+
export type CallbackFn = (testSuite: Tests) => void;
|
|
@@ -11,7 +11,7 @@ import { TestsResult } from '@teambit/tests-results';
|
|
|
11
11
|
import { ComponentsResults, CallbackFn, Tests } from './tester';
|
|
12
12
|
import { TesterService } from './tester.service';
|
|
13
13
|
import { TesterTask } from './tester.task';
|
|
14
|
-
export
|
|
14
|
+
export type TesterExtensionConfig = {
|
|
15
15
|
/**
|
|
16
16
|
* regex of the text environment.
|
|
17
17
|
*/
|
|
@@ -22,7 +22,7 @@ export declare type TesterExtensionConfig = {
|
|
|
22
22
|
watchOnStart: boolean;
|
|
23
23
|
patterns: string[];
|
|
24
24
|
};
|
|
25
|
-
export
|
|
25
|
+
export type TesterOptions = {
|
|
26
26
|
/**
|
|
27
27
|
* start the tester in watch mode.
|
|
28
28
|
*/
|
|
@@ -120,10 +120,7 @@ export declare class TesterMain {
|
|
|
120
120
|
name: string;
|
|
121
121
|
pattern: string[];
|
|
122
122
|
};
|
|
123
|
-
getDevPatternToRegister():
|
|
124
|
-
name: string;
|
|
125
|
-
pattern: string[];
|
|
126
|
-
};
|
|
123
|
+
getDevPatternToRegister(): any;
|
|
127
124
|
/**
|
|
128
125
|
* get all test files of a component.
|
|
129
126
|
*/
|
|
@@ -169,20 +169,17 @@ class TesterMain {
|
|
|
169
169
|
async test(components, opts) {
|
|
170
170
|
const options = this.getOptions(opts);
|
|
171
171
|
const envsRuntime = await this.envs.createEnvironment(components);
|
|
172
|
-
if (opts
|
|
172
|
+
if (opts?.env) {
|
|
173
173
|
return envsRuntime.runEnv(opts.env, this.service, options);
|
|
174
174
|
}
|
|
175
175
|
const results = await envsRuntime.run(this.service, options);
|
|
176
|
-
if (opts
|
|
177
|
-
await this.generateJUnit(opts
|
|
176
|
+
if (opts?.junit) {
|
|
177
|
+
await this.generateJUnit(opts?.junit, results);
|
|
178
178
|
}
|
|
179
179
|
return results;
|
|
180
180
|
}
|
|
181
181
|
async generateJUnit(filePath, testsResults) {
|
|
182
|
-
const components = testsResults.results.map(envResult =>
|
|
183
|
-
var _envResult$data;
|
|
184
|
-
return (_envResult$data = envResult.data) === null || _envResult$data === void 0 ? void 0 : _envResult$data.components;
|
|
185
|
-
}).flat();
|
|
182
|
+
const components = testsResults.results.map(envResult => envResult.data?.components).flat();
|
|
186
183
|
const jUnit = (0, _junitGenerator().testsResultsToJUnitFormat)((0, _lodash().default)(components));
|
|
187
184
|
await _fsExtra().default.outputFile(filePath, jUnit);
|
|
188
185
|
}
|
|
@@ -193,7 +190,7 @@ class TesterMain {
|
|
|
193
190
|
async watch(components, opts) {
|
|
194
191
|
const options = this.getOptions(opts);
|
|
195
192
|
const envsRuntime = await this.envs.createEnvironment(components);
|
|
196
|
-
if (opts
|
|
193
|
+
if (opts?.env) {
|
|
197
194
|
return envsRuntime.runEnv(opts.env, this.service, options);
|
|
198
195
|
}
|
|
199
196
|
this.service.onTestRunComplete(results => {
|
|
@@ -217,7 +214,7 @@ class TesterMain {
|
|
|
217
214
|
const data = this.builder.getDataByAspect(component, _tester().TesterAspect.id);
|
|
218
215
|
if ((entry || data) && !isModified) {
|
|
219
216
|
return {
|
|
220
|
-
testsResults:
|
|
217
|
+
testsResults: data?.tests || entry?.data.tests,
|
|
221
218
|
loading: false
|
|
222
219
|
};
|
|
223
220
|
}
|
|
@@ -226,8 +223,8 @@ class TesterMain {
|
|
|
226
223
|
getTestsResultsFromState(component) {
|
|
227
224
|
const tests = this._testsResults[component.id.toString()];
|
|
228
225
|
return {
|
|
229
|
-
testsResults: tests
|
|
230
|
-
loading:
|
|
226
|
+
testsResults: tests?.results,
|
|
227
|
+
loading: tests?.loading || false
|
|
231
228
|
};
|
|
232
229
|
}
|
|
233
230
|
|
|
@@ -239,9 +236,8 @@ class TesterMain {
|
|
|
239
236
|
return this.patterns;
|
|
240
237
|
}
|
|
241
238
|
getComponentDevPatterns(component) {
|
|
242
|
-
var _this$workspace;
|
|
243
239
|
const env = this.envs.calculateEnv(component, {
|
|
244
|
-
skipWarnings: !!
|
|
240
|
+
skipWarnings: !!this.workspace?.inInstallContext
|
|
245
241
|
}).env;
|
|
246
242
|
const componentPatterns = env.getTestsDevPatterns ? env.getTestsDevPatterns(component) : this.getPatterns();
|
|
247
243
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_cli","_lodash","_envs","_logger","_workspace","_graphql","_builder","_ui","_lodash2","_devFiles","_test","_tester","_tester2","_tester3","_utils","_tester4","_junitGenerator","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","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","_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","_this$workspace","calculateEnv","skipWarnings","inInstallContext","componentPatterns","getTestsDevPatterns","name","pattern","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","exports","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, { skipWarnings: !!this.workspace?.inInstallContext }).env;\n const componentPatterns: string[] = env.getTestsDevPatterns\n ? env.getTestsDevPatterns(component)\n : this.getPatterns();\n return { name: 'tests', pattern: 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: false,\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":["_fsExtra","data","_interopRequireDefault","require","_cli","_lodash","_envs","_logger","_workspace","_graphql","_builder","_ui","_lodash2","_devFiles","_test","_tester","_tester2","_tester3","_utils","_tester4","_junitGenerator","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","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","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","skipWarnings","inInstallContext","componentPatterns","getTestsDevPatterns","name","pattern","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","exports","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, { skipWarnings: !!this.workspace?.inInstallContext }).env;\n const componentPatterns: string[] = env.getTestsDevPatterns\n ? env.getTestsDevPatterns(component)\n : this.getPatterns();\n return { name: 'tests', pattern: 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: false,\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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"}
|
package/dist/tester.service.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { Logger } from '@teambit/logger';
|
|
2
|
-
import React from 'react';
|
|
3
3
|
import { EnvService, ExecutionContext, EnvDefinition, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';
|
|
4
4
|
import { Workspace } from '@teambit/workspace';
|
|
5
5
|
import { PubSubEngine } from 'graphql-subscriptions';
|
|
@@ -7,10 +7,10 @@ import { DevFilesMain } from '@teambit/dev-files';
|
|
|
7
7
|
import { Tester, Tests, CallbackFn } from './tester';
|
|
8
8
|
import { TesterOptions } from './tester.main.runtime';
|
|
9
9
|
export declare const OnTestsChanged = "OnTestsChanged";
|
|
10
|
-
|
|
10
|
+
type TesterTransformationMap = ServiceTransformationMap & {
|
|
11
11
|
getTester: () => Tester;
|
|
12
12
|
};
|
|
13
|
-
export
|
|
13
|
+
export type TesterDescriptor = {
|
|
14
14
|
/**
|
|
15
15
|
* id of the tester (e.g. jest/mocha)
|
|
16
16
|
*/
|
|
@@ -37,14 +37,14 @@ export declare class TesterService implements EnvService<Tests, TesterDescriptor
|
|
|
37
37
|
name: string;
|
|
38
38
|
constructor(workspace: Workspace, logger: Logger, pubsub: PubSubEngine, devFiles: DevFilesMain);
|
|
39
39
|
_callback: CallbackFn | undefined;
|
|
40
|
-
render(env: EnvDefinition):
|
|
40
|
+
render(env: EnvDefinition): JSX.Element;
|
|
41
41
|
getDescriptor(environment: EnvDefinition): {
|
|
42
42
|
id: string;
|
|
43
43
|
displayName: string;
|
|
44
44
|
icon: string;
|
|
45
45
|
config: string;
|
|
46
46
|
version: string;
|
|
47
|
-
}
|
|
47
|
+
};
|
|
48
48
|
transform(env: Env, context: EnvContext): TesterTransformationMap | undefined;
|
|
49
49
|
onTestRunComplete(callback: CallbackFn): void;
|
|
50
50
|
run(context: ExecutionContext, options: TesterOptions): Promise<Tests>;
|
package/dist/tester.service.js
CHANGED
|
@@ -78,13 +78,13 @@ class TesterService {
|
|
|
78
78
|
render(env) {
|
|
79
79
|
const descriptor = this.getDescriptor(env);
|
|
80
80
|
return /*#__PURE__*/_react().default.createElement(_ink().Text, {
|
|
81
|
-
key: descriptor
|
|
81
|
+
key: descriptor?.id
|
|
82
82
|
}, /*#__PURE__*/_react().default.createElement(_ink().Text, {
|
|
83
83
|
color: "cyan"
|
|
84
|
-
}, "configured tester: "), /*#__PURE__*/_react().default.createElement(_ink().Text, null, descriptor
|
|
84
|
+
}, "configured tester: "), /*#__PURE__*/_react().default.createElement(_ink().Text, null, descriptor?.id, " (", descriptor?.displayName, " @ ", descriptor?.version, ")"), /*#__PURE__*/_react().default.createElement(_ink().Newline, null), /*#__PURE__*/_react().default.createElement(_ink().Text, {
|
|
85
85
|
underline: true,
|
|
86
86
|
color: "cyan"
|
|
87
|
-
}, "tester config:"), /*#__PURE__*/_react().default.createElement(_ink().Newline, null), /*#__PURE__*/_react().default.createElement(_ink().Text, null, (0, _cliHighlight().default)(
|
|
87
|
+
}, "tester config:"), /*#__PURE__*/_react().default.createElement(_ink().Newline, null), /*#__PURE__*/_react().default.createElement(_ink().Text, null, (0, _cliHighlight().default)(descriptor?.config || '', {
|
|
88
88
|
language: 'javascript',
|
|
89
89
|
ignoreIllegals: true
|
|
90
90
|
})), /*#__PURE__*/_react().default.createElement(_ink().Newline, null));
|
|
@@ -102,7 +102,7 @@ class TesterService {
|
|
|
102
102
|
}
|
|
103
103
|
transform(env, context) {
|
|
104
104
|
// Old env
|
|
105
|
-
if (!
|
|
105
|
+
if (!env?.tester) return undefined;
|
|
106
106
|
return {
|
|
107
107
|
getTester: () => env.tester()(context)
|
|
108
108
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_path","data","require","_react","_interopRequireDefault","_ink","_component","_cliHighlight","_tester","_tester2","_utils","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","chalk","OnTestsChanged","exports","TesterService","constructor","workspace","logger","pubsub","devFiles","render","env","descriptor","getDescriptor","createElement","Text","id","color","displayName","version","Newline","underline","highlight","config","language","ignoreIllegals","environment","getTester","undefined","tester","icon","displayConfig","transform","context","onTestRunComplete","callback","_callback","run","options","specFiles","ComponentMap","as","components","component","detectTestFiles","testCount","toArray","reduce","acc","specs","length","componentWithTests","ui","consoleWarning","cyan","Tests","console","patterns","asAsync","componentDir","componentPatterns","getDevPatterns","TesterAspect","packageRootDir","getComponentPackagePath","paths","map","pattern","path","resolve","relative","additionalHostDependencies","getAdditionalTestHostDependencies","testerContext","assign","release","rootPath","debug","watch","coverage","results","forEach","publish","testsChanged","componentId","toString","testsResults","loading","test"],"sources":["tester.service.tsx"],"sourcesContent":["import { Logger } from '@teambit/logger';\nimport { resolve } from 'path';\nimport React from 'react';\nimport { Text, Newline } from 'ink';\nimport { EnvService, ExecutionContext, EnvDefinition, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';\nimport { ComponentMap } from '@teambit/component';\nimport { Workspace } from '@teambit/workspace';\nimport highlight from 'cli-highlight';\nimport { PubSubEngine } from 'graphql-subscriptions';\nimport { DevFilesMain } from '@teambit/dev-files';\nimport { Tester, Tests, CallbackFn } from './tester';\nimport { TesterAspect } from './tester.aspect';\nimport { TesterOptions } from './tester.main.runtime';\nimport { detectTestFiles } from './utils';\n\nconst chalk = require('chalk');\n\nexport const OnTestsChanged = 'OnTestsChanged';\n\ntype TesterTransformationMap = ServiceTransformationMap & {\n getTester: () => Tester;\n};\n\nexport type TesterDescriptor = {\n /**\n * id of the tester (e.g. jest/mocha)\n */\n id: string;\n\n /**\n * display name of the tester (e.g. Jest / Mocha)\n */\n displayName: string;\n\n /**\n * icon of the configured tester.\n */\n icon: string;\n\n /**\n * string containing the config for display.\n */\n config: string;\n\n version?: string;\n};\n\nexport class TesterService implements EnvService<Tests, TesterDescriptor> {\n name = 'tester';\n\n constructor(\n readonly workspace: Workspace,\n\n private logger: Logger,\n\n private pubsub: PubSubEngine,\n\n private devFiles: DevFilesMain\n ) {}\n\n _callback: CallbackFn | undefined;\n\n render(env: EnvDefinition) {\n const descriptor = this.getDescriptor(env);\n return (\n <Text key={descriptor?.id}>\n <Text color=\"cyan\">configured tester: </Text>\n <Text>\n {descriptor?.id} ({descriptor?.displayName} @ {descriptor?.version})\n </Text>\n <Newline />\n <Text underline color=\"cyan\">\n tester config:\n </Text>\n <Newline />\n <Text>\n {/* refactor a separate component which highlights for cli */}\n {highlight(descriptor?.config || '', { language: 'javascript', ignoreIllegals: true })}\n </Text>\n <Newline />\n </Text>\n );\n }\n\n getDescriptor(environment: EnvDefinition) {\n if (!environment.env.getTester) return undefined;\n const tester: Tester = environment.env.getTester();\n\n return {\n id: tester.id || '',\n displayName: tester.displayName || '',\n icon: tester.icon || '',\n config: tester.displayConfig ? tester.displayConfig() : '',\n version: tester.version ? tester.version() : '?',\n };\n }\n\n transform(env: Env, context: EnvContext): TesterTransformationMap | undefined {\n // Old env\n if (!env?.tester) return undefined;\n\n return {\n getTester: () => env.tester()(context),\n };\n }\n\n onTestRunComplete(callback: CallbackFn) {\n this._callback = callback;\n }\n\n async run(context: ExecutionContext, options: TesterOptions): Promise<Tests> {\n const tester: Tester = context.env.getTester();\n const specFiles = ComponentMap.as(context.components, (component) => {\n return detectTestFiles(component, this.devFiles);\n });\n const testCount = specFiles.toArray().reduce((acc, [, specs]) => acc + specs.length, 0);\n\n const componentWithTests = specFiles.toArray().reduce((acc: number, [, specs]) => {\n if (specs.length > 0) acc += 1;\n return acc;\n }, 0);\n\n if (testCount === 0 && !options.ui) {\n this.logger.consoleWarning(`no tests found for components using environment ${chalk.cyan(context.id)}\\n`);\n return new Tests([]);\n }\n\n if (!options.ui)\n this.logger.console(`testing ${componentWithTests} components with environment ${chalk.cyan(context.id)}\\n`);\n\n const patterns = await ComponentMap.asAsync(context.components, async (component) => {\n const componentDir = this.workspace.componentDir(component.id);\n const componentPatterns = this.devFiles.getDevPatterns(component, TesterAspect.id);\n const packageRootDir = await this.workspace.getComponentPackagePath(component);\n\n return {\n componentDir,\n packageRootDir,\n paths:\n componentPatterns.map((pattern: string) => ({\n path: resolve(componentDir, pattern),\n relative: pattern,\n })) || [],\n };\n });\n\n let additionalHostDependencies = [];\n if (\n context.env.getAdditionalTestHostDependencies &&\n typeof context.env.getAdditionalTestHostDependencies === 'function'\n ) {\n additionalHostDependencies = await context.env.getAdditionalTestHostDependencies();\n }\n\n const testerContext = Object.assign(context, {\n release: false,\n specFiles,\n patterns,\n rootPath: this.workspace.path,\n workspace: this.workspace,\n debug: options.debug,\n watch: options.watch,\n ui: options.ui,\n coverage: options.coverage,\n additionalHostDependencies,\n });\n\n if (options.watch && options.ui && tester.watch) {\n if (tester.onTestRunComplete) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tester.onTestRunComplete((results) => {\n if (this._callback) this._callback(results);\n results.components.forEach((component) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.pubsub.publish(OnTestsChanged, {\n testsChanged: {\n id: component.componentId.toString(),\n testsResults: component.results,\n loading: component.loading,\n },\n });\n });\n });\n }\n\n return tester.watch(testerContext);\n }\n\n const results = await tester.test(testerContext);\n\n return results;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_path","data","require","_react","_interopRequireDefault","_ink","_component","_cliHighlight","_tester","_tester2","_utils","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","chalk","OnTestsChanged","exports","TesterService","constructor","workspace","logger","pubsub","devFiles","render","env","descriptor","getDescriptor","createElement","Text","id","color","displayName","version","Newline","underline","highlight","config","language","ignoreIllegals","environment","getTester","undefined","tester","icon","displayConfig","transform","context","onTestRunComplete","callback","_callback","run","options","specFiles","ComponentMap","as","components","component","detectTestFiles","testCount","toArray","reduce","acc","specs","length","componentWithTests","ui","consoleWarning","cyan","Tests","console","patterns","asAsync","componentDir","componentPatterns","getDevPatterns","TesterAspect","packageRootDir","getComponentPackagePath","paths","map","pattern","path","resolve","relative","additionalHostDependencies","getAdditionalTestHostDependencies","testerContext","assign","release","rootPath","debug","watch","coverage","results","forEach","publish","testsChanged","componentId","toString","testsResults","loading","test"],"sources":["tester.service.tsx"],"sourcesContent":["import { Logger } from '@teambit/logger';\nimport { resolve } from 'path';\nimport React from 'react';\nimport { Text, Newline } from 'ink';\nimport { EnvService, ExecutionContext, EnvDefinition, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';\nimport { ComponentMap } from '@teambit/component';\nimport { Workspace } from '@teambit/workspace';\nimport highlight from 'cli-highlight';\nimport { PubSubEngine } from 'graphql-subscriptions';\nimport { DevFilesMain } from '@teambit/dev-files';\nimport { Tester, Tests, CallbackFn } from './tester';\nimport { TesterAspect } from './tester.aspect';\nimport { TesterOptions } from './tester.main.runtime';\nimport { detectTestFiles } from './utils';\n\nconst chalk = require('chalk');\n\nexport const OnTestsChanged = 'OnTestsChanged';\n\ntype TesterTransformationMap = ServiceTransformationMap & {\n getTester: () => Tester;\n};\n\nexport type TesterDescriptor = {\n /**\n * id of the tester (e.g. jest/mocha)\n */\n id: string;\n\n /**\n * display name of the tester (e.g. Jest / Mocha)\n */\n displayName: string;\n\n /**\n * icon of the configured tester.\n */\n icon: string;\n\n /**\n * string containing the config for display.\n */\n config: string;\n\n version?: string;\n};\n\nexport class TesterService implements EnvService<Tests, TesterDescriptor> {\n name = 'tester';\n\n constructor(\n readonly workspace: Workspace,\n\n private logger: Logger,\n\n private pubsub: PubSubEngine,\n\n private devFiles: DevFilesMain\n ) {}\n\n _callback: CallbackFn | undefined;\n\n render(env: EnvDefinition) {\n const descriptor = this.getDescriptor(env);\n return (\n <Text key={descriptor?.id}>\n <Text color=\"cyan\">configured tester: </Text>\n <Text>\n {descriptor?.id} ({descriptor?.displayName} @ {descriptor?.version})\n </Text>\n <Newline />\n <Text underline color=\"cyan\">\n tester config:\n </Text>\n <Newline />\n <Text>\n {/* refactor a separate component which highlights for cli */}\n {highlight(descriptor?.config || '', { language: 'javascript', ignoreIllegals: true })}\n </Text>\n <Newline />\n </Text>\n );\n }\n\n getDescriptor(environment: EnvDefinition) {\n if (!environment.env.getTester) return undefined;\n const tester: Tester = environment.env.getTester();\n\n return {\n id: tester.id || '',\n displayName: tester.displayName || '',\n icon: tester.icon || '',\n config: tester.displayConfig ? tester.displayConfig() : '',\n version: tester.version ? tester.version() : '?',\n };\n }\n\n transform(env: Env, context: EnvContext): TesterTransformationMap | undefined {\n // Old env\n if (!env?.tester) return undefined;\n\n return {\n getTester: () => env.tester()(context),\n };\n }\n\n onTestRunComplete(callback: CallbackFn) {\n this._callback = callback;\n }\n\n async run(context: ExecutionContext, options: TesterOptions): Promise<Tests> {\n const tester: Tester = context.env.getTester();\n const specFiles = ComponentMap.as(context.components, (component) => {\n return detectTestFiles(component, this.devFiles);\n });\n const testCount = specFiles.toArray().reduce((acc, [, specs]) => acc + specs.length, 0);\n\n const componentWithTests = specFiles.toArray().reduce((acc: number, [, specs]) => {\n if (specs.length > 0) acc += 1;\n return acc;\n }, 0);\n\n if (testCount === 0 && !options.ui) {\n this.logger.consoleWarning(`no tests found for components using environment ${chalk.cyan(context.id)}\\n`);\n return new Tests([]);\n }\n\n if (!options.ui)\n this.logger.console(`testing ${componentWithTests} components with environment ${chalk.cyan(context.id)}\\n`);\n\n const patterns = await ComponentMap.asAsync(context.components, async (component) => {\n const componentDir = this.workspace.componentDir(component.id);\n const componentPatterns = this.devFiles.getDevPatterns(component, TesterAspect.id);\n const packageRootDir = await this.workspace.getComponentPackagePath(component);\n\n return {\n componentDir,\n packageRootDir,\n paths:\n componentPatterns.map((pattern: string) => ({\n path: resolve(componentDir, pattern),\n relative: pattern,\n })) || [],\n };\n });\n\n let additionalHostDependencies = [];\n if (\n context.env.getAdditionalTestHostDependencies &&\n typeof context.env.getAdditionalTestHostDependencies === 'function'\n ) {\n additionalHostDependencies = await context.env.getAdditionalTestHostDependencies();\n }\n\n const testerContext = Object.assign(context, {\n release: false,\n specFiles,\n patterns,\n rootPath: this.workspace.path,\n workspace: this.workspace,\n debug: options.debug,\n watch: options.watch,\n ui: options.ui,\n coverage: options.coverage,\n additionalHostDependencies,\n });\n\n if (options.watch && options.ui && tester.watch) {\n if (tester.onTestRunComplete) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tester.onTestRunComplete((results) => {\n if (this._callback) this._callback(results);\n results.components.forEach((component) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.pubsub.publish(OnTestsChanged, {\n testsChanged: {\n id: component.componentId.toString(),\n testsResults: component.results,\n loading: component.loading,\n },\n });\n });\n });\n }\n\n return tester.watch(testerContext);\n }\n\n const results = await tester.test(testerContext);\n\n return results;\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,OAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,KAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,IAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAK,WAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,UAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAM,cAAA;EAAA,MAAAN,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAK,aAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAO,QAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,OAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,SAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,QAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAS,OAAA;EAAA,MAAAT,IAAA,GAAAC,OAAA;EAAAQ,MAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0C,SAAAG,uBAAAO,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAJ,GAAA,IAAAO,MAAA,CAAAC,cAAA,CAAAR,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAX,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AAAA,SAAAM,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA;AAE1C,MAAMW,KAAK,GAAGhC,OAAO,CAAC,OAAO,CAAC;AAEvB,MAAMiC,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,gBAAgB;AA8BvC,MAAME,aAAa,CAAgD;EAGxEC,WAAWA,CACAC,SAAoB,EAErBC,MAAc,EAEdC,MAAoB,EAEpBC,QAAsB,EAC9B;IAAA,KAPSH,SAAoB,GAApBA,SAAoB;IAAA,KAErBC,MAAc,GAAdA,MAAc;IAAA,KAEdC,MAAoB,GAApBA,MAAoB;IAAA,KAEpBC,QAAsB,GAAtBA,QAAsB;IAAA5B,eAAA,eATzB,QAAQ;IAAAA,eAAA;EAUZ;EAIH6B,MAAMA,CAACC,GAAkB,EAAE;IACzB,MAAMC,UAAU,GAAG,IAAI,CAACC,aAAa,CAACF,GAAG,CAAC;IAC1C,oBACEzC,MAAA,GAAAU,OAAA,CAAAkC,aAAA,CAAC1C,IAAA,GAAA2C,IAAI;MAACjC,GAAG,EAAE8B,UAAU,EAAEI;IAAG,gBACxB9C,MAAA,GAAAU,OAAA,CAAAkC,aAAA,CAAC1C,IAAA,GAAA2C,IAAI;MAACE,KAAK,EAAC;IAAM,GAAC,qBAAyB,CAAC,eAC7C/C,MAAA,GAAAU,OAAA,CAAAkC,aAAA,CAAC1C,IAAA,GAAA2C,IAAI,QACFH,UAAU,EAAEI,EAAE,EAAC,IAAE,EAACJ,UAAU,EAAEM,WAAW,EAAC,KAAG,EAACN,UAAU,EAAEO,OAAO,EAAC,GAC/D,CAAC,eACPjD,MAAA,GAAAU,OAAA,CAAAkC,aAAA,CAAC1C,IAAA,GAAAgD,OAAO,MAAE,CAAC,eACXlD,MAAA,GAAAU,OAAA,CAAAkC,aAAA,CAAC1C,IAAA,GAAA2C,IAAI;MAACM,SAAS;MAACJ,KAAK,EAAC;IAAM,GAAC,gBAEvB,CAAC,eACP/C,MAAA,GAAAU,OAAA,CAAAkC,aAAA,CAAC1C,IAAA,GAAAgD,OAAO,MAAE,CAAC,eACXlD,MAAA,GAAAU,OAAA,CAAAkC,aAAA,CAAC1C,IAAA,GAAA2C,IAAI,QAEF,IAAAO,uBAAS,EAACV,UAAU,EAAEW,MAAM,IAAI,EAAE,EAAE;MAAEC,QAAQ,EAAE,YAAY;MAAEC,cAAc,EAAE;IAAK,CAAC,CACjF,CAAC,eACPvD,MAAA,GAAAU,OAAA,CAAAkC,aAAA,CAAC1C,IAAA,GAAAgD,OAAO,MAAE,CACN,CAAC;EAEX;EAEAP,aAAaA,CAACa,WAA0B,EAAE;IACxC,IAAI,CAACA,WAAW,CAACf,GAAG,CAACgB,SAAS,EAAE,OAAOC,SAAS;IAChD,MAAMC,MAAc,GAAGH,WAAW,CAACf,GAAG,CAACgB,SAAS,CAAC,CAAC;IAElD,OAAO;MACLX,EAAE,EAAEa,MAAM,CAACb,EAAE,IAAI,EAAE;MACnBE,WAAW,EAAEW,MAAM,CAACX,WAAW,IAAI,EAAE;MACrCY,IAAI,EAAED,MAAM,CAACC,IAAI,IAAI,EAAE;MACvBP,MAAM,EAAEM,MAAM,CAACE,aAAa,GAAGF,MAAM,CAACE,aAAa,CAAC,CAAC,GAAG,EAAE;MAC1DZ,OAAO,EAAEU,MAAM,CAACV,OAAO,GAAGU,MAAM,CAACV,OAAO,CAAC,CAAC,GAAG;IAC/C,CAAC;EACH;EAEAa,SAASA,CAACrB,GAAQ,EAAEsB,OAAmB,EAAuC;IAC5E;IACA,IAAI,CAACtB,GAAG,EAAEkB,MAAM,EAAE,OAAOD,SAAS;IAElC,OAAO;MACLD,SAAS,EAAEA,CAAA,KAAMhB,GAAG,CAACkB,MAAM,CAAC,CAAC,CAACI,OAAO;IACvC,CAAC;EACH;EAEAC,iBAAiBA,CAACC,QAAoB,EAAE;IACtC,IAAI,CAACC,SAAS,GAAGD,QAAQ;EAC3B;EAEA,MAAME,GAAGA,CAACJ,OAAyB,EAAEK,OAAsB,EAAkB;IAC3E,MAAMT,MAAc,GAAGI,OAAO,CAACtB,GAAG,CAACgB,SAAS,CAAC,CAAC;IAC9C,MAAMY,SAAS,GAAGC,yBAAY,CAACC,EAAE,CAACR,OAAO,CAACS,UAAU,EAAGC,SAAS,IAAK;MACnE,OAAO,IAAAC,wBAAe,EAACD,SAAS,EAAE,IAAI,CAAClC,QAAQ,CAAC;IAClD,CAAC,CAAC;IACF,MAAMoC,SAAS,GAAGN,SAAS,CAACO,OAAO,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,GAAG,EAAE,GAAGC,KAAK,CAAC,KAAKD,GAAG,GAAGC,KAAK,CAACC,MAAM,EAAE,CAAC,CAAC;IAEvF,MAAMC,kBAAkB,GAAGZ,SAAS,CAACO,OAAO,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,GAAW,EAAE,GAAGC,KAAK,CAAC,KAAK;MAChF,IAAIA,KAAK,CAACC,MAAM,GAAG,CAAC,EAAEF,GAAG,IAAI,CAAC;MAC9B,OAAOA,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC;IAEL,IAAIH,SAAS,KAAK,CAAC,IAAI,CAACP,OAAO,CAACc,EAAE,EAAE;MAClC,IAAI,CAAC7C,MAAM,CAAC8C,cAAc,CAAE,mDAAkDpD,KAAK,CAACqD,IAAI,CAACrB,OAAO,CAACjB,EAAE,CAAE,IAAG,CAAC;MACzG,OAAO,KAAIuC,eAAK,EAAC,EAAE,CAAC;IACtB;IAEA,IAAI,CAACjB,OAAO,CAACc,EAAE,EACb,IAAI,CAAC7C,MAAM,CAACiD,OAAO,CAAE,WAAUL,kBAAmB,gCAA+BlD,KAAK,CAACqD,IAAI,CAACrB,OAAO,CAACjB,EAAE,CAAE,IAAG,CAAC;IAE9G,MAAMyC,QAAQ,GAAG,MAAMjB,yBAAY,CAACkB,OAAO,CAACzB,OAAO,CAACS,UAAU,EAAE,MAAOC,SAAS,IAAK;MACnF,MAAMgB,YAAY,GAAG,IAAI,CAACrD,SAAS,CAACqD,YAAY,CAAChB,SAAS,CAAC3B,EAAE,CAAC;MAC9D,MAAM4C,iBAAiB,GAAG,IAAI,CAACnD,QAAQ,CAACoD,cAAc,CAAClB,SAAS,EAAEmB,uBAAY,CAAC9C,EAAE,CAAC;MAClF,MAAM+C,cAAc,GAAG,MAAM,IAAI,CAACzD,SAAS,CAAC0D,uBAAuB,CAACrB,SAAS,CAAC;MAE9E,OAAO;QACLgB,YAAY;QACZI,cAAc;QACdE,KAAK,EACHL,iBAAiB,CAACM,GAAG,CAAEC,OAAe,KAAM;UAC1CC,IAAI,EAAE,IAAAC,eAAO,EAACV,YAAY,EAAEQ,OAAO,CAAC;UACpCG,QAAQ,EAAEH;QACZ,CAAC,CAAC,CAAC,IAAI;MACX,CAAC;IACH,CAAC,CAAC;IAEF,IAAII,0BAA0B,GAAG,EAAE;IACnC,IACEtC,OAAO,CAACtB,GAAG,CAAC6D,iCAAiC,IAC7C,OAAOvC,OAAO,CAACtB,GAAG,CAAC6D,iCAAiC,KAAK,UAAU,EACnE;MACAD,0BAA0B,GAAG,MAAMtC,OAAO,CAACtB,GAAG,CAAC6D,iCAAiC,CAAC,CAAC;IACpF;IAEA,MAAMC,aAAa,GAAGxF,MAAM,CAACyF,MAAM,CAACzC,OAAO,EAAE;MAC3C0C,OAAO,EAAE,KAAK;MACdpC,SAAS;MACTkB,QAAQ;MACRmB,QAAQ,EAAE,IAAI,CAACtE,SAAS,CAAC8D,IAAI;MAC7B9D,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBuE,KAAK,EAAEvC,OAAO,CAACuC,KAAK;MACpBC,KAAK,EAAExC,OAAO,CAACwC,KAAK;MACpB1B,EAAE,EAAEd,OAAO,CAACc,EAAE;MACd2B,QAAQ,EAAEzC,OAAO,CAACyC,QAAQ;MAC1BR;IACF,CAAC,CAAC;IAEF,IAAIjC,OAAO,CAACwC,KAAK,IAAIxC,OAAO,CAACc,EAAE,IAAIvB,MAAM,CAACiD,KAAK,EAAE;MAC/C,IAAIjD,MAAM,CAACK,iBAAiB,EAAE;QAC5B;QACAL,MAAM,CAACK,iBAAiB,CAAE8C,OAAO,IAAK;UACpC,IAAI,IAAI,CAAC5C,SAAS,EAAE,IAAI,CAACA,SAAS,CAAC4C,OAAO,CAAC;UAC3CA,OAAO,CAACtC,UAAU,CAACuC,OAAO,CAAEtC,SAAS,IAAK;YACxC;YACA,IAAI,CAACnC,MAAM,CAAC0E,OAAO,CAAChF,cAAc,EAAE;cAClCiF,YAAY,EAAE;gBACZnE,EAAE,EAAE2B,SAAS,CAACyC,WAAW,CAACC,QAAQ,CAAC,CAAC;gBACpCC,YAAY,EAAE3C,SAAS,CAACqC,OAAO;gBAC/BO,OAAO,EAAE5C,SAAS,CAAC4C;cACrB;YACF,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ;MAEA,OAAO1D,MAAM,CAACiD,KAAK,CAACL,aAAa,CAAC;IACpC;IAEA,MAAMO,OAAO,GAAG,MAAMnD,MAAM,CAAC2D,IAAI,CAACf,aAAa,CAAC;IAEhD,OAAOO,OAAO;EAChB;AACF;AAAC7E,OAAA,CAAAC,aAAA,GAAAA,aAAA"}
|
package/dist/tester.task.js
CHANGED
|
@@ -134,9 +134,8 @@ class TesterTask {
|
|
|
134
134
|
artifacts: getArtifactDef(),
|
|
135
135
|
// @ts-ignore
|
|
136
136
|
componentsResults: testsResults.components.map(componentTests => {
|
|
137
|
-
var _context$capsuleNetwo;
|
|
138
137
|
const componentErrors = componentTests.errors;
|
|
139
|
-
const component =
|
|
138
|
+
const component = context.capsuleNetwork.graphCapsules.getCapsule(componentTests.componentId)?.component;
|
|
140
139
|
if (!component) {
|
|
141
140
|
throw new Error(`unable to find ${componentTests.componentId.toString()} in capsules`);
|
|
142
141
|
}
|
package/dist/tester.task.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_builder","data","require","_fsExtra","_interopRequireDefault","_path","_compiler","_component","_utils","_junitGenerator","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","TesterTask","constructor","aspectId","devFiles","CompilerAspect","id","execute","context","components","capsuleNetwork","originalSeedersCapsules","getAllComponents","tester","env","getTester","componentsSpecFiles","ComponentMap","as","component","detectTestFiles","testCount","toArray","reduce","acc","specs","length","artifacts","componentsResults","patternsWithCapsule","componentSpecFiles","get","Error","capsule","graphCapsules","getCapsule","compiler","getCompiler","toString","distFolder","getDistDir","distDir","componentDir","join","path","paths","map","specFile","distPath","getDistPathBySrcPath","relative","specFilesWithCapsule","patternEntry","val","testerContext","assign","release","specFiles","rootPath","capsulesRootDir","patterns","testsResults","test","Promise","all","compResult","junit","testsResultsToJUnitFormat","componentId","fs","outputFile","getJUnitArtifactPath","getArtifactDef","componentTests","_context$capsuleNetwo","componentErrors","errors","metadata","tests","results","exports","CAPSULE_ARTIFACTS_DIR","name","globPatterns","rootDir"],"sources":["tester.task.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, BuildTask, CAPSULE_ARTIFACTS_DIR } from '@teambit/builder';\nimport fs from 'fs-extra';\nimport { join } from 'path';\nimport { Compiler, CompilerAspect } from '@teambit/compiler';\nimport { DevFilesMain } from '@teambit/dev-files';\nimport { ComponentMap } from '@teambit/component';\nimport { Tester } from './tester';\nimport { detectTestFiles } from './utils';\nimport { testsResultsToJUnitFormat } from './utils/junit-generator';\n\n/**\n * tester build task. Allows to test components during component build.\n */\nexport class TesterTask implements BuildTask {\n readonly name = 'TestComponents';\n readonly dependencies = [CompilerAspect.id];\n constructor(readonly aspectId: string, private devFiles: DevFilesMain) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const components = context.capsuleNetwork.originalSeedersCapsules.getAllComponents();\n const tester: Tester = context.env.getTester();\n const componentsSpecFiles = ComponentMap.as(components, (component) => {\n return detectTestFiles(component, this.devFiles);\n });\n\n const testCount = componentsSpecFiles.toArray().reduce((acc, [, specs]) => acc + specs.length, 0);\n if (testCount === 0)\n return {\n artifacts: [],\n componentsResults: [],\n };\n\n const patternsWithCapsule = ComponentMap.as(components, (component) => {\n const componentSpecFiles = componentsSpecFiles.get(component);\n if (!componentSpecFiles) throw new Error('capsule not found');\n const [, specs] = componentSpecFiles;\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n if (!capsule) throw new Error('capsule not found');\n const compiler: Compiler = context.env.getCompiler();\n if (!compiler) {\n throw new Error(`compiler not found for ${component.id.toString()}`);\n }\n // @ts-ignore. not sure why ts complain that compiler might be undefined, when we check it above.\n const distFolder = compiler.getDistDir() || compiler.distDir;\n return {\n componentDir: join(capsule.path, distFolder),\n paths: specs.map((specFile) => {\n const distPath = compiler.getDistPathBySrcPath(specFile.relative);\n // TODO: fix spec type file need to capsule will return files with type AbstractVinyl\n return { path: join(capsule.path, distPath), relative: distPath };\n }),\n };\n });\n\n const specFilesWithCapsule = ComponentMap.as(components, (component) => {\n const patternEntry = patternsWithCapsule.get(component);\n // @ts-ignore\n const [, val] = patternEntry;\n return val.paths;\n });\n\n const testerContext = Object.assign(context, {\n release: true,\n specFiles: specFilesWithCapsule,\n rootPath: context.capsuleNetwork.capsulesRootDir,\n patterns: patternsWithCapsule,\n });\n\n // TODO: remove after fix AbstractVinyl on capsule\n // @ts-ignore\n const testsResults = await tester.test(testerContext);\n\n // write junit files\n await Promise.all(\n testsResults.components.map(async (compResult) => {\n const junit = testsResultsToJUnitFormat([compResult]);\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(compResult.componentId);\n if (!capsule) {\n throw new Error(`unable to find ${compResult.componentId.toString()} in capsules`);\n }\n await fs.outputFile(join(capsule.path, getJUnitArtifactPath()), junit);\n })\n );\n\n return {\n artifacts: getArtifactDef(), // @ts-ignore\n componentsResults: testsResults.components.map((componentTests) => {\n const componentErrors = componentTests.errors;\n const component = context.capsuleNetwork.graphCapsules.getCapsule(componentTests.componentId)?.component;\n if (!component) {\n throw new Error(`unable to find ${componentTests.componentId.toString()} in capsules`);\n }\n\n return {\n component,\n metadata: { tests: componentTests.results },\n errors: componentErrors,\n };\n }),\n };\n }\n}\n\nexport function getJUnitArtifactPath() {\n return join(CAPSULE_ARTIFACTS_DIR, '__bit_junit.xml');\n}\n\nexport function getArtifactDef() {\n return [\n {\n name: 'junit',\n globPatterns: [getJUnitArtifactPath()],\n rootDir: CAPSULE_ARTIFACTS_DIR,\n },\n ];\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_builder","data","require","_fsExtra","_interopRequireDefault","_path","_compiler","_component","_utils","_junitGenerator","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","TesterTask","constructor","aspectId","devFiles","CompilerAspect","id","execute","context","components","capsuleNetwork","originalSeedersCapsules","getAllComponents","tester","env","getTester","componentsSpecFiles","ComponentMap","as","component","detectTestFiles","testCount","toArray","reduce","acc","specs","length","artifacts","componentsResults","patternsWithCapsule","componentSpecFiles","get","Error","capsule","graphCapsules","getCapsule","compiler","getCompiler","toString","distFolder","getDistDir","distDir","componentDir","join","path","paths","map","specFile","distPath","getDistPathBySrcPath","relative","specFilesWithCapsule","patternEntry","val","testerContext","assign","release","specFiles","rootPath","capsulesRootDir","patterns","testsResults","test","Promise","all","compResult","junit","testsResultsToJUnitFormat","componentId","fs","outputFile","getJUnitArtifactPath","getArtifactDef","componentTests","componentErrors","errors","metadata","tests","results","exports","CAPSULE_ARTIFACTS_DIR","name","globPatterns","rootDir"],"sources":["tester.task.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, BuildTask, CAPSULE_ARTIFACTS_DIR } from '@teambit/builder';\nimport fs from 'fs-extra';\nimport { join } from 'path';\nimport { Compiler, CompilerAspect } from '@teambit/compiler';\nimport { DevFilesMain } from '@teambit/dev-files';\nimport { ComponentMap } from '@teambit/component';\nimport { Tester } from './tester';\nimport { detectTestFiles } from './utils';\nimport { testsResultsToJUnitFormat } from './utils/junit-generator';\n\n/**\n * tester build task. Allows to test components during component build.\n */\nexport class TesterTask implements BuildTask {\n readonly name = 'TestComponents';\n readonly dependencies = [CompilerAspect.id];\n constructor(readonly aspectId: string, private devFiles: DevFilesMain) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const components = context.capsuleNetwork.originalSeedersCapsules.getAllComponents();\n const tester: Tester = context.env.getTester();\n const componentsSpecFiles = ComponentMap.as(components, (component) => {\n return detectTestFiles(component, this.devFiles);\n });\n\n const testCount = componentsSpecFiles.toArray().reduce((acc, [, specs]) => acc + specs.length, 0);\n if (testCount === 0)\n return {\n artifacts: [],\n componentsResults: [],\n };\n\n const patternsWithCapsule = ComponentMap.as(components, (component) => {\n const componentSpecFiles = componentsSpecFiles.get(component);\n if (!componentSpecFiles) throw new Error('capsule not found');\n const [, specs] = componentSpecFiles;\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n if (!capsule) throw new Error('capsule not found');\n const compiler: Compiler = context.env.getCompiler();\n if (!compiler) {\n throw new Error(`compiler not found for ${component.id.toString()}`);\n }\n // @ts-ignore. not sure why ts complain that compiler might be undefined, when we check it above.\n const distFolder = compiler.getDistDir() || compiler.distDir;\n return {\n componentDir: join(capsule.path, distFolder),\n paths: specs.map((specFile) => {\n const distPath = compiler.getDistPathBySrcPath(specFile.relative);\n // TODO: fix spec type file need to capsule will return files with type AbstractVinyl\n return { path: join(capsule.path, distPath), relative: distPath };\n }),\n };\n });\n\n const specFilesWithCapsule = ComponentMap.as(components, (component) => {\n const patternEntry = patternsWithCapsule.get(component);\n // @ts-ignore\n const [, val] = patternEntry;\n return val.paths;\n });\n\n const testerContext = Object.assign(context, {\n release: true,\n specFiles: specFilesWithCapsule,\n rootPath: context.capsuleNetwork.capsulesRootDir,\n patterns: patternsWithCapsule,\n });\n\n // TODO: remove after fix AbstractVinyl on capsule\n // @ts-ignore\n const testsResults = await tester.test(testerContext);\n\n // write junit files\n await Promise.all(\n testsResults.components.map(async (compResult) => {\n const junit = testsResultsToJUnitFormat([compResult]);\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(compResult.componentId);\n if (!capsule) {\n throw new Error(`unable to find ${compResult.componentId.toString()} in capsules`);\n }\n await fs.outputFile(join(capsule.path, getJUnitArtifactPath()), junit);\n })\n );\n\n return {\n artifacts: getArtifactDef(), // @ts-ignore\n componentsResults: testsResults.components.map((componentTests) => {\n const componentErrors = componentTests.errors;\n const component = context.capsuleNetwork.graphCapsules.getCapsule(componentTests.componentId)?.component;\n if (!component) {\n throw new Error(`unable to find ${componentTests.componentId.toString()} in capsules`);\n }\n\n return {\n component,\n metadata: { tests: componentTests.results },\n errors: componentErrors,\n };\n }),\n };\n }\n}\n\nexport function getJUnitArtifactPath() {\n return join(CAPSULE_ARTIFACTS_DIR, '__bit_junit.xml');\n}\n\nexport function getArtifactDef() {\n return [\n {\n name: 'junit',\n globPatterns: [getJUnitArtifactPath()],\n rootDir: CAPSULE_ARTIFACTS_DIR,\n },\n ];\n}\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import React, { ComponentType } from 'react';
|
|
|
2
2
|
import { SlotRegistry } from '@teambit/harmony';
|
|
3
3
|
import { ComponentUI } from '@teambit/component';
|
|
4
4
|
import { ComponentCompareUI } from '@teambit/component-compare';
|
|
5
|
-
export
|
|
5
|
+
export type EmptyStateSlot = SlotRegistry<ComponentType>;
|
|
6
6
|
export declare class TesterUI {
|
|
7
7
|
private component;
|
|
8
8
|
private emptyStateSlot;
|
|
@@ -14,8 +14,8 @@ export declare class TesterUI {
|
|
|
14
14
|
* register a new tester empty state. this allows to register a different empty state from each environment for example.
|
|
15
15
|
*/
|
|
16
16
|
registerEmptyState(emptyStateComponent: ComponentType): this;
|
|
17
|
-
getTesterCompare():
|
|
18
|
-
static slots: ((registerFn: () => string) => SlotRegistry<React.ComponentType
|
|
17
|
+
getTesterCompare(): JSX.Element;
|
|
18
|
+
static slots: ((registerFn: () => string) => SlotRegistry<React.ComponentType>)[];
|
|
19
19
|
static provider([component, componentCompare]: [ComponentUI, ComponentCompareUI], config: any, [emptyStateSlot]: [EmptyStateSlot]): Promise<TesterUI>;
|
|
20
20
|
}
|
|
21
21
|
export default TesterUI;
|
package/dist/tests.section.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
2
|
import { Section } from '@teambit/component';
|
|
3
3
|
import { EmptyStateSlot } from './tester.ui.runtime';
|
|
4
4
|
export declare class TestsSection implements Section {
|
|
@@ -6,7 +6,7 @@ export declare class TestsSection implements Section {
|
|
|
6
6
|
constructor(emptyStateSlot: EmptyStateSlot);
|
|
7
7
|
route: {
|
|
8
8
|
path: string;
|
|
9
|
-
element:
|
|
9
|
+
element: JSX.Element;
|
|
10
10
|
};
|
|
11
11
|
navigationLink: {
|
|
12
12
|
href: string;
|
|
@@ -22,13 +22,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
22
22
|
function testsResultsToJUnitFormat(components) {
|
|
23
23
|
const builder = _junitReportBuilder().default.newBuilder();
|
|
24
24
|
components.forEach(compResult => {
|
|
25
|
-
var _compResult$results, _compResult$results3;
|
|
26
25
|
const suite = builder.testSuite().name(compResult.componentId.toString());
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
suite.timestamp(new Date((_compResult$results2 = compResult.results) === null || _compResult$results2 === void 0 ? void 0 : _compResult$results2.start).toISOString());
|
|
26
|
+
if (compResult.results?.start) {
|
|
27
|
+
suite.timestamp(new Date(compResult.results?.start).toISOString());
|
|
30
28
|
}
|
|
31
|
-
|
|
29
|
+
compResult.results?.testFiles.forEach(testFile => {
|
|
32
30
|
if (testFile.error) {
|
|
33
31
|
const testCase = suite.testCase().className(testFile.file).name(testFile.file);
|
|
34
32
|
testCase.error((0, _stripAnsi().default)(testFile.error.message));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_junitReportBuilder","data","_interopRequireDefault","require","_stripAnsi","obj","__esModule","default","testsResultsToJUnitFormat","components","builder","junitReportBuilder","newBuilder","forEach","compResult","
|
|
1
|
+
{"version":3,"names":["_junitReportBuilder","data","_interopRequireDefault","require","_stripAnsi","obj","__esModule","default","testsResultsToJUnitFormat","components","builder","junitReportBuilder","newBuilder","forEach","compResult","suite","testSuite","name","componentId","toString","results","start","timestamp","Date","toISOString","testFiles","testFile","error","testCase","className","file","stripAnsi","message","tests","test","failure","status","skipped","duration","time","build"],"sources":["junit-generator.ts"],"sourcesContent":["import junitReportBuilder from 'junit-report-builder';\nimport stripAnsi from 'strip-ansi';\nimport { ComponentsResults } from '../tester';\n\nexport function testsResultsToJUnitFormat(components: ComponentsResults[]): string {\n const builder = junitReportBuilder.newBuilder();\n components.forEach((compResult) => {\n const suite = builder.testSuite().name(compResult.componentId.toString());\n if (compResult.results?.start) {\n suite.timestamp(new Date(compResult.results?.start).toISOString());\n }\n compResult.results?.testFiles.forEach((testFile) => {\n if (testFile.error) {\n const testCase = suite.testCase().className(testFile.file).name(testFile.file);\n testCase.error(stripAnsi(testFile.error.message as string));\n }\n testFile.tests.forEach((test) => {\n const testCase = suite.testCase().className(testFile.file).name(test.name);\n if (test.error) {\n testCase.error(stripAnsi(test.error));\n }\n if (test.failure) {\n testCase.failure(stripAnsi(test.failure));\n }\n if (test.status === 'skipped' || test.status === 'pending') {\n testCase.skipped();\n }\n if (test.duration) {\n testCase.time(test.duration / 1000);\n }\n });\n });\n });\n return builder.build();\n}\n"],"mappings":";;;;;;AAAA,SAAAA,oBAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,mBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,WAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAmC,SAAAC,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAG5B,SAASG,yBAAyBA,CAACC,UAA+B,EAAU;EACjF,MAAMC,OAAO,GAAGC,6BAAkB,CAACC,UAAU,CAAC,CAAC;EAC/CH,UAAU,CAACI,OAAO,CAAEC,UAAU,IAAK;IACjC,MAAMC,KAAK,GAAGL,OAAO,CAACM,SAAS,CAAC,CAAC,CAACC,IAAI,CAACH,UAAU,CAACI,WAAW,CAACC,QAAQ,CAAC,CAAC,CAAC;IACzE,IAAIL,UAAU,CAACM,OAAO,EAAEC,KAAK,EAAE;MAC7BN,KAAK,CAACO,SAAS,CAAC,IAAIC,IAAI,CAACT,UAAU,CAACM,OAAO,EAAEC,KAAK,CAAC,CAACG,WAAW,CAAC,CAAC,CAAC;IACpE;IACAV,UAAU,CAACM,OAAO,EAAEK,SAAS,CAACZ,OAAO,CAAEa,QAAQ,IAAK;MAClD,IAAIA,QAAQ,CAACC,KAAK,EAAE;QAClB,MAAMC,QAAQ,GAAGb,KAAK,CAACa,QAAQ,CAAC,CAAC,CAACC,SAAS,CAACH,QAAQ,CAACI,IAAI,CAAC,CAACb,IAAI,CAACS,QAAQ,CAACI,IAAI,CAAC;QAC9EF,QAAQ,CAACD,KAAK,CAAC,IAAAI,oBAAS,EAACL,QAAQ,CAACC,KAAK,CAACK,OAAiB,CAAC,CAAC;MAC7D;MACAN,QAAQ,CAACO,KAAK,CAACpB,OAAO,CAAEqB,IAAI,IAAK;QAC/B,MAAMN,QAAQ,GAAGb,KAAK,CAACa,QAAQ,CAAC,CAAC,CAACC,SAAS,CAACH,QAAQ,CAACI,IAAI,CAAC,CAACb,IAAI,CAACiB,IAAI,CAACjB,IAAI,CAAC;QAC1E,IAAIiB,IAAI,CAACP,KAAK,EAAE;UACdC,QAAQ,CAACD,KAAK,CAAC,IAAAI,oBAAS,EAACG,IAAI,CAACP,KAAK,CAAC,CAAC;QACvC;QACA,IAAIO,IAAI,CAACC,OAAO,EAAE;UAChBP,QAAQ,CAACO,OAAO,CAAC,IAAAJ,oBAAS,EAACG,IAAI,CAACC,OAAO,CAAC,CAAC;QAC3C;QACA,IAAID,IAAI,CAACE,MAAM,KAAK,SAAS,IAAIF,IAAI,CAACE,MAAM,KAAK,SAAS,EAAE;UAC1DR,QAAQ,CAACS,OAAO,CAAC,CAAC;QACpB;QACA,IAAIH,IAAI,CAACI,QAAQ,EAAE;UACjBV,QAAQ,CAACW,IAAI,CAACL,IAAI,CAACI,QAAQ,GAAG,IAAI,CAAC;QACrC;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EACF,OAAO5B,OAAO,CAAC8B,KAAK,CAAC,CAAC;AACxB"}
|
package/index.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TesterAspect } from './tester.aspect';
|
|
2
|
+
|
|
3
|
+
export { Tests } from './tester';
|
|
4
|
+
export type { TesterEnv } from './tester-env';
|
|
5
|
+
export type {
|
|
6
|
+
Tester,
|
|
7
|
+
TesterContext,
|
|
8
|
+
CallbackFn,
|
|
9
|
+
SpecFiles,
|
|
10
|
+
ComponentPatternsMap,
|
|
11
|
+
ComponentsResults,
|
|
12
|
+
ComponentPatternsEntry,
|
|
13
|
+
} from './tester';
|
|
14
|
+
export type { TesterMain } from './tester.main.runtime';
|
|
15
|
+
export type { TesterUI, EmptyStateSlot } from './tester.ui.runtime';
|
|
16
|
+
|
|
17
|
+
export { TesterAspect };
|
|
18
|
+
export default TesterAspect;
|