@teambit/tester 1.0.65 → 1.0.66

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/esm.d.mts ADDED
@@ -0,0 +1,4 @@
1
+ export const TesterAspect: any;
2
+ export const Tests: any;
3
+ export default cjsModule;
4
+ import cjsModule from "./index.js";
package/dist/esm.mjs ADDED
@@ -0,0 +1,8 @@
1
+ // eslint-disable-next-line import/no-unresolved
2
+ import cjsModule from './index.js';
3
+
4
+ export const TesterAspect = cjsModule.TesterAspect;
5
+ export const Tests = cjsModule.Tests;
6
+
7
+ export default cjsModule;
8
+
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@1.0.65/dist/tester.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@1.0.65/dist/tester.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@1.0.66/dist/tester.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@1.0.66/dist/tester.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/dist/tester.d.ts CHANGED
@@ -27,11 +27,21 @@ export declare type ComponentsResults = {
27
27
  };
28
28
  export declare type SpecFiles = ComponentMap<AbstractVinyl[]>;
29
29
  export declare type ComponentPatternsEntry = {
30
+ /**
31
+ * component directory in the workspace.
32
+ */
30
33
  componentDir: string;
34
+ /**
35
+ * paths to test files.
36
+ */
31
37
  paths: {
32
38
  path: string;
33
39
  relative: string;
34
40
  }[];
41
+ /**
42
+ * root dir of the package in bit_roots.
43
+ */
44
+ packageRootDir: string;
35
45
  };
36
46
  export declare type ComponentPatternsMap = ComponentMap<ComponentPatternsEntry>;
