@teambit/tester 1.0.667 → 1.0.669
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-1753809186996.js → preview-1753848836384.js} +2 -2
- package/dist/test.cmd.d.ts +3 -3
- package/dist/test.cmd.js.map +1 -1
- package/dist/tester-env.d.ts +2 -2
- package/dist/tester-env.js.map +1 -1
- package/dist/tester.d.ts +4 -4
- package/dist/tester.graphql.d.ts +2 -2
- package/dist/tester.graphql.js.map +1 -1
- package/dist/tester.js.map +1 -1
- package/dist/tester.main.runtime.d.ts +11 -11
- package/dist/tester.main.runtime.js.map +1 -1
- package/dist/tester.service.d.ts +8 -7
- package/dist/tester.service.js.map +1 -1
- package/dist/tester.task.d.ts +2 -2
- package/dist/tester.task.js.map +1 -1
- package/dist/tester.ui.runtime.d.ts +6 -6
- package/dist/tester.ui.runtime.js.map +1 -1
- package/dist/tests.section.d.ts +2 -2
- package/dist/tests.section.js.map +1 -1
- package/dist/utils/detect-spec-files.d.ts +2 -2
- package/dist/utils/detect-spec-files.js.map +1 -1
- package/dist/utils/junit-generator.d.ts +1 -1
- package/dist/utils/junit-generator.js.map +1 -1
- package/package.json +15 -15
- package/tester.ui.runtime.tsx +10 -5
- package/tests.section.tsx +2 -2
- package/utils/detect-spec-files.ts +2 -2
- package/utils/junit-generator.ts +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.defender_tester@1.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.defender_tester@1.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.defender_tester@1.0.669/dist/tester.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.defender_tester@1.0.669/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,6 +1,6 @@
|
|
|
1
|
-
import { Command, CommandOptions, GenericObject } from '@teambit/cli';
|
|
2
|
-
import { Logger } from '@teambit/logger';
|
|
3
|
-
import { Workspace } from '@teambit/workspace';
|
|
1
|
+
import type { Command, CommandOptions, GenericObject } from '@teambit/cli';
|
|
2
|
+
import type { Logger } from '@teambit/logger';
|
|
3
|
+
import type { Workspace } from '@teambit/workspace';
|
|
4
4
|
import type { TesterMain } from './tester.main.runtime';
|
|
5
5
|
type TestFlags = {
|
|
6
6
|
watch: boolean;
|
package/dist/test.cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_workspace","_toolboxTime","_legacy","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TestCmd","constructor","tester","workspace","logger","name","description","COMPONENT_PATTERN_HELP","report","userPattern","watch","debug","all","env","scope","junit","coverage","unmodified","updateSnapshot","timer","Timer","create","scopeName","undefined","consoleWarning","start","OutsideWorkspaceError","getPatternWithScope","pattern","patternWithScope","components","getComponentsByUserInput","chalk","bold","code","console","cyan","off","tests","test","hasErrors","process","exitCode","seconds","stop","toString","json","info","restore","silenceConsoleAndStdout","err","results","map","c","componentId","errors","error","exports","originalConsole","originalStdoutWrite","stdout","write","originalStderrWrite","stderr","method"],"sources":["test.cmd.ts"],"sourcesContent":["import { Command, CommandOptions, GenericObject } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { Logger } from '@teambit/logger';\nimport { OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { Timer } from '@teambit/toolbox.time.timer';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';\nimport type { TesterMain, TestResults } from './tester.main.runtime';\n\ntype TestFlags = {\n watch: boolean;\n debug: boolean;\n all: boolean;\n unmodified: boolean;\n env?: string;\n scope?: string;\n junit?: string;\n coverage?: boolean;\n updateSnapshot: boolean;\n};\n\nexport class TestCmd implements Command {\n name = 'test [component-pattern]';\n description = 'test components in the workspace. by default only runs tests for new and modified components';\n helpUrl = 'reference/testing/tester-overview';\n arguments = [\n {\n name: 'component-pattern',\n description: COMPONENT_PATTERN_HELP,\n },\n ];\n alias = 'at';\n group = 'testing';\n options = [\n ['w', 'watch', 'start the tester in watch mode.'],\n ['d', 'debug', 'start the tester in debug mode.'],\n ['a', 'all', 'DEPRECATED. (use --unmodified)'],\n ['u', 'unmodified', 'test all components, not only new and modified'],\n ['', 'junit <filepath>', 'write tests results as JUnit XML format into the specified file path'],\n ['', 'coverage', 'show code coverage data'],\n ['e', 'env <id>', 'test only components assigned the given env'],\n ['', 'update-snapshot', 'if supported by the tester, re-record every snapshot that fails during the test run'],\n [\n 's',\n 'scope <scope-name>',\n 'DEPRECATED. (use the pattern instead, e.g. \"scopeName/**\"). name of the scope to test',\n ],\n ['j', 'json', 'return the results in json format'],\n // TODO: we need to reduce this redundant casting every time.\n ] as CommandOptions;\n\n constructor(\n private tester: TesterMain,\n private workspace: Workspace,\n private logger: Logger\n ) {}\n\n async report(\n [userPattern]: [string],\n {\n watch = false,\n debug = false,\n all = false,\n env,\n scope,\n junit,\n coverage = false,\n unmodified = false,\n updateSnapshot = false,\n }: TestFlags\n ) {\n const timer = Timer.create();\n const scopeName = typeof scope === 'string' ? scope : undefined;\n if (scopeName) {\n this.logger.consoleWarning(\n `--scope is deprecated, use the pattern argument instead. e.g. \"scopeName/**\" for the entire scope`\n );\n }\n if (all) {\n unmodified = all;\n this.logger.consoleWarning(`--all is deprecated, use --unmodified instead`);\n }\n timer.start();\n if (!this.workspace) throw new OutsideWorkspaceError();\n\n const getPatternWithScope = () => {\n if (!userPattern && !scope) return undefined;\n const pattern = userPattern || '**';\n return scopeName ? `${scopeName}/${pattern}` : pattern;\n };\n const patternWithScope = getPatternWithScope();\n const components = await this.workspace.getComponentsByUserInput(unmodified, patternWithScope, true);\n if (!components.length) {\n const data = chalk.bold(`no components found to test.\nuse \"--unmodified\" flag to test all components or specify the ids to test.\notherwise, only new and modified components will be tested`);\n return {\n code: 0,\n data,\n };\n }\n\n this.logger.console(\n `testing total of ${components.length} components in workspace '${chalk.cyan(this.workspace.name)}'`\n );\n\n let code = 0;\n if (watch && !debug) {\n // avoid turning off the logger for non-watch scenario. otherwise, when this aspect throws errors, they'll be\n // swallowed. (Jest errors are shown regardless via Jest, but if the tester is unable to run Jest in the first\n // place, these errors won't be shown)\n this.logger.off();\n await this.tester.watch(components, {\n watch,\n debug,\n env,\n coverage,\n updateSnapshot,\n });\n } else {\n const tests = await this.tester.test(components, {\n watch,\n debug,\n env,\n junit,\n coverage,\n updateSnapshot,\n });\n if (tests.hasErrors()) code = 1;\n if (process.exitCode && process.exitCode !== 0 && typeof process.exitCode === 'number') {\n // this is needed for testers such as \"vitest\", where it sets the exitCode to non zero when the coverage is not met.\n code = process.exitCode;\n }\n }\n const { seconds } = timer.stop();\n\n if (watch) return '';\n const data = `tests has been completed in ${chalk.cyan(seconds.toString())} seconds.`;\n return {\n code,\n data,\n };\n }\n\n async json(\n [userPattern]: [string],\n {\n watch = false,\n debug = false,\n env,\n junit,\n coverage = false,\n unmodified = false,\n updateSnapshot = false,\n }: TestFlags\n ): Promise<GenericObject> {\n const timer = Timer.create();\n timer.start();\n if (!this.workspace) throw new OutsideWorkspaceError();\n\n const getPatternWithScope = () => {\n if (!userPattern) return undefined;\n const pattern = userPattern || '**';\n return pattern;\n };\n const patternWithScope = getPatternWithScope();\n const components = await this.workspace.getComponentsByUserInput(unmodified, patternWithScope, true);\n if (!components.length) {\n this.logger.info(`no components found to test.\n use \"--unmodified\" flag to test all components or specify the ids to test.\n otherwise, only new and modified components will be tested`);\n return {\n code: 0,\n data: [],\n };\n }\n\n let code = 0;\n const restore = silenceConsoleAndStdout();\n let tests: TestResults;\n try {\n tests = await this.tester.test(components, {\n watch,\n debug,\n env,\n junit,\n coverage,\n updateSnapshot,\n });\n } catch (err) {\n restore();\n throw err;\n }\n restore();\n if (tests.hasErrors()) code = 1;\n if (process.exitCode && process.exitCode !== 0 && typeof process.exitCode === 'number') {\n // this is needed for testers such as \"vitest\", where it sets the exitCode to non zero when the coverage is not met.\n code = process.exitCode;\n }\n\n const data = tests.results.map((r) => ({\n data: {\n components: r.data?.components.map((c) => ({\n ...c,\n componentId: c.componentId.toString(),\n })),\n errors: r.data?.errors,\n },\n error: r.error,\n }));\n\n return {\n code,\n data,\n };\n }\n}\n\n/**\n * Disables all console logging (via console.*) and direct writes to\n * process.stdout / process.stderr. Returns a function that, when called,\n * restores everything back to normal.\n */\nfunction silenceConsoleAndStdout(): () => void {\n // Keep copies of the original methods so we can restore them later\n const originalConsole = { ...console };\n const originalStdoutWrite = process.stdout.write;\n const originalStderrWrite = process.stderr.write;\n\n // No-op implementations for console.* methods\n for (const method of ['log', 'warn', 'error', 'info', 'debug'] as const) {\n // eslint-disable-next-line no-console\n console[method] = () => {};\n }\n\n // Replace process.stdout.write and process.stderr.write with no-ops\n process.stdout.write = (() => true) as any;\n process.stderr.write = (() => true) as any;\n\n // Return a function to restore original behavior\n return () => {\n for (const method of Object.keys(originalConsole) as (keyof Console)[]) {\n // @ts-ignore\n // eslint-disable-next-line no-console\n console[method] = originalConsole[method];\n }\n process.stdout.write = originalStdoutWrite;\n process.stderr.write = originalStderrWrite;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_workspace","_toolboxTime","_legacy","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TestCmd","constructor","tester","workspace","logger","name","description","COMPONENT_PATTERN_HELP","report","userPattern","watch","debug","all","env","scope","junit","coverage","unmodified","updateSnapshot","timer","Timer","create","scopeName","undefined","consoleWarning","start","OutsideWorkspaceError","getPatternWithScope","pattern","patternWithScope","components","getComponentsByUserInput","chalk","bold","code","console","cyan","off","tests","test","hasErrors","process","exitCode","seconds","stop","toString","json","info","restore","silenceConsoleAndStdout","err","results","map","c","componentId","errors","error","exports","originalConsole","originalStdoutWrite","stdout","write","originalStderrWrite","stderr","method"],"sources":["test.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions, GenericObject } from '@teambit/cli';\nimport chalk from 'chalk';\nimport type { Logger } from '@teambit/logger';\nimport type { Workspace } from '@teambit/workspace';\nimport { OutsideWorkspaceError } from '@teambit/workspace';\nimport { Timer } from '@teambit/toolbox.time.timer';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';\nimport type { TesterMain, TestResults } from './tester.main.runtime';\n\ntype TestFlags = {\n watch: boolean;\n debug: boolean;\n all: boolean;\n unmodified: boolean;\n env?: string;\n scope?: string;\n junit?: string;\n coverage?: boolean;\n updateSnapshot: boolean;\n};\n\nexport class TestCmd implements Command {\n name = 'test [component-pattern]';\n description = 'test components in the workspace. by default only runs tests for new and modified components';\n helpUrl = 'reference/testing/tester-overview';\n arguments = [\n {\n name: 'component-pattern',\n description: COMPONENT_PATTERN_HELP,\n },\n ];\n alias = 'at';\n group = 'testing';\n options = [\n ['w', 'watch', 'start the tester in watch mode.'],\n ['d', 'debug', 'start the tester in debug mode.'],\n ['a', 'all', 'DEPRECATED. (use --unmodified)'],\n ['u', 'unmodified', 'test all components, not only new and modified'],\n ['', 'junit <filepath>', 'write tests results as JUnit XML format into the specified file path'],\n ['', 'coverage', 'show code coverage data'],\n ['e', 'env <id>', 'test only components assigned the given env'],\n ['', 'update-snapshot', 'if supported by the tester, re-record every snapshot that fails during the test run'],\n [\n 's',\n 'scope <scope-name>',\n 'DEPRECATED. (use the pattern instead, e.g. \"scopeName/**\"). name of the scope to test',\n ],\n ['j', 'json', 'return the results in json format'],\n // TODO: we need to reduce this redundant casting every time.\n ] as CommandOptions;\n\n constructor(\n private tester: TesterMain,\n private workspace: Workspace,\n private logger: Logger\n ) {}\n\n async report(\n [userPattern]: [string],\n {\n watch = false,\n debug = false,\n all = false,\n env,\n scope,\n junit,\n coverage = false,\n unmodified = false,\n updateSnapshot = false,\n }: TestFlags\n ) {\n const timer = Timer.create();\n const scopeName = typeof scope === 'string' ? scope : undefined;\n if (scopeName) {\n this.logger.consoleWarning(\n `--scope is deprecated, use the pattern argument instead. e.g. \"scopeName/**\" for the entire scope`\n );\n }\n if (all) {\n unmodified = all;\n this.logger.consoleWarning(`--all is deprecated, use --unmodified instead`);\n }\n timer.start();\n if (!this.workspace) throw new OutsideWorkspaceError();\n\n const getPatternWithScope = () => {\n if (!userPattern && !scope) return undefined;\n const pattern = userPattern || '**';\n return scopeName ? `${scopeName}/${pattern}` : pattern;\n };\n const patternWithScope = getPatternWithScope();\n const components = await this.workspace.getComponentsByUserInput(unmodified, patternWithScope, true);\n if (!components.length) {\n const data = chalk.bold(`no components found to test.\nuse \"--unmodified\" flag to test all components or specify the ids to test.\notherwise, only new and modified components will be tested`);\n return {\n code: 0,\n data,\n };\n }\n\n this.logger.console(\n `testing total of ${components.length} components in workspace '${chalk.cyan(this.workspace.name)}'`\n );\n\n let code = 0;\n if (watch && !debug) {\n // avoid turning off the logger for non-watch scenario. otherwise, when this aspect throws errors, they'll be\n // swallowed. (Jest errors are shown regardless via Jest, but if the tester is unable to run Jest in the first\n // place, these errors won't be shown)\n this.logger.off();\n await this.tester.watch(components, {\n watch,\n debug,\n env,\n coverage,\n updateSnapshot,\n });\n } else {\n const tests = await this.tester.test(components, {\n watch,\n debug,\n env,\n junit,\n coverage,\n updateSnapshot,\n });\n if (tests.hasErrors()) code = 1;\n if (process.exitCode && process.exitCode !== 0 && typeof process.exitCode === 'number') {\n // this is needed for testers such as \"vitest\", where it sets the exitCode to non zero when the coverage is not met.\n code = process.exitCode;\n }\n }\n const { seconds } = timer.stop();\n\n if (watch) return '';\n const data = `tests has been completed in ${chalk.cyan(seconds.toString())} seconds.`;\n return {\n code,\n data,\n };\n }\n\n async json(\n [userPattern]: [string],\n {\n watch = false,\n debug = false,\n env,\n junit,\n coverage = false,\n unmodified = false,\n updateSnapshot = false,\n }: TestFlags\n ): Promise<GenericObject> {\n const timer = Timer.create();\n timer.start();\n if (!this.workspace) throw new OutsideWorkspaceError();\n\n const getPatternWithScope = () => {\n if (!userPattern) return undefined;\n const pattern = userPattern || '**';\n return pattern;\n };\n const patternWithScope = getPatternWithScope();\n const components = await this.workspace.getComponentsByUserInput(unmodified, patternWithScope, true);\n if (!components.length) {\n this.logger.info(`no components found to test.\n use \"--unmodified\" flag to test all components or specify the ids to test.\n otherwise, only new and modified components will be tested`);\n return {\n code: 0,\n data: [],\n };\n }\n\n let code = 0;\n const restore = silenceConsoleAndStdout();\n let tests: TestResults;\n try {\n tests = await this.tester.test(components, {\n watch,\n debug,\n env,\n junit,\n coverage,\n updateSnapshot,\n });\n } catch (err) {\n restore();\n throw err;\n }\n restore();\n if (tests.hasErrors()) code = 1;\n if (process.exitCode && process.exitCode !== 0 && typeof process.exitCode === 'number') {\n // this is needed for testers such as \"vitest\", where it sets the exitCode to non zero when the coverage is not met.\n code = process.exitCode;\n }\n\n const data = tests.results.map((r) => ({\n data: {\n components: r.data?.components.map((c) => ({\n ...c,\n componentId: c.componentId.toString(),\n })),\n errors: r.data?.errors,\n },\n error: r.error,\n }));\n\n return {\n code,\n data,\n };\n }\n}\n\n/**\n * Disables all console logging (via console.*) and direct writes to\n * process.stdout / process.stderr. Returns a function that, when called,\n * restores everything back to normal.\n */\nfunction silenceConsoleAndStdout(): () => void {\n // Keep copies of the original methods so we can restore them later\n const originalConsole = { ...console };\n const originalStdoutWrite = process.stdout.write;\n const originalStderrWrite = process.stderr.write;\n\n // No-op implementations for console.* methods\n for (const method of ['log', 'warn', 'error', 'info', 'debug'] as const) {\n // eslint-disable-next-line no-console\n console[method] = () => {};\n }\n\n // Replace process.stdout.write and process.stderr.write with no-ops\n process.stdout.write = (() => true) as any;\n process.stderr.write = (() => true) as any;\n\n // Return a function to restore original behavior\n return () => {\n for (const method of Object.keys(originalConsole) as (keyof Console)[]) {\n // @ts-ignore\n // eslint-disable-next-line no-console\n console[method] = originalConsole[method];\n }\n process.stdout.write = originalStdoutWrite;\n process.stderr.write = originalStderrWrite;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/tester-env.d.ts
CHANGED
package/dist/tester-env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["tester-env.ts"],"sourcesContent":["import { EnvHandler } from '@teambit/envs';\nimport { Tester } from './tester';\n\nexport interface TesterEnv {\n tester(): EnvHandler<Tester>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["tester-env.ts"],"sourcesContent":["import type { EnvHandler } from '@teambit/envs';\nimport type { Tester } from './tester';\n\nexport interface TesterEnv {\n tester(): EnvHandler<Tester>;\n}\n"],"mappings":"","ignoreList":[]}
|
package/dist/tester.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Component, ComponentID, ComponentMap } from '@teambit/component';
|
|
2
|
-
import { ExecutionContext } from '@teambit/envs';
|
|
3
|
-
import { AbstractVinyl } from '@teambit/component.sources';
|
|
4
|
-
import { TestsResult } from '@teambit/tests-results';
|
|
1
|
+
import type { Component, ComponentID, ComponentMap } from '@teambit/component';
|
|
2
|
+
import type { ExecutionContext } from '@teambit/envs';
|
|
3
|
+
import type { AbstractVinyl } from '@teambit/component.sources';
|
|
4
|
+
import type { TestsResult } from '@teambit/tests-results';
|
|
5
5
|
export declare class Tests {
|
|
6
6
|
components: ComponentsResults[];
|
|
7
7
|
constructor(components: ComponentsResults[]);
|
package/dist/tester.graphql.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { GraphqlMain, Schema } from '@teambit/graphql';
|
|
2
|
-
import { TesterMain } from './tester.main.runtime';
|
|
1
|
+
import type { GraphqlMain, Schema } from '@teambit/graphql';
|
|
2
|
+
import type { TesterMain } from './tester.main.runtime';
|
|
3
3
|
export declare function testerSchema(tester: TesterMain, graphql: GraphqlMain): Schema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_graphqlSubscriptions","data","require","_componentId","_graphqlTag","_tester","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","testerSchema","tester","graphql","typeDefs","gql","resolvers","Subscription","testsChanged","subscribe","withFilter","pubsub","asyncIterator","OnTestsChanged","payload","variables","id","ComponentHost","getTests","host","componentId","resolveComponentId","idHasVersion","ComponentID","fromString","hasVersion","component","get","testsData","getTestsResults","testsResults","testFiles","map","testFile","duration","toFixed","tests","test"],"sources":["tester.graphql.ts"],"sourcesContent":["import { GraphqlMain, Schema } from '@teambit/graphql';\nimport { ComponentFactory } from '@teambit/component';\nimport { withFilter } from 'graphql-subscriptions';\nimport { ComponentID } from '@teambit/component-id';\nimport { gql } from 'graphql-tag';\n\nimport { TesterMain } from './tester.main.runtime';\nimport { OnTestsChanged } from './tester.service';\n\nexport function testerSchema(tester: TesterMain, graphql: GraphqlMain): Schema {\n return {\n typeDefs: gql`\n extend type ComponentHost {\n getTests(id: String!): Tests\n }\n\n type Subscription {\n testsChanged(id: String!): Tests\n }\n\n type Tests {\n loading: Boolean!\n testsResults: TestsResults\n }\n\n type TestsChanged {\n testsResults: TestsResults\n }\n\n type TestsResults {\n testFiles: [TestFiles]\n success: Boolean\n start: Int\n coverage: CoverageResult\n }\n\n type TestFiles {\n file: String\n tests: [Tests]\n pass: Int\n failed: Int\n pending: Int\n duration: Int\n slow: Boolean\n errorStr: String\n }\n\n type Tests {\n ancestor: [String]\n name: String\n duration: String\n status: String\n error: String\n }\n\n type CoverageResult {\n files: [FileCoverage!]\n total: CoverageData!\n }\n\n type CoverageDetails {\n total: Int!\n covered: Int!\n skipped: Int!\n pct: Float!\n }\n\n type CoverageData {\n lines: CoverageDetails!\n functions: CoverageDetails!\n statements: CoverageDetails!\n branches: CoverageDetails!\n }\n\n type FileCoverage {\n path: String!\n data: CoverageData!\n }\n `,\n resolvers: {\n Subscription: {\n testsChanged: {\n subscribe: withFilter(\n () => graphql.pubsub.asyncIterator(OnTestsChanged),\n (payload, variables) => {\n return payload.testsChanged.id === variables.id;\n }\n ),\n },\n },\n\n ComponentHost: {\n getTests: async (host: ComponentFactory, { id }: { id: string }) => {\n const componentId = await host.resolveComponentId(id);\n const idHasVersion = ComponentID.fromString(id).hasVersion();\n const component = await host.get(componentId);\n if (!component) return null;\n const testsData = await tester.getTestsResults(component, idHasVersion);\n if (!testsData) return null;\n return {\n ...testsData,\n testsResults: {\n ...testsData.testsResults,\n testFiles: testsData.testsResults?.testFiles.map((testFile) => {\n return {\n ...testFile,\n duration: testFile.duration?.toFixed(0),\n tests: testFile.tests.map((test) => {\n return {\n ...test,\n duration: test.duration?.toFixed(0),\n };\n }),\n };\n }),\n },\n };\n },\n },\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_graphqlSubscriptions","data","require","_componentId","_graphqlTag","_tester","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","testerSchema","tester","graphql","typeDefs","gql","resolvers","Subscription","testsChanged","subscribe","withFilter","pubsub","asyncIterator","OnTestsChanged","payload","variables","id","ComponentHost","getTests","host","componentId","resolveComponentId","idHasVersion","ComponentID","fromString","hasVersion","component","get","testsData","getTestsResults","testsResults","testFiles","map","testFile","duration","toFixed","tests","test"],"sources":["tester.graphql.ts"],"sourcesContent":["import type { GraphqlMain, Schema } from '@teambit/graphql';\nimport type { ComponentFactory } from '@teambit/component';\nimport { withFilter } from 'graphql-subscriptions';\nimport { ComponentID } from '@teambit/component-id';\nimport { gql } from 'graphql-tag';\n\nimport type { TesterMain } from './tester.main.runtime';\nimport { OnTestsChanged } from './tester.service';\n\nexport function testerSchema(tester: TesterMain, graphql: GraphqlMain): Schema {\n return {\n typeDefs: gql`\n extend type ComponentHost {\n getTests(id: String!): Tests\n }\n\n type Subscription {\n testsChanged(id: String!): Tests\n }\n\n type Tests {\n loading: Boolean!\n testsResults: TestsResults\n }\n\n type TestsChanged {\n testsResults: TestsResults\n }\n\n type TestsResults {\n testFiles: [TestFiles]\n success: Boolean\n start: Int\n coverage: CoverageResult\n }\n\n type TestFiles {\n file: String\n tests: [Tests]\n pass: Int\n failed: Int\n pending: Int\n duration: Int\n slow: Boolean\n errorStr: String\n }\n\n type Tests {\n ancestor: [String]\n name: String\n duration: String\n status: String\n error: String\n }\n\n type CoverageResult {\n files: [FileCoverage!]\n total: CoverageData!\n }\n\n type CoverageDetails {\n total: Int!\n covered: Int!\n skipped: Int!\n pct: Float!\n }\n\n type CoverageData {\n lines: CoverageDetails!\n functions: CoverageDetails!\n statements: CoverageDetails!\n branches: CoverageDetails!\n }\n\n type FileCoverage {\n path: String!\n data: CoverageData!\n }\n `,\n resolvers: {\n Subscription: {\n testsChanged: {\n subscribe: withFilter(\n () => graphql.pubsub.asyncIterator(OnTestsChanged),\n (payload, variables) => {\n return payload.testsChanged.id === variables.id;\n }\n ),\n },\n },\n\n ComponentHost: {\n getTests: async (host: ComponentFactory, { id }: { id: string }) => {\n const componentId = await host.resolveComponentId(id);\n const idHasVersion = ComponentID.fromString(id).hasVersion();\n const component = await host.get(componentId);\n if (!component) return null;\n const testsData = await tester.getTestsResults(component, idHasVersion);\n if (!testsData) return null;\n return {\n ...testsData,\n testsResults: {\n ...testsData.testsResults,\n testFiles: testsData.testsResults?.testFiles.map((testFile) => {\n return {\n ...testFile,\n duration: testFile.duration?.toFixed(0),\n tests: testFile.tests.map((test) => {\n return {\n ...test,\n duration: test.duration?.toFixed(0),\n };\n }),\n };\n }),\n },\n };\n },\n },\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/tester.js.map
CHANGED
|
@@ -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/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 * list of source spec files to test.\n */\n sourceSpecFiles?: 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 * re-record every snapshot that fails during the test run\n */\n updateSnapshot?: boolean;\n\n /**\n * array of patterns to test.\n */\n patterns: ComponentPatternsMap;\n\n /**\n * array of source files patterns to test.\n */\n sourcePatterns?: 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;;AA6HA;AACA;AACA;AAFAC,OAAA,CAAAP,KAAA,GAAAA,KAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Tests","constructor","components","errors","map","comp","flat","exports"],"sources":["tester.ts"],"sourcesContent":["import type { Component, ComponentID, ComponentMap } from '@teambit/component';\nimport type { ExecutionContext } from '@teambit/envs';\nimport type { AbstractVinyl } from '@teambit/component.sources';\nimport type { 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 * list of source spec files to test.\n */\n sourceSpecFiles?: 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 * re-record every snapshot that fails during the test run\n */\n updateSnapshot?: boolean;\n\n /**\n * array of patterns to test.\n */\n patterns: ComponentPatternsMap;\n\n /**\n * array of source files patterns to test.\n */\n sourcePatterns?: 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;;AA6HA;AACA;AACA;AAFAC,OAAA,CAAAP,KAAA,GAAAA,KAAA","ignoreList":[]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { CLIMain } from '@teambit/cli';
|
|
2
|
-
import { Component, IComponent } from '@teambit/component';
|
|
3
|
-
import { EnvsExecutionResult, EnvsMain } from '@teambit/envs';
|
|
4
|
-
import { LoggerMain } from '@teambit/logger';
|
|
5
|
-
import { Workspace } from '@teambit/workspace';
|
|
6
|
-
import { GraphqlMain } from '@teambit/graphql';
|
|
7
|
-
import { BuilderMain } from '@teambit/builder';
|
|
8
|
-
import { UiMain } from '@teambit/ui';
|
|
9
|
-
import { DevFilesMain } from '@teambit/dev-files';
|
|
10
|
-
import { TestsResult } from '@teambit/tests-results';
|
|
11
|
-
import { ComponentsResults, CallbackFn, Tests } from './tester';
|
|
1
|
+
import type { CLIMain } from '@teambit/cli';
|
|
2
|
+
import type { Component, IComponent } from '@teambit/component';
|
|
3
|
+
import type { EnvsExecutionResult, EnvsMain } from '@teambit/envs';
|
|
4
|
+
import type { LoggerMain } from '@teambit/logger';
|
|
5
|
+
import type { Workspace } from '@teambit/workspace';
|
|
6
|
+
import type { GraphqlMain } from '@teambit/graphql';
|
|
7
|
+
import type { BuilderMain } from '@teambit/builder';
|
|
8
|
+
import type { UiMain } from '@teambit/ui';
|
|
9
|
+
import type { DevFilesMain } from '@teambit/dev-files';
|
|
10
|
+
import type { TestsResult } from '@teambit/tests-results';
|
|
11
|
+
import type { ComponentsResults, CallbackFn, Tests } from './tester';
|
|
12
12
|
import { TesterService } from './tester.service';
|
|
13
13
|
import { TesterTask } from './tester.task';
|
|
14
14
|
export type TesterExtensionConfig = {
|
|
@@ -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","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","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","coverage","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 TestResults = EnvsExecutionResult<Tests>;\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 /**\n * update snapshot if supported by the tester\n */\n updateSnapshot?: boolean;\n\n callback?: CallbackFn;\n};\n\ntype CoverageResults = {\n files: CoverageFile[];\n total: CoverageData;\n};\n\ntype CoverageStats = {\n pct: number;\n total: number;\n covered: number;\n skipped: number;\n};\n\ntype CoverageFile = {\n path: string;\n data: CoverageData;\n};\n\ntype CoverageData = {\n lines: CoverageStats;\n statements: CoverageStats;\n functions: CoverageStats;\n branches: CoverageStats;\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<TestResults> {\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: TestResults) {\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; coverage?: CoverageResults } | 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 {\n tests: TestsResult & {\n coverage: CoverageResults;\n };\n };\n if ((entry || data) && !isModified) {\n return { testsResults: data?.tests || entry?.data.tests, loading: false, coverage: data?.tests.coverage };\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, coverage: tests?.coverage };\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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","ignoreList":[]}
|
|
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","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","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","coverage","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 type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport type { Component, IComponent } from '@teambit/component';\nimport compact from 'lodash.compact';\nimport type { EnvsExecutionResult, EnvsMain } from '@teambit/envs';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { BuilderMain } from '@teambit/builder';\nimport { BuilderAspect } from '@teambit/builder';\nimport type { UiMain } from '@teambit/ui';\nimport { UIAspect } from '@teambit/ui';\nimport { merge } from 'lodash';\nimport type { DevFilesMain } from '@teambit/dev-files';\nimport { DevFilesAspect } from '@teambit/dev-files';\nimport type { TestsResult } from '@teambit/tests-results';\nimport type { 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 TestResults = EnvsExecutionResult<Tests>;\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 /**\n * update snapshot if supported by the tester\n */\n updateSnapshot?: boolean;\n\n callback?: CallbackFn;\n};\n\ntype CoverageResults = {\n files: CoverageFile[];\n total: CoverageData;\n};\n\ntype CoverageStats = {\n pct: number;\n total: number;\n covered: number;\n skipped: number;\n};\n\ntype CoverageFile = {\n path: string;\n data: CoverageData;\n};\n\ntype CoverageData = {\n lines: CoverageStats;\n statements: CoverageStats;\n functions: CoverageStats;\n branches: CoverageStats;\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<TestResults> {\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: TestResults) {\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; coverage?: CoverageResults } | 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 {\n tests: TestsResult & {\n coverage: CoverageResults;\n };\n };\n if ((entry || data) && !isModified) {\n return { testsResults: data?.tests || entry?.data.tests, loading: false, coverage: data?.tests.coverage };\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, coverage: tests?.coverage };\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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","ignoreList":[]}
|
package/dist/tester.service.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Logger } from '@teambit/logger';
|
|
2
|
-
import { EnvService, ExecutionContext, EnvDefinition, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';
|
|
3
|
-
import { Workspace } from '@teambit/workspace';
|
|
4
|
-
import { PubSubEngine } from 'graphql-subscriptions';
|
|
5
|
-
import { DevFilesMain } from '@teambit/dev-files';
|
|
6
|
-
import { Tester,
|
|
7
|
-
import {
|
|
1
|
+
import type { Logger } from '@teambit/logger';
|
|
2
|
+
import type { EnvService, ExecutionContext, EnvDefinition, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';
|
|
3
|
+
import type { Workspace } from '@teambit/workspace';
|
|
4
|
+
import type { PubSubEngine } from 'graphql-subscriptions';
|
|
5
|
+
import type { DevFilesMain } from '@teambit/dev-files';
|
|
6
|
+
import type { Tester, CallbackFn } from './tester';
|
|
7
|
+
import { Tests } from './tester';
|
|
8
|
+
import type { TesterOptions } from './tester.main.runtime';
|
|
8
9
|
export declare const OnTestsChanged = "OnTestsChanged";
|
|
9
10
|
type TesterTransformationMap = ServiceTransformationMap & {
|
|
10
11
|
getTester: () => Tester;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_path","data","require","_component","_cliHighlight","_interopRequireDefault","_tester","_tester2","_utils","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","chalk","OnTestsChanged","exports","TesterService","constructor","workspace","logger","pubsub","devFiles","render","env","descriptor","getDescriptor","name","green","id","displayName","version","configLabel","configObj","config","highlight","language","ignoreIllegals","environment","getTester","undefined","tester","icon","displayConfig","transform","context","onTestRunComplete","callback","_callback","run","options","Tests","specFiles","ComponentMap","as","components","component","detectTestFiles","testCount","toArray","reduce","acc","specs","length","componentWithTests","ui","consoleWarning","cyan","console","patterns","asAsync","componentDir","componentPatterns","getDevPatterns","TesterAspect","packageRootDir","getComponentPackagePath","paths","map","pattern","path","resolve","relative","additionalHostDependencies","getAdditionalTestHostDependencies","testerContext","assign","release","rootPath","debug","watch","coverage","updateSnapshot","results","forEach","publish","testsChanged","componentId","toString","testsResults","loading","test"],"sources":["tester.service.ts"],"sourcesContent":["import { Logger } from '@teambit/logger';\nimport { resolve } from 'path';\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 const name = `${chalk.green('configured tester:')} ${descriptor?.id} (${descriptor?.displayName} @ ${\n descriptor?.version\n })`;\n const configLabel = chalk.green('tester config:');\n const configObj = descriptor?.config\n ? highlight(descriptor?.config, { language: 'javascript', ignoreIllegals: true })\n : '';\n return `${name}\\n${configLabel}\\n${configObj}`;\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 if (!context.env.getTester) {\n return new Tests([]);\n }\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 updateSnapshot: options.updateSnapshot,\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_path","data","require","_component","_cliHighlight","_interopRequireDefault","_tester","_tester2","_utils","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","chalk","OnTestsChanged","exports","TesterService","constructor","workspace","logger","pubsub","devFiles","render","env","descriptor","getDescriptor","name","green","id","displayName","version","configLabel","configObj","config","highlight","language","ignoreIllegals","environment","getTester","undefined","tester","icon","displayConfig","transform","context","onTestRunComplete","callback","_callback","run","options","Tests","specFiles","ComponentMap","as","components","component","detectTestFiles","testCount","toArray","reduce","acc","specs","length","componentWithTests","ui","consoleWarning","cyan","console","patterns","asAsync","componentDir","componentPatterns","getDevPatterns","TesterAspect","packageRootDir","getComponentPackagePath","paths","map","pattern","path","resolve","relative","additionalHostDependencies","getAdditionalTestHostDependencies","testerContext","assign","release","rootPath","debug","watch","coverage","updateSnapshot","results","forEach","publish","testsChanged","componentId","toString","testsResults","loading","test"],"sources":["tester.service.ts"],"sourcesContent":["import type { Logger } from '@teambit/logger';\nimport { resolve } from 'path';\nimport type {\n EnvService,\n ExecutionContext,\n EnvDefinition,\n Env,\n EnvContext,\n ServiceTransformationMap,\n} from '@teambit/envs';\nimport { ComponentMap } from '@teambit/component';\nimport type { Workspace } from '@teambit/workspace';\nimport highlight from 'cli-highlight';\nimport type { PubSubEngine } from 'graphql-subscriptions';\nimport type { DevFilesMain } from '@teambit/dev-files';\nimport type { Tester, CallbackFn } from './tester';\nimport { Tests } from './tester';\nimport { TesterAspect } from './tester.aspect';\nimport type { 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 const name = `${chalk.green('configured tester:')} ${descriptor?.id} (${descriptor?.displayName} @ ${\n descriptor?.version\n })`;\n const configLabel = chalk.green('tester config:');\n const configObj = descriptor?.config\n ? highlight(descriptor?.config, { language: 'javascript', ignoreIllegals: true })\n : '';\n return `${name}\\n${configLabel}\\n${configObj}`;\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 if (!context.env.getTester) {\n return new Tests([]);\n }\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 updateSnapshot: options.updateSnapshot,\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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","ignoreList":[]}
|
package/dist/tester.task.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BuildContext, BuiltTaskResult, BuildTask, ArtifactDefinition } from '@teambit/builder';
|
|
2
|
-
import { DevFilesMain } from '@teambit/dev-files';
|
|
1
|
+
import type { BuildContext, BuiltTaskResult, BuildTask, ArtifactDefinition } from '@teambit/builder';
|
|
2
|
+
import type { DevFilesMain } from '@teambit/dev-files';
|
|
3
3
|
/**
|
|
4
4
|
* tester build task. Allows to test components during component build.
|
|
5
5
|
*/
|
package/dist/tester.task.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_builder","data","require","_fsExtra","_interopRequireDefault","_path","_compiler","_component","_utils","_junitGenerator","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TesterTask","constructor","aspectId","devFiles","CompilerAspect","id","execute","context","env","getTester","componentsResults","components","capsuleNetwork","originalSeedersCapsules","getAllComponents","tester","componentsSpecFiles","ComponentMap","as","component","detectTestFiles","testCount","toArray","reduce","acc","specs","length","artifacts","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"],"sources":["tester.task.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, BuildTask, CAPSULE_ARTIFACTS_DIR, ArtifactDefinition } 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(\n readonly aspectId: string,\n private devFiles: DevFilesMain\n ) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n if (!context.env.getTester) {\n return { componentsResults: [] };\n }\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(): ArtifactDefinition[] {\n return [\n {\n name: 'junit',\n globPatterns: [getJUnitArtifactPath()],\n },\n ];\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_builder","data","require","_fsExtra","_interopRequireDefault","_path","_compiler","_component","_utils","_junitGenerator","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TesterTask","constructor","aspectId","devFiles","CompilerAspect","id","execute","context","env","getTester","componentsResults","components","capsuleNetwork","originalSeedersCapsules","getAllComponents","tester","componentsSpecFiles","ComponentMap","as","component","detectTestFiles","testCount","toArray","reduce","acc","specs","length","artifacts","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"],"sources":["tester.task.ts"],"sourcesContent":["import type { BuildContext, BuiltTaskResult, BuildTask, ArtifactDefinition } from '@teambit/builder';\nimport { CAPSULE_ARTIFACTS_DIR } from '@teambit/builder';\nimport fs from 'fs-extra';\nimport { join } from 'path';\nimport type { Compiler } from '@teambit/compiler';\nimport { CompilerAspect } from '@teambit/compiler';\nimport type { DevFilesMain } from '@teambit/dev-files';\nimport { ComponentMap } from '@teambit/component';\nimport type { 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(\n readonly aspectId: string,\n private devFiles: DevFilesMain\n ) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n if (!context.env.getTester) {\n return { componentsResults: [] };\n }\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(): ArtifactDefinition[] {\n return [\n {\n name: 'junit',\n globPatterns: [getJUnitArtifactPath()],\n },\n ];\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { SlotRegistry } from '@teambit/harmony';
|
|
3
|
-
import { ComponentUI } from '@teambit/component';
|
|
4
|
-
import { ComponentCompareUI } from '@teambit/component-compare';
|
|
5
|
-
import { DocsUI } from '@teambit/docs';
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
|
+
import type { SlotRegistry } from '@teambit/harmony';
|
|
3
|
+
import type { ComponentUI } from '@teambit/component';
|
|
4
|
+
import type { ComponentCompareUI } from '@teambit/component-compare';
|
|
5
|
+
import type { DocsUI } from '@teambit/docs';
|
|
6
6
|
export type EmptyStateSlot = SlotRegistry<ComponentType>;
|
|
7
7
|
export declare class TesterUI {
|
|
8
8
|
private component;
|
|
@@ -16,7 +16,7 @@ export declare class TesterUI {
|
|
|
16
16
|
*/
|
|
17
17
|
registerEmptyState(emptyStateComponent: ComponentType): this;
|
|
18
18
|
getTesterCompare(): import("react/jsx-runtime").JSX.Element;
|
|
19
|
-
static slots: ((registerFn: () => string) => SlotRegistry<
|
|
19
|
+
static slots: ((registerFn: () => string) => SlotRegistry<ComponentType>)[];
|
|
20
20
|
static provider([component, componentCompare, docs]: [ComponentUI, ComponentCompareUI, DocsUI], config: any, [emptyStateSlot]: [EmptyStateSlot]): Promise<TesterUI>;
|
|
21
21
|
}
|
|
22
22
|
export default TesterUI;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","data","_interopRequireDefault","require","_ui","_harmony","_component","_defenderUi","_componentCompare","_defenderUi2","_docs","_client","_designUi","_designUi2","_evangelistElements","_baseReactNavigation","_tests","_tester","_coverageLabelModule","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GET_COMPONENT","gql","TesterUI","constructor","component","emptyStateSlot","registerEmptyState","emptyStateComponent","register","getTesterCompare","createElement","CompareTests","emptyState","provider","componentCompare","docs","config","testerUi","section","TestsSection","testerCompareSection","TestCompareSection","registerRoute","route","registerNavigation","navigationLink","order","registerRoutes","registerTitleBadge","badge","legacyComponentModel","useQuery","variables","id","toString","getHost","getTests","total","testsResults","coverage","Tooltip","className","styles","coverageTooltip","placement","content","coverageTooltipContent","lines","covered","Link","href","document","location","search","link","PillLabel","label","pct","Icon","of","weight","exports","ComponentAspect","ComponentCompareAspect","DocsAspect","UIRuntime","Slot","withType","_default","TesterAspect","addRuntime"],"sources":["tester.ui.runtime.tsx"],"sourcesContent":["import React, { ComponentType } from 'react';\nimport { UIRuntime } from '@teambit/ui';\nimport { SlotRegistry, Slot } from '@teambit/harmony';\nimport { ComponentAspect, ComponentModel, ComponentUI } from '@teambit/component';\nimport { CompareTests } from '@teambit/defender.ui.test-compare';\nimport { ComponentCompareUI, ComponentCompareAspect } from '@teambit/component-compare';\nimport { TestCompareSection } from '@teambit/defender.ui.test-compare-section';\nimport { DocsAspect, DocsUI } from '@teambit/docs';\nimport { gql, useQuery } from '@apollo/client';\nimport { PillLabel } from '@teambit/design.ui.pill-label';\nimport { Tooltip } from '@teambit/design.ui.tooltip';\nimport { Icon } from '@teambit/evangelist.elements.icon';\nimport { Link } from '@teambit/base-react.navigation.link';\nimport { TestsSection } from './tests.section';\nimport { TesterAspect } from './tester.aspect';\nimport styles from './coverage-label.module.scss';\n\nconst GET_COMPONENT = gql`\n query ($id: String!) {\n getHost {\n id # for GQL caching\n getTests(id: $id) {\n loading\n testsResults {\n coverage {\n total {\n lines {\n covered\n total\n pct\n }\n }\n }\n }\n }\n }\n }\n`;\n\nexport type EmptyStateSlot = SlotRegistry<ComponentType>;\nexport class TesterUI {\n static dependencies = [ComponentAspect, ComponentCompareAspect, DocsAspect];\n\n static runtime = UIRuntime;\n\n stageKey?: string;\n\n constructor(\n private component: ComponentUI,\n private emptyStateSlot: EmptyStateSlot\n ) {}\n\n /**\n * register a new tester empty state. this allows to register a different empty state from each environment for example.\n */\n registerEmptyState(emptyStateComponent: ComponentType) {\n this.emptyStateSlot.register(emptyStateComponent);\n return this;\n }\n\n getTesterCompare() {\n return <CompareTests emptyState={this.emptyStateSlot} />;\n }\n\n static slots = [Slot.withType<ComponentType>()];\n\n static async provider(\n [component, componentCompare, docs]: [ComponentUI, ComponentCompareUI, DocsUI],\n config,\n [emptyStateSlot]: [EmptyStateSlot]\n ) {\n const testerUi = new TesterUI(component, emptyStateSlot);\n const section = new TestsSection(emptyStateSlot);\n const testerCompareSection = new TestCompareSection(testerUi);\n component.registerRoute(section.route);\n component.registerNavigation(section.navigationLink, section.order);\n componentCompare.registerNavigation(testerCompareSection);\n componentCompare.registerRoutes([testerCompareSection.route]);\n docs.registerTitleBadge({\n component: function badge({ legacyComponentModel }: { legacyComponentModel: ComponentModel }) {\n const { data } = useQuery(GET_COMPONENT, {\n variables: { id: legacyComponentModel.id.toString() },\n });\n\n if (!data || !data.getHost || !data.getHost.getTests) return null;\n\n const total = data.getHost.getTests.testsResults?.coverage?.total as {\n lines: {\n covered: number;\n total: number;\n pct: number;\n };\n };\n\n if (!total) return null;\n\n return (\n <Tooltip\n className={styles.coverageTooltip}\n placement=\"top\"\n content={\n <div className={styles.coverageTooltipContent}>\n {total.lines.covered}/{total.lines.total} lines covered\n </div>\n }\n >\n <Link href={`~tests${document.location.search}`} className={styles.link}>\n <PillLabel className={styles.label}>\n <span>{total.lines.pct}%</span>\n <Icon of=\"scan-component\" />\n </PillLabel>\n </Link>\n </Tooltip>\n );\n },\n weight: 30,\n });\n return testerUi;\n }\n}\n\nexport default TesterUI;\n\nTesterAspect.addRuntime(TesterUI);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","data","_interopRequireDefault","require","_ui","_harmony","_component","_defenderUi","_componentCompare","_defenderUi2","_docs","_client","_designUi","_designUi2","_evangelistElements","_baseReactNavigation","_tests","_tester","_coverageLabelModule","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GET_COMPONENT","gql","TesterUI","constructor","component","emptyStateSlot","registerEmptyState","emptyStateComponent","register","getTesterCompare","createElement","CompareTests","emptyState","provider","componentCompare","docs","config","testerUi","section","TestsSection","testerCompareSection","TestCompareSection","registerRoute","route","registerNavigation","navigationLink","order","registerRoutes","registerTitleBadge","badge","legacyComponentModel","useQuery","variables","id","toString","getHost","getTests","total","testsResults","coverage","Tooltip","className","styles","coverageTooltip","placement","content","coverageTooltipContent","lines","covered","Link","href","document","location","search","link","PillLabel","label","pct","Icon","of","weight","exports","ComponentAspect","ComponentCompareAspect","DocsAspect","UIRuntime","Slot","withType","_default","TesterAspect","addRuntime"],"sources":["tester.ui.runtime.tsx"],"sourcesContent":["import type { ComponentType } from 'react';\nimport React from 'react';\nimport { UIRuntime } from '@teambit/ui';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { ComponentModel, ComponentUI } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { CompareTests } from '@teambit/defender.ui.test-compare';\nimport type { ComponentCompareUI } from '@teambit/component-compare';\nimport { ComponentCompareAspect } from '@teambit/component-compare';\nimport { TestCompareSection } from '@teambit/defender.ui.test-compare-section';\nimport type { DocsUI } from '@teambit/docs';\nimport { DocsAspect } from '@teambit/docs';\nimport { gql, useQuery } from '@apollo/client';\nimport { PillLabel } from '@teambit/design.ui.pill-label';\nimport { Tooltip } from '@teambit/design.ui.tooltip';\nimport { Icon } from '@teambit/evangelist.elements.icon';\nimport { Link } from '@teambit/base-react.navigation.link';\nimport { TestsSection } from './tests.section';\nimport { TesterAspect } from './tester.aspect';\nimport styles from './coverage-label.module.scss';\n\nconst GET_COMPONENT = gql`\n query ($id: String!) {\n getHost {\n id # for GQL caching\n getTests(id: $id) {\n loading\n testsResults {\n coverage {\n total {\n lines {\n covered\n total\n pct\n }\n }\n }\n }\n }\n }\n }\n`;\n\nexport type EmptyStateSlot = SlotRegistry<ComponentType>;\nexport class TesterUI {\n static dependencies = [ComponentAspect, ComponentCompareAspect, DocsAspect];\n\n static runtime = UIRuntime;\n\n stageKey?: string;\n\n constructor(\n private component: ComponentUI,\n private emptyStateSlot: EmptyStateSlot\n ) {}\n\n /**\n * register a new tester empty state. this allows to register a different empty state from each environment for example.\n */\n registerEmptyState(emptyStateComponent: ComponentType) {\n this.emptyStateSlot.register(emptyStateComponent);\n return this;\n }\n\n getTesterCompare() {\n return <CompareTests emptyState={this.emptyStateSlot} />;\n }\n\n static slots = [Slot.withType<ComponentType>()];\n\n static async provider(\n [component, componentCompare, docs]: [ComponentUI, ComponentCompareUI, DocsUI],\n config,\n [emptyStateSlot]: [EmptyStateSlot]\n ) {\n const testerUi = new TesterUI(component, emptyStateSlot);\n const section = new TestsSection(emptyStateSlot);\n const testerCompareSection = new TestCompareSection(testerUi);\n component.registerRoute(section.route);\n component.registerNavigation(section.navigationLink, section.order);\n componentCompare.registerNavigation(testerCompareSection);\n componentCompare.registerRoutes([testerCompareSection.route]);\n docs.registerTitleBadge({\n component: function badge({ legacyComponentModel }: { legacyComponentModel: ComponentModel }) {\n const { data } = useQuery(GET_COMPONENT, {\n variables: { id: legacyComponentModel.id.toString() },\n });\n\n if (!data || !data.getHost || !data.getHost.getTests) return null;\n\n const total = data.getHost.getTests.testsResults?.coverage?.total as {\n lines: {\n covered: number;\n total: number;\n pct: number;\n };\n };\n\n if (!total) return null;\n\n return (\n <Tooltip\n className={styles.coverageTooltip}\n placement=\"top\"\n content={\n <div className={styles.coverageTooltipContent}>\n {total.lines.covered}/{total.lines.total} lines covered\n </div>\n }\n >\n <Link href={`~tests${document.location.search}`} className={styles.link}>\n <PillLabel className={styles.label}>\n <span>{total.lines.pct}%</span>\n <Icon of=\"scan-component\" />\n </PillLabel>\n </Link>\n </Tooltip>\n );\n },\n weight: 30,\n });\n return testerUi;\n }\n}\n\nexport default TesterUI;\n\nTesterAspect.addRuntime(TesterUI);\n"],"mappings":"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","ignoreList":[]}
|
package/dist/tests.section.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Section } from '@teambit/component';
|
|
2
|
-
import { EmptyStateSlot } from './tester.ui.runtime';
|
|
1
|
+
import type { Section } from '@teambit/component';
|
|
2
|
+
import type { EmptyStateSlot } from './tester.ui.runtime';
|
|
3
3
|
export declare class TestsSection implements Section {
|
|
4
4
|
private emptyStateSlot;
|
|
5
5
|
constructor(emptyStateSlot: EmptyStateSlot);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","data","_interopRequireDefault","require","_defenderUi","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TestsSection","constructor","emptyStateSlot","path","element","createElement","TestsPage","emptyState","href","children","hideInMinimalMode","exports"],"sources":["tests.section.tsx"],"sourcesContent":["import React from 'react';\nimport { Section } from '@teambit/component';\nimport { TestsPage } from '@teambit/defender.ui.test-page';\nimport { EmptyStateSlot } from './tester.ui.runtime';\n\nexport class TestsSection implements Section {\n constructor(private emptyStateSlot: EmptyStateSlot) {}\n\n route = {\n path: '~tests',\n element: <TestsPage emptyState={this.emptyStateSlot} />,\n };\n navigationLink = {\n href: '~tests',\n children: 'Tests',\n hideInMinimalMode: true,\n };\n order = 40;\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2D,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAGpD,MAAMgB,YAAY,CAAoB;EAC3CC,WAAWA,CAASC,cAA8B,EAAE;IAAA,KAAhCA,cAA8B,GAA9BA,cAA8B;IAAApB,eAAA,gBAE1C;MACNqB,IAAI,EAAE,QAAQ;MACdC,OAAO,eAAE9B,MAAA,GAAAO,OAAA,CAAAwB,aAAA,CAAC3B,WAAA,GAAA4B,SAAS;QAACC,UAAU,EAAE,IAAI,CAACL;MAAe,CAAE;IACxD,CAAC;IAAApB,eAAA,yBACgB;MACf0B,IAAI,EAAE,QAAQ;MACdC,QAAQ,EAAE,OAAO;MACjBC,iBAAiB,EAAE;IACrB,CAAC;IAAA5B,eAAA,gBACO,EAAE;EAX2C;AAYvD;AAAC6B,OAAA,CAAAX,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","data","_interopRequireDefault","require","_defenderUi","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TestsSection","constructor","emptyStateSlot","path","element","createElement","TestsPage","emptyState","href","children","hideInMinimalMode","exports"],"sources":["tests.section.tsx"],"sourcesContent":["import React from 'react';\nimport type { Section } from '@teambit/component';\nimport { TestsPage } from '@teambit/defender.ui.test-page';\nimport type { EmptyStateSlot } from './tester.ui.runtime';\n\nexport class TestsSection implements Section {\n constructor(private emptyStateSlot: EmptyStateSlot) {}\n\n route = {\n path: '~tests',\n element: <TestsPage emptyState={this.emptyStateSlot} />,\n };\n navigationLink = {\n href: '~tests',\n children: 'Tests',\n hideInMinimalMode: true,\n };\n order = 40;\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2D,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAGpD,MAAMgB,YAAY,CAAoB;EAC3CC,WAAWA,CAASC,cAA8B,EAAE;IAAA,KAAhCA,cAA8B,GAA9BA,cAA8B;IAAApB,eAAA,gBAE1C;MACNqB,IAAI,EAAE,QAAQ;MACdC,OAAO,eAAE9B,MAAA,GAAAO,OAAA,CAAAwB,aAAA,CAAC3B,WAAA,GAAA4B,SAAS;QAACC,UAAU,EAAE,IAAI,CAACL;MAAe,CAAE;IACxD,CAAC;IAAApB,eAAA,yBACgB;MACf0B,IAAI,EAAE,QAAQ;MACdC,QAAQ,EAAE,OAAO;MACjBC,iBAAiB,EAAE;IACrB,CAAC;IAAA5B,eAAA,gBACO,EAAE;EAX2C;AAYvD;AAAC6B,OAAA,CAAAX,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_tester","data","require","detectTestFiles","component","devFiles","files","getDevFiles","testFiles","get","TesterAspect","id","state","filesystem","filter","file","includes","relative"],"sources":["detect-spec-files.ts"],"sourcesContent":["import { Component } from '@teambit/component';\nimport { DevFilesMain } from '@teambit/dev-files';\nimport { TesterAspect } from '../tester.aspect';\n\n/**\n * detect test files in components\n */\nexport function detectTestFiles(component: Component, devFiles: DevFilesMain) {\n const files = devFiles.getDevFiles(component);\n const testFiles = files.get(TesterAspect.id);\n return component.state.filesystem.files.filter((file) => testFiles.includes(file.relative));\n}\n"],"mappings":";;;;;;AAEA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA;AACA;AACA;AACO,SAASE,eAAeA,CAACC,SAAoB,EAAEC,QAAsB,EAAE;EAC5E,MAAMC,KAAK,GAAGD,QAAQ,CAACE,WAAW,CAACH,SAAS,CAAC;EAC7C,MAAMI,SAAS,GAAGF,KAAK,CAACG,GAAG,CAACC,sBAAY,CAACC,EAAE,CAAC;EAC5C,OAAOP,SAAS,CAACQ,KAAK,CAACC,UAAU,CAACP,KAAK,CAACQ,MAAM,CAAEC,IAAI,IAAKP,SAAS,CAACQ,QAAQ,CAACD,IAAI,CAACE,QAAQ,CAAC,CAAC;AAC7F","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_tester","data","require","detectTestFiles","component","devFiles","files","getDevFiles","testFiles","get","TesterAspect","id","state","filesystem","filter","file","includes","relative"],"sources":["detect-spec-files.ts"],"sourcesContent":["import type { Component } from '@teambit/component';\nimport type { DevFilesMain } from '@teambit/dev-files';\nimport { TesterAspect } from '../tester.aspect';\n\n/**\n * detect test files in components\n */\nexport function detectTestFiles(component: Component, devFiles: DevFilesMain) {\n const files = devFiles.getDevFiles(component);\n const testFiles = files.get(TesterAspect.id);\n return component.state.filesystem.files.filter((file) => testFiles.includes(file.relative));\n}\n"],"mappings":";;;;;;AAEA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA;AACA;AACA;AACO,SAASE,eAAeA,CAACC,SAAoB,EAAEC,QAAsB,EAAE;EAC5E,MAAMC,KAAK,GAAGD,QAAQ,CAACE,WAAW,CAACH,SAAS,CAAC;EAC7C,MAAMI,SAAS,GAAGF,KAAK,CAACG,GAAG,CAACC,sBAAY,CAACC,EAAE,CAAC;EAC5C,OAAOP,SAAS,CAACQ,KAAK,CAACC,UAAU,CAACP,KAAK,CAACQ,MAAM,CAAEC,IAAI,IAAKP,SAAS,CAACQ,QAAQ,CAACD,IAAI,CAACE,QAAQ,CAAC,CAAC;AAC7F","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ComponentsResults } from '../tester';
|
|
1
|
+
import type { ComponentsResults } from '../tester';
|
|
2
2
|
export declare function testsResultsToJUnitFormat(components: ComponentsResults[]): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_junitReportBuilder","data","_interopRequireDefault","require","_stripAnsi","e","__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,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_junitReportBuilder","data","_interopRequireDefault","require","_stripAnsi","e","__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 type { 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,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/tester",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.669",
|
|
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.
|
|
9
|
+
"version": "1.0.669"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "4.1.2",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@teambit/harmony": "0.4.7",
|
|
24
24
|
"@teambit/component-id": "1.2.4",
|
|
25
25
|
"@teambit/tests-results": "1.0.5",
|
|
26
|
-
"@teambit/component.sources": "0.0.
|
|
26
|
+
"@teambit/component.sources": "0.0.110",
|
|
27
27
|
"@teambit/defender.ui.test-compare-section": "0.0.101",
|
|
28
28
|
"@teambit/defender.ui.test-compare": "0.0.288",
|
|
29
29
|
"@teambit/design.ui.pill-label": "0.0.356",
|
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
"@teambit/evangelist.elements.icon": "1.0.2",
|
|
32
32
|
"@teambit/defender.ui.test-page": "0.0.66",
|
|
33
33
|
"@teambit/bit-error": "0.0.404",
|
|
34
|
-
"@teambit/cli": "0.0.
|
|
35
|
-
"@teambit/logger": "0.0.
|
|
36
|
-
"@teambit/workspace": "1.0.
|
|
37
|
-
"@teambit/envs": "1.0.
|
|
38
|
-
"@teambit/component": "1.0.
|
|
39
|
-
"@teambit/graphql": "1.0.
|
|
40
|
-
"@teambit/builder": "1.0.
|
|
41
|
-
"@teambit/dev-files": "1.0.
|
|
42
|
-
"@teambit/ui": "1.0.
|
|
43
|
-
"@teambit/compiler": "1.0.
|
|
44
|
-
"@teambit/component-compare": "1.0.
|
|
45
|
-
"@teambit/docs": "1.0.
|
|
34
|
+
"@teambit/cli": "0.0.1246",
|
|
35
|
+
"@teambit/logger": "0.0.1339",
|
|
36
|
+
"@teambit/workspace": "1.0.669",
|
|
37
|
+
"@teambit/envs": "1.0.669",
|
|
38
|
+
"@teambit/component": "1.0.669",
|
|
39
|
+
"@teambit/graphql": "1.0.669",
|
|
40
|
+
"@teambit/builder": "1.0.669",
|
|
41
|
+
"@teambit/dev-files": "1.0.669",
|
|
42
|
+
"@teambit/ui": "1.0.669",
|
|
43
|
+
"@teambit/compiler": "1.0.669",
|
|
44
|
+
"@teambit/component-compare": "1.0.669",
|
|
45
|
+
"@teambit/docs": "1.0.669"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@types/fs-extra": "9.0.7",
|
package/tester.ui.runtime.tsx
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
|
+
import React from 'react';
|
|
2
3
|
import { UIRuntime } from '@teambit/ui';
|
|
3
|
-
import { SlotRegistry
|
|
4
|
-
import {
|
|
4
|
+
import type { SlotRegistry } from '@teambit/harmony';
|
|
5
|
+
import { Slot } from '@teambit/harmony';
|
|
6
|
+
import type { ComponentModel, ComponentUI } from '@teambit/component';
|
|
7
|
+
import { ComponentAspect } from '@teambit/component';
|
|
5
8
|
import { CompareTests } from '@teambit/defender.ui.test-compare';
|
|
6
|
-
import { ComponentCompareUI
|
|
9
|
+
import type { ComponentCompareUI } from '@teambit/component-compare';
|
|
10
|
+
import { ComponentCompareAspect } from '@teambit/component-compare';
|
|
7
11
|
import { TestCompareSection } from '@teambit/defender.ui.test-compare-section';
|
|
8
|
-
import {
|
|
12
|
+
import type { DocsUI } from '@teambit/docs';
|
|
13
|
+
import { DocsAspect } from '@teambit/docs';
|
|
9
14
|
import { gql, useQuery } from '@apollo/client';
|
|
10
15
|
import { PillLabel } from '@teambit/design.ui.pill-label';
|
|
11
16
|
import { Tooltip } from '@teambit/design.ui.tooltip';
|
package/tests.section.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Section } from '@teambit/component';
|
|
2
|
+
import type { Section } from '@teambit/component';
|
|
3
3
|
import { TestsPage } from '@teambit/defender.ui.test-page';
|
|
4
|
-
import { EmptyStateSlot } from './tester.ui.runtime';
|
|
4
|
+
import type { EmptyStateSlot } from './tester.ui.runtime';
|
|
5
5
|
|
|
6
6
|
export class TestsSection implements Section {
|
|
7
7
|
constructor(private emptyStateSlot: EmptyStateSlot) {}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Component } from '@teambit/component';
|
|
2
|
-
import { DevFilesMain } from '@teambit/dev-files';
|
|
1
|
+
import type { Component } from '@teambit/component';
|
|
2
|
+
import type { DevFilesMain } from '@teambit/dev-files';
|
|
3
3
|
import { TesterAspect } from '../tester.aspect';
|
|
4
4
|
|
|
5
5
|
/**
|
package/utils/junit-generator.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import junitReportBuilder from 'junit-report-builder';
|
|
2
2
|
import stripAnsi from 'strip-ansi';
|
|
3
|
-
import { ComponentsResults } from '../tester';
|
|
3
|
+
import type { ComponentsResults } from '../tester';
|
|
4
4
|
|
|
5
5
|
export function testsResultsToJUnitFormat(components: ComponentsResults[]): string {
|
|
6
6
|
const builder = junitReportBuilder.newBuilder();
|