37
47
  export interface TesterContext extends ExecutionContext {
@@ -1 +1 @@
1
- {"version":3,"names":["Tests","constructor","components","errors","map","comp","flat","exports"],"sources":["tester.ts"],"sourcesContent":["import { Component, ComponentID, ComponentMap } from '@teambit/component';\nimport { ExecutionContext } from '@teambit/envs';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { TestsResult } from '@teambit/tests-results';\n\nexport class Tests {\n constructor(public components: ComponentsResults[]) {}\n get errors(): Error[] {\n return this.components.map((comp) => comp.errors || []).flat();\n }\n}\n\nexport type ComponentsResults = {\n /**\n * component id.\n */\n componentId: ComponentID;\n /**\n * test results for the component.\n */\n results?: TestsResult;\n /**\n * aggregated errors from all files\n */\n errors?: Error[];\n\n /**\n * loading.\n */\n loading?: boolean;\n};\n\nexport type SpecFiles = ComponentMap<AbstractVinyl[]>;\nexport type ComponentPatternsEntry = { componentDir: string; paths: { path: string; relative: string }[] };\nexport type ComponentPatternsMap = ComponentMap<ComponentPatternsEntry>;\n\nexport interface TesterContext extends ExecutionContext {\n /**\n * whether the tester run for release (during bit build/tag) or not (during bit test command).\n */\n release: boolean;\n\n /**\n * list of components to test.\n */\n components: Component[];\n\n /**\n * component workspace.\n */\n // workspace: Workspace;\n\n /**\n * defines whether tester is expected to run in quiet mode.\n */\n quiet?: boolean;\n\n /**\n * list of spec files to test.\n */\n specFiles: SpecFiles;\n\n /**\n * rootPath of the component workspace or the capsule root dir (during build).\n */\n rootPath: string;\n\n /**\n * determines whether tester is expected to run in debug mode.\n */\n debug?: boolean;\n\n /**\n * is start from ui\n */\n ui?: boolean;\n\n /**\n * determines whether to start the tester in watch mode.\n */\n watch?: boolean;\n\n /**\n * whether the tester should show code coverage\n */\n coverage?: boolean;\n\n /**\n * array of patterns to test.\n */\n patterns: ComponentPatternsMap;\n\n /**\n *\n * additional test host dependencies\n * This can be used in cases when you want specific dependencies to be resolved from the env during testing\n * but you don't want these dependencies as peer dependencies of the component (as they are not used during runtime)\n * An example for this is @angular/compiler, which during running tests you want to resolve from the env, but you don't\n * need it during component runtime.\n */\n additionalHostDependencies?: string[];\n}\n\n/**\n * tester interface allows extensions to implement a component tester into bit.\n */\nexport interface Tester {\n /**\n * display name of the tester.\n */\n displayName?: string;\n\n /**\n * icon of the tester.\n */\n icon?: string;\n\n /**\n * serialized config of the tester.\n */\n displayConfig?(): string;\n\n /**\n * path to the config in the filesystem.\n */\n configPath?: string;\n\n /**\n * id of the tester.\n */\n id: string;\n\n /**\n * on test run complete. (applies only during watch)\n * @param callback\n */\n onTestRunComplete?(callback: CallbackFn): Promise<void>;\n\n /**\n * execute tests on all components in the given execution context.\n */\n test(context: TesterContext): Promise<Tests>;\n\n /**\n * watch tests on all components\n */\n watch?(context: TesterContext): Promise<Tests>;\n /**\n * return the tester version.\n */\n version(): string;\n}\nexport type CallbackFn = (testSuite: Tests) => void;\n"],"mappings":";;;;;;AAKO,MAAMA,KAAK,CAAC;EACjBC,WAAWA,CAAQC,UAA+B,EAAE;IAAA,KAAjCA,UAA+B,GAA/BA,UAA+B;EAAG;EACrD,IAAIC,MAAMA,CAAA,EAAY;IACpB,OAAO,IAAI,CAACD,UAAU,CAACE,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACF,MAAM,IAAI,EAAE,CAAC,CAACG,IAAI,CAAC,CAAC;EAChE;AACF;;AA6FA;AACA;AACA;AAFAC,OAAA,CAAAP,KAAA,GAAAA,KAAA"}
1
+ {"version":3,"names":["Tests","constructor","components","errors","map","comp","flat","exports"],"sources":["tester.ts"],"sourcesContent":["import { Component, ComponentID, ComponentMap } from '@teambit/component';\nimport { ExecutionContext } from '@teambit/envs';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { TestsResult } from '@teambit/tests-results';\n\nexport class Tests {\n constructor(public components: ComponentsResults[]) {}\n get errors(): Error[] {\n return this.components.map((comp) => comp.errors || []).flat();\n }\n}\n\nexport type ComponentsResults = {\n /**\n * component id.\n */\n componentId: ComponentID;\n /**\n * test results for the component.\n */\n results?: TestsResult;\n /**\n * aggregated errors from all files\n */\n errors?: Error[];\n\n /**\n * loading.\n */\n loading?: boolean;\n};\n\nexport type SpecFiles = ComponentMap<AbstractVinyl[]>;\n\nexport type ComponentPatternsEntry = { \n /**\n * component directory in the workspace.\n */\n componentDir: string; \n\n /**\n * paths to test files.\n */\n paths: { path: string; relative: string }[],\n\n /**\n * root dir of the package in bit_roots.\n */\n packageRootDir: string;\n};\n\nexport type ComponentPatternsMap = ComponentMap<ComponentPatternsEntry>;\n\nexport interface TesterContext extends ExecutionContext {\n /**\n * whether the tester run for release (during bit build/tag) or not (during bit test command).\n */\n release: boolean;\n\n /**\n * list of components to test.\n */\n components: Component[];\n\n /**\n * component workspace.\n */\n // workspace: Workspace;\n\n /**\n * defines whether tester is expected to run in quiet mode.\n */\n quiet?: boolean;\n\n /**\n * list of spec files to test.\n */\n specFiles: SpecFiles;\n\n /**\n * rootPath of the component workspace or the capsule root dir (during build).\n */\n rootPath: string;\n\n /**\n * determines whether tester is expected to run in debug mode.\n */\n debug?: boolean;\n\n /**\n * is start from ui\n */\n ui?: boolean;\n\n /**\n * determines whether to start the tester in watch mode.\n */\n watch?: boolean;\n\n /**\n * whether the tester should show code coverage\n */\n coverage?: boolean;\n\n /**\n * array of patterns to test.\n */\n patterns: ComponentPatternsMap;\n\n /**\n *\n * additional test host dependencies\n * This can be used in cases when you want specific dependencies to be resolved from the env during testing\n * but you don't want these dependencies as peer dependencies of the component (as they are not used during runtime)\n * An example for this is @angular/compiler, which during running tests you want to resolve from the env, but you don't\n * need it during component runtime.\n */\n additionalHostDependencies?: string[];\n}\n\n/**\n * tester interface allows extensions to implement a component tester into bit.\n */\nexport interface Tester {\n /**\n * display name of the tester.\n */\n displayName?: string;\n\n /**\n * icon of the tester.\n */\n icon?: string;\n\n /**\n * serialized config of the tester.\n */\n displayConfig?(): string;\n\n /**\n * path to the config in the filesystem.\n */\n configPath?: string;\n\n /**\n * id of the tester.\n */\n id: string;\n\n /**\n * on test run complete. (applies only during watch)\n * @param callback\n */\n onTestRunComplete?(callback: CallbackFn): Promise<void>;\n\n /**\n * execute tests on all components in the given execution context.\n */\n test(context: TesterContext): Promise<Tests>;\n\n /**\n * watch tests on all components\n */\n watch?(context: TesterContext): Promise<Tests>;\n\n /**\n * return the tester version.\n */\n version(): string;\n}\n\nexport type CallbackFn = (testSuite: Tests) => void;\n"],"mappings":";;;;;;AAKO,MAAMA,KAAK,CAAC;EACjBC,WAAWA,CAAQC,UAA+B,EAAE;IAAA,KAAjCA,UAA+B,GAA/BA,UAA+B;EAAG;EACrD,IAAIC,MAAMA,CAAA,EAAY;IACpB,OAAO,IAAI,CAACD,UAAU,CAACE,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACF,MAAM,IAAI,EAAE,CAAC,CAACG,IAAI,CAAC,CAAC;EAChE;AACF;;AA8GA;AACA;AACA;AAFAC,OAAA,CAAAP,KAAA,GAAAA,KAAA"}
@@ -125,11 +125,13 @@ class TesterService {
125
125
  return new (_tester().Tests)([]);
126
126
  }
127
127
  if (!options.ui) this.logger.console(`testing ${componentWithTests} components with environment ${chalk.cyan(context.id)}\n`);
128
- const patterns = _component().ComponentMap.as(context.components, component => {
128
+ const patterns = await _component().ComponentMap.asAsync(context.components, async component => {
129
129
  const componentDir = this.workspace.componentDir(component.id);
130
130
  const componentPatterns = this.devFiles.getDevPatterns(component, _tester2().TesterAspect.id);
131
+ const packageRootDir = await this.workspace.getComponentPackagePath(component);
131
132
  return {
132
133
  componentDir,
134
+ packageRootDir,
133
135
  paths: componentPatterns.map(pattern => ({
134
136
  path: (0, _path().resolve)(componentDir, pattern),
135
137
  relative: pattern
@@ -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","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","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","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","componentDir","componentPatterns","getDevPatterns","TesterAspect","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 = ComponentMap.as(context.components, (component) => {\n const componentDir = this.workspace.componentDir(component.id);\n const componentPatterns = this.devFiles.getDevPatterns(component, TesterAspect.id);\n return {\n componentDir,\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","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","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","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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"}
package/esm.mjs ADDED
@@ -0,0 +1,8 @@
1
+ // eslint-disable-next-line import/no-unresolved
2
+ import cjsModule from './index.js';
3
+
4
+ export const TesterAspect = cjsModule.TesterAspect;
5
+ export const Tests = cjsModule.Tests;
6
+
7
+ export default cjsModule;
8
+
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/tester",
3
- "version": "1.0.65",
3
+ "version": "1.0.66",
4
4
  "homepage": "https://bit.cloud/teambit/defender/tester",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.defender",
8
8
  "name": "tester",
9
- "version": "1.0.65"
9
+ "version": "1.0.66"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -27,18 +27,18 @@
27
27
  "@teambit/defender.ui.test-compare": "0.0.255",
28
28
  "@teambit/defender.ui.test-page": "0.0.34",
29
29
  "@teambit/bit-error": "0.0.404",
30
- "@teambit/cli": "0.0.822",
31
- "@teambit/logger": "0.0.915",
32
- "@teambit/workspace": "1.0.65",
33
- "@teambit/envs": "1.0.65",
34
- "@teambit/component": "1.0.65",
35
- "@teambit/graphql": "1.0.65",
36
- "@teambit/builder": "1.0.65",
37
- "@teambit/dev-files": "1.0.65",
30
+ "@teambit/cli": "0.0.823",
31
+ "@teambit/logger": "0.0.916",
32
+ "@teambit/workspace": "1.0.66",
33
+ "@teambit/envs": "1.0.66",
34
+ "@teambit/component": "1.0.66",
35
+ "@teambit/graphql": "1.0.66",
36
+ "@teambit/builder": "1.0.66",
37
+ "@teambit/dev-files": "1.0.66",
38
38
  "@teambit/tests-results": "1.0.4",
39
- "@teambit/ui": "1.0.65",
40
- "@teambit/compiler": "1.0.65",
41
- "@teambit/component-compare": "1.0.65"
39
+ "@teambit/ui": "1.0.66",
40
+ "@teambit/compiler": "1.0.66",
41
+ "@teambit/component-compare": "1.0.66"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/react": "^17.0.8",
@@ -53,7 +53,7 @@
53
53
  "@teambit/defender.content.tester-overview": "1.95.0"
54
54
  },
55
55
  "peerDependencies": {
56
- "@teambit/legacy": "1.0.605",
56
+ "@teambit/legacy": "1.0.606",
57
57
  "react": "^16.8.0 || ^17.0.0",
58
58
  "react-dom": "^16.8.0 || ^17.0.0"
59
59
  },
@@ -128,11 +128,14 @@ export class TesterService implements EnvService<Tests, TesterDescriptor> {
128
128
  if (!options.ui)
129
129
  this.logger.console(`testing ${componentWithTests} components with environment ${chalk.cyan(context.id)}\n`);
130
130
 
131
- const patterns = ComponentMap.as(context.components, (component) => {
131
+ const patterns = await ComponentMap.asAsync(context.components, async (component) => {
132
132
  const componentDir = this.workspace.componentDir(component.id);
133
133
  const componentPatterns = this.devFiles.getDevPatterns(component, TesterAspect.id);
134
+ const packageRootDir = await this.workspace.getComponentPackagePath(component);
135
+
134
136
  return {
135
137
  componentDir,
138
+ packageRootDir,
136
139
  paths:
137
140
  componentPatterns.map((pattern: string) => ({
138
141
  path: resolve(componentDir, pattern),