@teambit/tester 0.0.737 → 0.0.738

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["export { NoTestFilesFound } from './no-test-files-found';\nexport { NoMatchingComponents } from './no-matching-components';\n"]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { NoTestFilesFound } from './no-test-files-found';\nexport { NoMatchingComponents } from './no-matching-components';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["no-matching-components.ts"],"names":["NoMatchingComponents","Error","constructor","pattern"],"mappings":";;;;;;;AAAO,MAAMA,oBAAN,SAAmCC,KAAnC,CAAyC;AAC9CC,EAAAA,WAAW,CAACC,OAAD,EAAkB;AAC3B,UAAO,kDAAiDA,OAAQ,EAAhE;AACD;;AAH6C","sourcesContent":["export class NoMatchingComponents extends Error {\n constructor(pattern: string) {\n super(`could not find components matching to pattern: ${pattern}`);\n }\n}\n"]}
1
+ {"version":3,"names":["NoMatchingComponents","Error","constructor","pattern"],"sources":["no-matching-components.ts"],"sourcesContent":["export class NoMatchingComponents extends Error {\n constructor(pattern: string) {\n super(`could not find components matching to pattern: ${pattern}`);\n }\n}\n"],"mappings":";;;;;;;AAAO,MAAMA,oBAAN,SAAmCC,KAAnC,CAAyC;EAC9CC,WAAW,CAACC,OAAD,EAAkB;IAC3B,MAAO,kDAAiDA,OAAQ,EAAhE;EACD;;AAH6C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["no-test-files-found.ts"],"names":["NoTestFilesFound","BitError","constructor","testRegex"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,gBAAN,SAA+BC,oBAA/B,CAAwC;AAC7CC,EAAAA,WAAW,CAACC,SAAD,EAAoB;AAC7B,UAAO,6BAA4BA,SAAU,qDAA7C;AACD;;AAH4C","sourcesContent":["import { BitError } from '@teambit/bit-error';\n\nexport class NoTestFilesFound extends BitError {\n constructor(testRegex: string) {\n super(`no test files for regex: '${testRegex}' found for any of the components in the workspace.`);\n }\n}\n"]}
1
+ {"version":3,"names":["NoTestFilesFound","BitError","constructor","testRegex"],"sources":["no-test-files-found.ts"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\n\nexport class NoTestFilesFound extends BitError {\n constructor(testRegex: string) {\n super(`no test files for regex: '${testRegex}' found for any of the components in the workspace.`);\n }\n}\n"],"mappings":";;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,gBAAN,SAA+BC,oBAA/B,CAAwC;EAC7CC,WAAW,CAACC,SAAD,EAAoB;IAC7B,MAAO,6BAA4BA,SAAU,qDAA7C;EACD;;AAH4C"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["TesterAspect"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;eAMeA,sB","sourcesContent":["import { TesterAspect } from './tester.aspect';\n\nexport { Tests } from './tester';\nexport type { Tester, TesterContext, CallbackFn, SpecFiles, ComponentPatternsMap, ComponentsResults } from './tester';\nexport type { TesterMain } from './tester.main.runtime';\nexport type { TesterUI } from './tester.ui.runtime';\n\nexport { TesterAspect };\nexport default TesterAspect;\n"]}
1
+ {"version":3,"names":["TesterAspect"],"sources":["index.ts"],"sourcesContent":["import { TesterAspect } from './tester.aspect';\n\nexport { Tests } from './tester';\nexport type { Tester, TesterContext, CallbackFn, SpecFiles, ComponentPatternsMap, ComponentsResults } from './tester';\nexport type { TesterMain } from './tester.main.runtime';\nexport type { TesterUI } from './tester.ui.runtime';\n\nexport { TesterAspect };\nexport default TesterAspect;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;eAMeA,sB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["test.cmd.tsx"],"names":["TestCmd","constructor","tester","workspace","logger","render","userPattern","watch","debug","all","env","scope","junit","coverage","timer","Timer","create","scopeName","undefined","start","ConsumerNotFound","getPatternWithScope","pattern","patternWithScope","components","getComponentsByUserInput","length","NoMatchingComponents","code","data","console","chalk","cyan","name","off","tests","test","hasErrors","seconds","stop"],"mappings":"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","sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { Logger } from '@teambit/logger';\nimport { Workspace } from '@teambit/workspace';\nimport { ConsumerNotFound } from '@teambit/legacy/dist/consumer/exceptions';\nimport { Timer } from '@teambit/legacy/dist/toolbox/timer';\nimport { Box, Text } from 'ink';\nimport React from 'react';\nimport { NoMatchingComponents } from './exceptions';\n\nimport type { TesterMain } from './tester.main.runtime';\n\ntype TestFlags = {\n watch: boolean;\n debug: boolean;\n all: boolean;\n env?: string;\n scope?: string;\n junit?: string;\n coverage?: boolean;\n};\n\nexport class TestCmd implements Command {\n name = 'test [pattern]';\n description = 'test set of components in your workspace';\n alias = 'at';\n group = 'development';\n shortDescription = '';\n options = [\n ['w', 'watch', 'start the tester in watch mode.'],\n ['d', 'debug', 'start the tester in debug mode.'],\n ['a', 'all', '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 the given env'],\n ['s', 'scope <scope>', 'name of the scope to test'],\n // TODO: we need to reduce this redundant casting every time.\n ] as CommandOptions;\n\n constructor(private tester: TesterMain, private workspace: Workspace, private logger: Logger) {}\n\n async render(\n [userPattern]: [string],\n { watch = false, debug = false, all = false, env, scope, junit, coverage = false }: TestFlags\n ) {\n const timer = Timer.create();\n const scopeName = typeof scope === 'string' ? scope : undefined;\n timer.start();\n if (!this.workspace) throw new ConsumerNotFound();\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(all, patternWithScope, true);\n if (!components.length) {\n if (userPattern) throw new NoMatchingComponents(userPattern);\n return {\n code: 0,\n data: (\n <Box>\n <Text bold>\n no components found to test. use \"--all\" flag to test all components or specify the ids to test,\n otherwise, only new and modified components will be tested{' '}\n </Text>\n </Box>\n ),\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 });\n } else {\n const tests = await this.tester.test(components, {\n watch,\n debug,\n env,\n junit,\n coverage,\n });\n if (tests.hasErrors()) code = 1;\n }\n const { seconds } = timer.stop();\n\n if (watch) return <Box></Box>;\n return {\n code,\n data: (\n <Box>\n <Text>test has been completed in </Text>\n <Text color=\"cyan\">{seconds} </Text>\n <Text>seconds.</Text>\n </Box>\n ),\n };\n }\n}\n"]}
1
+ {"version":3,"names":["TestCmd","constructor","tester","workspace","logger","render","userPattern","watch","debug","all","env","scope","junit","coverage","timer","Timer","create","scopeName","undefined","start","ConsumerNotFound","getPatternWithScope","pattern","patternWithScope","components","getComponentsByUserInput","length","NoMatchingComponents","code","data","console","chalk","cyan","name","off","tests","test","hasErrors","seconds","stop"],"sources":["test.cmd.tsx"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { Logger } from '@teambit/logger';\nimport { Workspace } from '@teambit/workspace';\nimport { ConsumerNotFound } from '@teambit/legacy/dist/consumer/exceptions';\nimport { Timer } from '@teambit/legacy/dist/toolbox/timer';\nimport { Box, Text } from 'ink';\nimport React from 'react';\nimport { NoMatchingComponents } from './exceptions';\n\nimport type { TesterMain } from './tester.main.runtime';\n\ntype TestFlags = {\n watch: boolean;\n debug: boolean;\n all: boolean;\n env?: string;\n scope?: string;\n junit?: string;\n coverage?: boolean;\n};\n\nexport class TestCmd implements Command {\n name = 'test [pattern]';\n description = 'test set of components in your workspace';\n alias = 'at';\n group = 'development';\n shortDescription = '';\n options = [\n ['w', 'watch', 'start the tester in watch mode.'],\n ['d', 'debug', 'start the tester in debug mode.'],\n ['a', 'all', '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 the given env'],\n ['s', 'scope <scope>', 'name of the scope to test'],\n // TODO: we need to reduce this redundant casting every time.\n ] as CommandOptions;\n\n constructor(private tester: TesterMain, private workspace: Workspace, private logger: Logger) {}\n\n async render(\n [userPattern]: [string],\n { watch = false, debug = false, all = false, env, scope, junit, coverage = false }: TestFlags\n ) {\n const timer = Timer.create();\n const scopeName = typeof scope === 'string' ? scope : undefined;\n timer.start();\n if (!this.workspace) throw new ConsumerNotFound();\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(all, patternWithScope, true);\n if (!components.length) {\n if (userPattern) throw new NoMatchingComponents(userPattern);\n return {\n code: 0,\n data: (\n <Box>\n <Text bold>\n no components found to test. use \"--all\" flag to test all components or specify the ids to test,\n otherwise, only new and modified components will be tested{' '}\n </Text>\n </Box>\n ),\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 });\n } else {\n const tests = await this.tester.test(components, {\n watch,\n debug,\n env,\n junit,\n coverage,\n });\n if (tests.hasErrors()) code = 1;\n }\n const { seconds } = timer.stop();\n\n if (watch) return <Box></Box>;\n return {\n code,\n data: (\n <Box>\n <Text>test has been completed in </Text>\n <Text color=\"cyan\">{seconds} </Text>\n <Text>seconds.</Text>\n </Box>\n ),\n };\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["tester.aspect.ts"],"names":["TesterAspect","Aspect","create","id"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,YAAY,GAAGC,kBAAOC,MAAP,CAAc;AACxCC,EAAAA,EAAE,EAAE;AADoC,CAAd,CAArB;;;eAIQH,Y","sourcesContent":["import { Aspect } from '@teambit/harmony';\n\nexport const TesterAspect = Aspect.create({\n id: 'teambit.defender/tester',\n});\n\nexport default TesterAspect;\n"]}
1
+ {"version":3,"names":["TesterAspect","Aspect","create","id"],"sources":["tester.aspect.ts"],"sourcesContent":["import { Aspect } from '@teambit/harmony';\n\nexport const TesterAspect = Aspect.create({\n id: 'teambit.defender/tester',\n});\n\nexport default TesterAspect;\n"],"mappings":";;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,YAAY,GAAGC,iBAAA,CAAOC,MAAP,CAAc;EACxCC,EAAE,EAAE;AADoC,CAAd,CAArB;;;eAIQH,Y"}
@@ -1 +1 @@
1
- {"version":3,"sources":["tester.composition.tsx"],"names":["Logo","height","display","justifyContent","width"],"mappings":";;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,IAAI,GAAG,mBAClB;AAAK,EAAA,KAAK,EAAE;AAAEC,IAAAA,MAAM,EAAE,MAAV;AAAkBC,IAAAA,OAAO,EAAE,MAA3B;AAAmCC,IAAAA,cAAc,EAAE;AAAnD;AAAZ,gBACE;AAAK,EAAA,KAAK,EAAE;AAAEC,IAAAA,KAAK,EAAE;AAAT,GAAZ;AAA2B,EAAA,GAAG,EAAC;AAA/B,EADF,CADK","sourcesContent":["import React from 'react';\n\nexport const Logo = () => (\n <div style={{ height: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ width: 70 }} src=\"https://static.bit.dev/extensions-icons/tester.svg\" />\n </div>\n);\n"]}
1
+ {"version":3,"names":["Logo","height","display","justifyContent","width"],"sources":["tester.composition.tsx"],"sourcesContent":["import React from 'react';\n\nexport const Logo = () => (\n <div style={{ height: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ width: 70 }} src=\"https://static.bit.dev/extensions-icons/tester.svg\" />\n </div>\n);\n"],"mappings":";;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,IAAI,GAAG,mBAClB;EAAK,KAAK,EAAE;IAAEC,MAAM,EAAE,MAAV;IAAkBC,OAAO,EAAE,MAA3B;IAAmCC,cAAc,EAAE;EAAnD;AAAZ,gBACE;EAAK,KAAK,EAAE;IAAEC,KAAK,EAAE;EAAT,CAAZ;EAA2B,GAAG,EAAC;AAA/B,EADF,CADK"}
@@ -1 +1 @@
1
- {"version":3,"sources":["tester.graphql.ts"],"names":["testerSchema","tester","graphql","typeDefs","resolvers","Subscription","testsChanged","subscribe","pubsub","asyncIterator","OnTestsChanged","payload","variables","id","ComponentHost","getTests","host","componentId","resolveComponentId","component","get","testsResults","getTestsResults"],"mappings":";;;;;;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,SAASA,YAAT,CAAsBC,MAAtB,EAA0CC,OAA1C,EAAwE;AAC7E,SAAO;AACLC,IAAAA,QAAQ,EAAE,0BAAI;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KA3CS;AA4CLC,IAAAA,SAAS,EAAE;AACTC,MAAAA,YAAY,EAAE;AACZC,QAAAA,YAAY,EAAE;AACZC,UAAAA,SAAS,EAAE,wCACT,MAAML,OAAO,CAACM,MAAR,CAAeC,aAAf,CAA6BC,wBAA7B,CADG,EAET,CAACC,OAAD,EAAUC,SAAV,KAAwB;AACtB,mBAAOD,OAAO,CAACL,YAAR,CAAqBO,EAArB,KAA4BD,SAAS,CAACC,EAA7C;AACD,WAJQ;AADC;AADF,OADL;AAYTC,MAAAA,aAAa,EAAE;AACbC,QAAAA,QAAQ,EAAE,OAAOC,IAAP,EAA+B;AAAEH,UAAAA;AAAF,SAA/B,KAA0D;AAClE,gBAAMI,WAAW,GAAG,MAAMD,IAAI,CAACE,kBAAL,CAAwBL,EAAxB,CAA1B;AACA,gBAAMM,SAAS,GAAG,MAAMH,IAAI,CAACI,GAAL,CAASH,WAAT,CAAxB;AACA,cAAI,CAACE,SAAL,EAAgB,OAAO,IAAP;AAChB,gBAAME,YAAY,GAAG,MAAMpB,MAAM,CAACqB,eAAP,CAAuBH,SAAvB,CAA3B;AACA,cAAI,CAACE,YAAL,EAAmB,OAAO,IAAP;AACnB,iBAAOA,YAAP;AACD;AARY;AAZN;AA5CN,GAAP;AAoED","sourcesContent":["import { GraphqlMain, Schema } from '@teambit/graphql';\nimport { ComponentFactory } from '@teambit/component';\nimport { withFilter } from 'graphql-subscriptions';\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 }\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 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 component = await host.get(componentId);\n if (!component) return null;\n const testsResults = await tester.getTestsResults(component);\n if (!testsResults) return null;\n return testsResults;\n },\n },\n },\n };\n}\n"]}
1
+ {"version":3,"names":["testerSchema","tester","graphql","typeDefs","gql","resolvers","Subscription","testsChanged","subscribe","withFilter","pubsub","asyncIterator","OnTestsChanged","payload","variables","id","ComponentHost","getTests","host","componentId","resolveComponentId","component","get","testsResults","getTestsResults"],"sources":["tester.graphql.ts"],"sourcesContent":["import { GraphqlMain, Schema } from '@teambit/graphql';\nimport { ComponentFactory } from '@teambit/component';\nimport { withFilter } from 'graphql-subscriptions';\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 }\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 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 component = await host.get(componentId);\n if (!component) return null;\n const testsResults = await tester.getTestsResults(component);\n if (!testsResults) return null;\n return testsResults;\n },\n },\n },\n };\n}\n"],"mappings":";;;;;;;;;;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,SAASA,YAAT,CAAsBC,MAAtB,EAA0CC,OAA1C,EAAwE;EAC7E,OAAO;IACLC,QAAQ,EAAE,IAAAC,qBAAA,CAAI;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KA3CS;IA4CLC,SAAS,EAAE;MACTC,YAAY,EAAE;QACZC,YAAY,EAAE;UACZC,SAAS,EAAE,IAAAC,kCAAA,EACT,MAAMP,OAAO,CAACQ,MAAR,CAAeC,aAAf,CAA6BC,wBAA7B,CADG,EAET,CAACC,OAAD,EAAUC,SAAV,KAAwB;YACtB,OAAOD,OAAO,CAACN,YAAR,CAAqBQ,EAArB,KAA4BD,SAAS,CAACC,EAA7C;UACD,CAJQ;QADC;MADF,CADL;MAYTC,aAAa,EAAE;QACbC,QAAQ,EAAE,OAAOC,IAAP,EAA+B;UAAEH;QAAF,CAA/B,KAA0D;UAClE,MAAMI,WAAW,GAAG,MAAMD,IAAI,CAACE,kBAAL,CAAwBL,EAAxB,CAA1B;UACA,MAAMM,SAAS,GAAG,MAAMH,IAAI,CAACI,GAAL,CAASH,WAAT,CAAxB;UACA,IAAI,CAACE,SAAL,EAAgB,OAAO,IAAP;UAChB,MAAME,YAAY,GAAG,MAAMtB,MAAM,CAACuB,eAAP,CAAuBH,SAAvB,CAA3B;UACA,IAAI,CAACE,YAAL,EAAmB,OAAO,IAAP;UACnB,OAAOA,YAAP;QACD;MARY;IAZN;EA5CN,CAAP;AAoED"}
@@ -1 +1 @@
1
- {"version":3,"sources":["tester.ts"],"names":["Tests","constructor","components","errors","map","comp","flat"],"mappings":";;;;;;;;;;;AAKO,MAAMA,KAAN,CAAY;AACjBC,EAAAA,WAAW,CAAQC,UAAR,EAAyC;AAAA,SAAjCA,UAAiC,GAAjCA,UAAiC;AAAE;;AAC5C,MAANC,MAAM,GAAY;AACpB,WAAO,KAAKD,UAAL,CAAgBE,GAAhB,CAAqBC,IAAD,IAAUA,IAAI,CAACF,MAAL,IAAe,EAA7C,EAAiDG,IAAjD,EAAP;AACD;;AAJgB","sourcesContent":["import { Component, ComponentID, ComponentMap } from '@teambit/component';\nimport { ExecutionContext } from '@teambit/envs';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { TestsResult } from '@teambit/tests-results';\n\nexport class Tests {\n constructor(public components: ComponentsResults[]) {}\n get errors(): Error[] {\n return this.components.map((comp) => comp.errors || []).flat();\n }\n}\n\nexport type ComponentsResults = {\n /**\n * component id.\n */\n componentId: ComponentID;\n /**\n * test results for the component.\n */\n results?: TestsResult;\n /**\n * aggregated errors from all files\n */\n errors?: Error[];\n\n /**\n * loading.\n */\n loading?: boolean;\n};\n\nexport type SpecFiles = ComponentMap<AbstractVinyl[]>;\nexport type ComponentPatternsMap = ComponentMap<{ path: string; relative: string }[]>;\n\nexport interface TesterContext extends ExecutionContext {\n /**\n * whether the tester run for release (during bit build/tag) or not (during bit test command).\n */\n release: boolean;\n\n /**\n * list of components to test.\n */\n components: Component[];\n\n /**\n * component workspace.\n */\n // workspace: Workspace;\n\n /**\n * defines whether tester is expected to run in quiet mode.\n */\n quiet?: boolean;\n\n /**\n * list of spec files to test.\n */\n specFiles: SpecFiles;\n\n /**\n * rootPath of the component workspace or the capsule root dir (during build).\n */\n rootPath: string;\n\n /**\n * determines whether tester is expected to run in debug mode.\n */\n debug?: boolean;\n\n /**\n * is start from ui\n */\n ui?: boolean;\n\n /**\n * determines whether to start the tester in watch mode.\n */\n watch?: boolean;\n\n /**\n * whether the tester should show code coverage\n */\n coverage?: boolean;\n\n /**\n * array of patterns to test.\n */\n patterns: ComponentPatternsMap;\n}\n\n/**\n * tester interface allows extensions to implement a component tester into bit.\n */\nexport interface Tester {\n /**\n * display name of the tester.\n */\n displayName?: string;\n\n /**\n * icon of the tester.\n */\n icon?: string;\n\n /**\n * serialized config of the tester.\n */\n displayConfig?(): string;\n\n /**\n * path to the config in the filesystem.\n */\n configPath?: string;\n\n /**\n * id of the tester.\n */\n id: string;\n\n /**\n * on test run complete. (applies only during watch)\n * @param callback\n */\n onTestRunComplete?(callback: CallbackFn): Promise<void>;\n\n /**\n * execute tests on all components in the given execution context.\n */\n test(context: TesterContext): Promise<Tests>;\n\n /**\n * watch tests on all components\n */\n watch?(context: TesterContext): Promise<Tests>;\n /**\n * return the tester version.\n */\n version(): string;\n}\nexport type CallbackFn = (testSuite: Tests) => void;\n"]}
1
+ {"version":3,"names":["Tests","constructor","components","errors","map","comp","flat"],"sources":["tester.ts"],"sourcesContent":["import { Component, ComponentID, ComponentMap } from '@teambit/component';\nimport { ExecutionContext } from '@teambit/envs';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { TestsResult } from '@teambit/tests-results';\n\nexport class Tests {\n constructor(public components: ComponentsResults[]) {}\n get errors(): Error[] {\n return this.components.map((comp) => comp.errors || []).flat();\n }\n}\n\nexport type ComponentsResults = {\n /**\n * component id.\n */\n componentId: ComponentID;\n /**\n * test results for the component.\n */\n results?: TestsResult;\n /**\n * aggregated errors from all files\n */\n errors?: Error[];\n\n /**\n * loading.\n */\n loading?: boolean;\n};\n\nexport type SpecFiles = ComponentMap<AbstractVinyl[]>;\nexport type ComponentPatternsMap = ComponentMap<{ path: string; relative: string }[]>;\n\nexport interface TesterContext extends ExecutionContext {\n /**\n * whether the tester run for release (during bit build/tag) or not (during bit test command).\n */\n release: boolean;\n\n /**\n * list of components to test.\n */\n components: Component[];\n\n /**\n * component workspace.\n */\n // workspace: Workspace;\n\n /**\n * defines whether tester is expected to run in quiet mode.\n */\n quiet?: boolean;\n\n /**\n * list of spec files to test.\n */\n specFiles: SpecFiles;\n\n /**\n * rootPath of the component workspace or the capsule root dir (during build).\n */\n rootPath: string;\n\n /**\n * determines whether tester is expected to run in debug mode.\n */\n debug?: boolean;\n\n /**\n * is start from ui\n */\n ui?: boolean;\n\n /**\n * determines whether to start the tester in watch mode.\n */\n watch?: boolean;\n\n /**\n * whether the tester should show code coverage\n */\n coverage?: boolean;\n\n /**\n * array of patterns to test.\n */\n patterns: ComponentPatternsMap;\n}\n\n/**\n * tester interface allows extensions to implement a component tester into bit.\n */\nexport interface Tester {\n /**\n * display name of the tester.\n */\n displayName?: string;\n\n /**\n * icon of the tester.\n */\n icon?: string;\n\n /**\n * serialized config of the tester.\n */\n displayConfig?(): string;\n\n /**\n * path to the config in the filesystem.\n */\n configPath?: string;\n\n /**\n * id of the tester.\n */\n id: string;\n\n /**\n * on test run complete. (applies only during watch)\n * @param callback\n */\n onTestRunComplete?(callback: CallbackFn): Promise<void>;\n\n /**\n * execute tests on all components in the given execution context.\n */\n test(context: TesterContext): Promise<Tests>;\n\n /**\n * watch tests on all components\n */\n watch?(context: TesterContext): Promise<Tests>;\n /**\n * return the tester version.\n */\n version(): string;\n}\nexport type CallbackFn = (testSuite: Tests) => void;\n"],"mappings":";;;;;;;;;;;AAKO,MAAMA,KAAN,CAAY;EACjBC,WAAW,CAAQC,UAAR,EAAyC;IAAA,KAAjCA,UAAiC,GAAjCA,UAAiC;EAAE;;EAC5C,IAANC,MAAM,GAAY;IACpB,OAAO,KAAKD,UAAL,CAAgBE,GAAhB,CAAqBC,IAAD,IAAUA,IAAI,CAACF,MAAL,IAAe,EAA7C,EAAiDG,IAAjD,EAAP;EACD;;AAJgB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["tester.main.runtime.ts"],"names":["TesterMain","constructor","graphql","envs","workspace","service","task","devFiles","builder","test","components","opts","options","getOptions","envsRuntime","createEnvironment","env","runEnv","results","run","junit","generateJUnit","filePath","testsResults","map","envResult","data","flat","jUnit","fs","outputFile","watch","onTestRunComplete","forEach","component","_testsResults","componentId","toString","uiWatch","list","debug","ui","getTestsResults","entry","state","aspects","get","TesterAspect","id","componentStatus","getComponentStatus","getDataByAspect","modifyInfo","hasModifiedFiles","tests","loading","getTestsResultsFromState","getTestFiles","defaults","provider","cli","loggerAspect","config","logger","createLogger","testerService","TesterService","patterns","pubsub","registerService","registerDevPattern","tester","TesterTask","consumer","isLegacy","unregister","registerOnStart","watchOnStart","undefined","register","TestCmd","MainRuntime","CLIAspect","EnvsAspect","WorkspaceAspect","LoggerAspect","GraphqlAspect","UIAspect","DevFilesAspect","BuilderAspect","addRuntime"],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Component } from '@teambit/component';\nimport compact from 'lodash.compact';\nimport { EnvsAspect, EnvsExecutionResult, EnvsMain } from '@teambit/envs';\nimport { LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { UiMain, UIAspect } from '@teambit/ui';\nimport { merge } from 'lodash';\nimport DevFilesAspect, { DevFilesMain } from '@teambit/dev-files';\nimport { TestsResult } from '@teambit/tests-results';\nimport { ComponentsResults, CallbackFn, Tests } from './tester';\nimport { TestCmd } from './test.cmd';\nimport { TesterAspect } from './tester.aspect';\nimport { TesterService } from './tester.service';\nimport { TesterTask } from './tester.task';\nimport { detectTestFiles } from './utils';\nimport { testerSchema } from './tester.graphql';\nimport { testsResultsToJUnitFormat } from './utils/junit-generator';\n\nexport type TesterExtensionConfig = {\n /**\n * regex of the text environment.\n */\n testRegex: string;\n\n /**\n * determine whether to watch on start.\n */\n watchOnStart: boolean;\n patterns: string[];\n};\n\nexport type TesterOptions = {\n /**\n * start the tester in watch mode.\n */\n watch: boolean;\n\n /**\n * start the tester in debug mode.\n */\n debug: boolean;\n\n /**\n * start the tester in debug mode.\n */\n ui?: boolean;\n\n /**\n * initiate the tester on given env.\n */\n env?: string;\n\n /**\n * generate JUnit files on the specified dir\n */\n junit?: string;\n\n /**\n * show code coverage\n */\n coverage?: boolean;\n\n callback?: CallbackFn;\n};\n\nexport class TesterMain {\n static runtime = MainRuntime;\n static dependencies = [\n CLIAspect,\n EnvsAspect,\n WorkspaceAspect,\n LoggerAspect,\n GraphqlAspect,\n UIAspect,\n DevFilesAspect,\n BuilderAspect,\n ];\n\n constructor(\n /**\n * graphql extension.\n */\n private graphql: GraphqlMain,\n\n /**\n * envs extension.\n */\n private envs: EnvsMain,\n\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * tester service.\n */\n readonly service: TesterService,\n\n /**\n * build task.\n */\n readonly task: TesterTask,\n\n private devFiles: DevFilesMain,\n\n private builder: BuilderMain\n ) {}\n\n _testsResults: { [componentId: string]: ComponentsResults } | undefined[] = [];\n\n async test(components: Component[], opts?: TesterOptions): Promise<EnvsExecutionResult<Tests>> {\n const options = this.getOptions(opts);\n const envsRuntime = await this.envs.createEnvironment(components);\n if (opts?.env) {\n return envsRuntime.runEnv(opts.env, this.service, options);\n }\n const results = await envsRuntime.run(this.service, options);\n if (opts?.junit) {\n await this.generateJUnit(opts?.junit, results);\n }\n return results;\n }\n\n private async generateJUnit(filePath: string, testsResults: EnvsExecutionResult<Tests>) {\n const components = testsResults.results.map((envResult) => envResult.data?.components).flat();\n const jUnit = testsResultsToJUnitFormat(compact(components));\n await fs.outputFile(filePath, jUnit);\n }\n\n /**\n * watch all components for changes and test upon each.\n */\n async watch(components: Component[], opts?: TesterOptions) {\n const options = this.getOptions(opts);\n const envsRuntime = await this.envs.createEnvironment(components);\n if (opts?.env) {\n return envsRuntime.runEnv(opts.env, this.service, options);\n }\n\n this.service.onTestRunComplete((results) => {\n results.components.forEach((component) => {\n this._testsResults[component.componentId.toString()] = component;\n });\n });\n return envsRuntime.run(this.service, options);\n }\n\n async uiWatch() {\n const components = await this.workspace.list();\n return this.watch(components, { watch: true, debug: false, ui: true });\n }\n\n async getTestsResults(component: Component): Promise<{ testsResults?: TestsResult; loading: boolean } | undefined> {\n const entry = component.state.aspects.get(TesterAspect.id);\n const componentStatus = await this.workspace?.getComponentStatus(component);\n const data = this.builder.getDataByAspect(component, TesterAspect.id) as { tests: TestsResult };\n if ((entry || data) && !componentStatus?.modifyInfo?.hasModifiedFiles) {\n return { testsResults: data?.tests || entry?.data.tests, loading: false };\n }\n return this.getTestsResultsFromState(component);\n }\n\n private getTestsResultsFromState(component: Component) {\n const tests = this._testsResults[component.id.toString()];\n return { testsResults: tests?.results, loading: tests?.loading || false };\n }\n\n /**\n * get all test files of a component.\n */\n getTestFiles(component: Component) {\n return detectTestFiles(component, this.devFiles);\n }\n\n private getOptions(options?: TesterOptions): TesterOptions {\n const defaults = {\n watch: false,\n debug: false,\n };\n\n return merge(defaults, options);\n }\n\n static defaultConfig = {\n /**\n * default test regex for which files tester to apply on.\n */\n patterns: ['**/*.spec.+(js|ts|jsx|tsx)', '**/*.test.+(js|ts|jsx|tsx)'],\n\n /**\n * determine whether to watch on start.\n */\n watchOnStart: true,\n };\n\n static async provider(\n [cli, envs, workspace, loggerAspect, graphql, ui, devFiles, builder]: [\n CLIMain,\n EnvsMain,\n Workspace,\n LoggerMain,\n GraphqlMain,\n UiMain,\n DevFilesMain,\n BuilderMain\n ],\n config: TesterExtensionConfig\n ) {\n const logger = loggerAspect.createLogger(TesterAspect.id);\n const testerService = new TesterService(workspace, config.patterns, logger, graphql.pubsub, devFiles);\n envs.registerService(testerService);\n devFiles.registerDevPattern(config.patterns);\n const tester = new TesterMain(\n graphql,\n envs,\n workspace,\n testerService,\n new TesterTask(TesterAspect.id, devFiles),\n devFiles,\n builder\n );\n\n if (workspace && !workspace.consumer.isLegacy) {\n cli.unregister('test');\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\n graphql.register(testerSchema(tester, graphql));\n\n return tester;\n }\n}\n\nTesterAspect.addRuntime(TesterMain);\n"]}
1
+ {"version":3,"names":["TesterMain","constructor","graphql","envs","workspace","service","task","devFiles","builder","test","components","opts","options","getOptions","envsRuntime","createEnvironment","env","runEnv","results","run","junit","generateJUnit","filePath","testsResults","map","envResult","data","flat","jUnit","testsResultsToJUnitFormat","compact","fs","outputFile","watch","onTestRunComplete","forEach","component","_testsResults","componentId","toString","uiWatch","list","debug","ui","getTestsResults","entry","state","aspects","get","TesterAspect","id","componentStatus","getComponentStatus","getDataByAspect","modifyInfo","hasModifiedFiles","tests","loading","getTestsResultsFromState","getTestFiles","detectTestFiles","defaults","merge","provider","cli","loggerAspect","config","logger","createLogger","testerService","TesterService","patterns","pubsub","registerService","registerDevPattern","tester","TesterTask","consumer","isLegacy","unregister","registerOnStart","watchOnStart","undefined","register","TestCmd","testerSchema","MainRuntime","CLIAspect","EnvsAspect","WorkspaceAspect","LoggerAspect","GraphqlAspect","UIAspect","DevFilesAspect","BuilderAspect","addRuntime"],"sources":["tester.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Component } from '@teambit/component';\nimport compact from 'lodash.compact';\nimport { EnvsAspect, EnvsExecutionResult, EnvsMain } from '@teambit/envs';\nimport { LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { UiMain, UIAspect } from '@teambit/ui';\nimport { merge } from 'lodash';\nimport DevFilesAspect, { DevFilesMain } from '@teambit/dev-files';\nimport { TestsResult } from '@teambit/tests-results';\nimport { ComponentsResults, CallbackFn, Tests } from './tester';\nimport { TestCmd } from './test.cmd';\nimport { TesterAspect } from './tester.aspect';\nimport { TesterService } from './tester.service';\nimport { TesterTask } from './tester.task';\nimport { detectTestFiles } from './utils';\nimport { testerSchema } from './tester.graphql';\nimport { testsResultsToJUnitFormat } from './utils/junit-generator';\n\nexport type TesterExtensionConfig = {\n /**\n * regex of the text environment.\n */\n testRegex: string;\n\n /**\n * determine whether to watch on start.\n */\n watchOnStart: boolean;\n patterns: string[];\n};\n\nexport type TesterOptions = {\n /**\n * start the tester in watch mode.\n */\n watch: boolean;\n\n /**\n * start the tester in debug mode.\n */\n debug: boolean;\n\n /**\n * start the tester in debug mode.\n */\n ui?: boolean;\n\n /**\n * initiate the tester on given env.\n */\n env?: string;\n\n /**\n * generate JUnit files on the specified dir\n */\n junit?: string;\n\n /**\n * show code coverage\n */\n coverage?: boolean;\n\n callback?: CallbackFn;\n};\n\nexport class TesterMain {\n static runtime = MainRuntime;\n static dependencies = [\n CLIAspect,\n EnvsAspect,\n WorkspaceAspect,\n LoggerAspect,\n GraphqlAspect,\n UIAspect,\n DevFilesAspect,\n BuilderAspect,\n ];\n\n constructor(\n /**\n * graphql extension.\n */\n private graphql: GraphqlMain,\n\n /**\n * envs extension.\n */\n private envs: EnvsMain,\n\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * tester service.\n */\n readonly service: TesterService,\n\n /**\n * build task.\n */\n readonly task: TesterTask,\n\n private devFiles: DevFilesMain,\n\n private builder: BuilderMain\n ) {}\n\n _testsResults: { [componentId: string]: ComponentsResults } | undefined[] = [];\n\n async test(components: Component[], opts?: TesterOptions): Promise<EnvsExecutionResult<Tests>> {\n const options = this.getOptions(opts);\n const envsRuntime = await this.envs.createEnvironment(components);\n if (opts?.env) {\n return envsRuntime.runEnv(opts.env, this.service, options);\n }\n const results = await envsRuntime.run(this.service, options);\n if (opts?.junit) {\n await this.generateJUnit(opts?.junit, results);\n }\n return results;\n }\n\n private async generateJUnit(filePath: string, testsResults: EnvsExecutionResult<Tests>) {\n const components = testsResults.results.map((envResult) => envResult.data?.components).flat();\n const jUnit = testsResultsToJUnitFormat(compact(components));\n await fs.outputFile(filePath, jUnit);\n }\n\n /**\n * watch all components for changes and test upon each.\n */\n async watch(components: Component[], opts?: TesterOptions) {\n const options = this.getOptions(opts);\n const envsRuntime = await this.envs.createEnvironment(components);\n if (opts?.env) {\n return envsRuntime.runEnv(opts.env, this.service, options);\n }\n\n this.service.onTestRunComplete((results) => {\n results.components.forEach((component) => {\n this._testsResults[component.componentId.toString()] = component;\n });\n });\n return envsRuntime.run(this.service, options);\n }\n\n async uiWatch() {\n const components = await this.workspace.list();\n return this.watch(components, { watch: true, debug: false, ui: true });\n }\n\n async getTestsResults(component: Component): Promise<{ testsResults?: TestsResult; loading: boolean } | undefined> {\n const entry = component.state.aspects.get(TesterAspect.id);\n const componentStatus = await this.workspace?.getComponentStatus(component);\n const data = this.builder.getDataByAspect(component, TesterAspect.id) as { tests: TestsResult };\n if ((entry || data) && !componentStatus?.modifyInfo?.hasModifiedFiles) {\n return { testsResults: data?.tests || entry?.data.tests, loading: false };\n }\n return this.getTestsResultsFromState(component);\n }\n\n private getTestsResultsFromState(component: Component) {\n const tests = this._testsResults[component.id.toString()];\n return { testsResults: tests?.results, loading: tests?.loading || false };\n }\n\n /**\n * get all test files of a component.\n */\n getTestFiles(component: Component) {\n return detectTestFiles(component, this.devFiles);\n }\n\n private getOptions(options?: TesterOptions): TesterOptions {\n const defaults = {\n watch: false,\n debug: false,\n };\n\n return merge(defaults, options);\n }\n\n static defaultConfig = {\n /**\n * default test regex for which files tester to apply on.\n */\n patterns: ['**/*.spec.+(js|ts|jsx|tsx)', '**/*.test.+(js|ts|jsx|tsx)'],\n\n /**\n * determine whether to watch on start.\n */\n watchOnStart: true,\n };\n\n static async provider(\n [cli, envs, workspace, loggerAspect, graphql, ui, devFiles, builder]: [\n CLIMain,\n EnvsMain,\n Workspace,\n LoggerMain,\n GraphqlMain,\n UiMain,\n DevFilesMain,\n BuilderMain\n ],\n config: TesterExtensionConfig\n ) {\n const logger = loggerAspect.createLogger(TesterAspect.id);\n const testerService = new TesterService(workspace, config.patterns, logger, graphql.pubsub, devFiles);\n envs.registerService(testerService);\n devFiles.registerDevPattern(config.patterns);\n const tester = new TesterMain(\n graphql,\n envs,\n workspace,\n testerService,\n new TesterTask(TesterAspect.id, devFiles),\n devFiles,\n builder\n );\n\n if (workspace && !workspace.consumer.isLegacy) {\n cli.unregister('test');\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\n graphql.register(testerSchema(tester, graphql));\n\n return tester;\n }\n}\n\nTesterAspect.addRuntime(TesterMain);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["tester.service.tsx"],"names":["chalk","require","OnTestsChanged","TesterService","constructor","workspace","patterns","logger","pubsub","devFiles","render","env","descriptor","getDescriptor","id","displayName","version","config","language","ignoreIllegals","environment","getTester","undefined","tester","icon","displayConfig","onTestRunComplete","callback","_callback","run","context","options","specFiles","ComponentMap","as","components","component","testCount","toArray","reduce","acc","specs","length","componentWithTests","ui","consoleWarning","cyan","Tests","console","dir","componentDir","componentPatterns","getDevPatterns","TesterAspect","map","pattern","path","relative","testerContext","Object","assign","release","rootPath","debug","watch","coverage","results","forEach","publish","testsChanged","componentId","toString","testsResults","loading","test"],"mappings":"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","sourcesContent":["import { Logger } from '@teambit/logger';\nimport { resolve } from 'path';\nimport React from 'react';\nimport { Text, Newline } from 'ink';\nimport { EnvService, ExecutionContext, EnvDefinition } 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\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 * regex used to identify which files to test.\n */\n readonly patterns: string[],\n\n private logger: Logger,\n\n private pubsub: PubSubEngine,\n\n private devFiles: DevFilesMain\n ) {}\n\n _callback: CallbackFn | undefined;\n\n render(env: EnvDefinition) {\n const descriptor = this.getDescriptor(env);\n return (\n <Text key={descriptor?.id}>\n <Text color=\"cyan\">configured tester: </Text>\n <Text>\n {descriptor?.id} ({descriptor?.displayName} @ {descriptor?.version})\n </Text>\n <Newline />\n <Text underline color=\"cyan\">\n tester config:\n </Text>\n <Newline />\n <Text>\n {/* refactor a separate component which highlights for cli */}\n {highlight(descriptor?.config || '', { language: 'javascript', ignoreIllegals: true })}\n </Text>\n <Newline />\n </Text>\n );\n }\n\n getDescriptor(environment: EnvDefinition) {\n if (!environment.env.getTester) return undefined;\n const tester: Tester = environment.env.getTester();\n\n return {\n id: tester.id || '',\n displayName: tester.displayName || '',\n icon: tester.icon || '',\n config: tester.displayConfig ? tester.displayConfig() : '',\n version: tester.version ? tester.version() : '?',\n };\n }\n\n onTestRunComplete(callback: CallbackFn) {\n this._callback = callback;\n }\n\n async run(context: ExecutionContext, options: TesterOptions): Promise<Tests> {\n const tester: Tester = context.env.getTester();\n const specFiles = ComponentMap.as(context.components, (component) => {\n return detectTestFiles(component, this.devFiles);\n });\n const testCount = specFiles.toArray().reduce((acc, [, specs]) => acc + specs.length, 0);\n\n const componentWithTests = specFiles.toArray().reduce((acc: number, [, specs]) => {\n if (specs.length > 0) acc += 1;\n return acc;\n }, 0);\n\n if (testCount === 0 && !options.ui) {\n this.logger.consoleWarning(`no tests found for environment ${chalk.cyan(context.id)}\\n`);\n return new Tests([]);\n }\n\n if (!options.ui)\n this.logger.console(`testing ${componentWithTests} components with environment ${chalk.cyan(context.id)}\\n`);\n\n const patterns = ComponentMap.as(context.components, (component) => {\n const dir = this.workspace.componentDir(component.id);\n const componentPatterns = this.devFiles.getDevPatterns(component, TesterAspect.id);\n return componentPatterns.map((pattern: string) => ({ path: resolve(dir, pattern), relative: pattern }));\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 });\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"]}
1
+ {"version":3,"names":["chalk","require","OnTestsChanged","TesterService","constructor","workspace","patterns","logger","pubsub","devFiles","render","env","descriptor","getDescriptor","id","displayName","version","highlight","config","language","ignoreIllegals","environment","getTester","undefined","tester","icon","displayConfig","onTestRunComplete","callback","_callback","run","context","options","specFiles","ComponentMap","as","components","component","detectTestFiles","testCount","toArray","reduce","acc","specs","length","componentWithTests","ui","consoleWarning","cyan","Tests","console","dir","componentDir","componentPatterns","getDevPatterns","TesterAspect","map","pattern","path","resolve","relative","testerContext","Object","assign","release","rootPath","debug","watch","coverage","results","forEach","publish","testsChanged","componentId","toString","testsResults","loading","test"],"sources":["tester.service.tsx"],"sourcesContent":["import { Logger } from '@teambit/logger';\nimport { resolve } from 'path';\nimport React from 'react';\nimport { Text, Newline } from 'ink';\nimport { EnvService, ExecutionContext, EnvDefinition } 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\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 * regex used to identify which files to test.\n */\n readonly patterns: string[],\n\n private logger: Logger,\n\n private pubsub: PubSubEngine,\n\n private devFiles: DevFilesMain\n ) {}\n\n _callback: CallbackFn | undefined;\n\n render(env: EnvDefinition) {\n const descriptor = this.getDescriptor(env);\n return (\n <Text key={descriptor?.id}>\n <Text color=\"cyan\">configured tester: </Text>\n <Text>\n {descriptor?.id} ({descriptor?.displayName} @ {descriptor?.version})\n </Text>\n <Newline />\n <Text underline color=\"cyan\">\n tester config:\n </Text>\n <Newline />\n <Text>\n {/* refactor a separate component which highlights for cli */}\n {highlight(descriptor?.config || '', { language: 'javascript', ignoreIllegals: true })}\n </Text>\n <Newline />\n </Text>\n );\n }\n\n getDescriptor(environment: EnvDefinition) {\n if (!environment.env.getTester) return undefined;\n const tester: Tester = environment.env.getTester();\n\n return {\n id: tester.id || '',\n displayName: tester.displayName || '',\n icon: tester.icon || '',\n config: tester.displayConfig ? tester.displayConfig() : '',\n version: tester.version ? tester.version() : '?',\n };\n }\n\n onTestRunComplete(callback: CallbackFn) {\n this._callback = callback;\n }\n\n async run(context: ExecutionContext, options: TesterOptions): Promise<Tests> {\n const tester: Tester = context.env.getTester();\n const specFiles = ComponentMap.as(context.components, (component) => {\n return detectTestFiles(component, this.devFiles);\n });\n const testCount = specFiles.toArray().reduce((acc, [, specs]) => acc + specs.length, 0);\n\n const componentWithTests = specFiles.toArray().reduce((acc: number, [, specs]) => {\n if (specs.length > 0) acc += 1;\n return acc;\n }, 0);\n\n if (testCount === 0 && !options.ui) {\n this.logger.consoleWarning(`no tests found for environment ${chalk.cyan(context.id)}\\n`);\n return new Tests([]);\n }\n\n if (!options.ui)\n this.logger.console(`testing ${componentWithTests} components with environment ${chalk.cyan(context.id)}\\n`);\n\n const patterns = ComponentMap.as(context.components, (component) => {\n const dir = this.workspace.componentDir(component.id);\n const componentPatterns = this.devFiles.getDevPatterns(component, TesterAspect.id);\n return componentPatterns.map((pattern: string) => ({ path: resolve(dir, pattern), relative: pattern }));\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 });\n\n if (options.watch && options.ui && tester.watch) {\n if (tester.onTestRunComplete) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tester.onTestRunComplete((results) => {\n if (this._callback) this._callback(results);\n results.components.forEach((component) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.pubsub.publish(OnTestsChanged, {\n testsChanged: {\n id: component.componentId.toString(),\n testsResults: component.results,\n loading: component.loading,\n },\n });\n });\n });\n }\n\n return tester.watch(testerContext);\n }\n\n const results = await tester.test(testerContext);\n\n return results;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA,MAAMA,KAAK,GAAGC,OAAO,CAAC,OAAD,CAArB;;AAEO,MAAMC,cAAc,GAAG,gBAAvB;;;AA0BA,MAAMC,aAAN,CAAmE;EAGxEC,WAAW,CACAC,SADA;EAET;AACJ;AACA;EACaC,QALA,EAODC,MAPC,EASDC,MATC,EAWDC,QAXC,EAYT;IAAA,KAXSJ,SAWT,GAXSA,SAWT;IAAA,KAPSC,QAOT,GAPSA,QAOT;IAAA,KALQC,MAKR,GALQA,MAKR;IAAA,KAHQC,MAGR,GAHQA,MAGR;IAAA,KADQC,QACR,GADQA,QACR;IAAA,8CAdK,QAcL;IAAA;EAAE;;EAIJC,MAAM,CAACC,GAAD,EAAqB;IACzB,MAAMC,UAAU,GAAG,KAAKC,aAAL,CAAmBF,GAAnB,CAAnB;IACA,oBACE,+BAAC,WAAD;MAAM,GAAG,EAAEC,UAAF,aAAEA,UAAF,uBAAEA,UAAU,CAAEE;IAAvB,gBACE,+BAAC,WAAD;MAAM,KAAK,EAAC;IAAZ,yBADF,eAEE,+BAAC,WAAD,QACGF,UADH,aACGA,UADH,uBACGA,UAAU,CAAEE,EADf,QACqBF,UADrB,aACqBA,UADrB,uBACqBA,UAAU,CAAEG,WADjC,SACiDH,UADjD,aACiDA,UADjD,uBACiDA,UAAU,CAAEI,OAD7D,MAFF,eAKE,+BAAC,cAAD,OALF,eAME,+BAAC,WAAD;MAAM,SAAS,MAAf;MAAgB,KAAK,EAAC;IAAtB,oBANF,eASE,+BAAC,cAAD,OATF,eAUE,+BAAC,WAAD,QAEG,IAAAC,uBAAA,EAAU,CAAAL,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEM,MAAZ,KAAsB,EAAhC,EAAoC;MAAEC,QAAQ,EAAE,YAAZ;MAA0BC,cAAc,EAAE;IAA1C,CAApC,CAFH,CAVF,eAcE,+BAAC,cAAD,OAdF,CADF;EAkBD;;EAEDP,aAAa,CAACQ,WAAD,EAA6B;IACxC,IAAI,CAACA,WAAW,CAACV,GAAZ,CAAgBW,SAArB,EAAgC,OAAOC,SAAP;IAChC,MAAMC,MAAc,GAAGH,WAAW,CAACV,GAAZ,CAAgBW,SAAhB,EAAvB;IAEA,OAAO;MACLR,EAAE,EAAEU,MAAM,CAACV,EAAP,IAAa,EADZ;MAELC,WAAW,EAAES,MAAM,CAACT,WAAP,IAAsB,EAF9B;MAGLU,IAAI,EAAED,MAAM,CAACC,IAAP,IAAe,EAHhB;MAILP,MAAM,EAAEM,MAAM,CAACE,aAAP,GAAuBF,MAAM,CAACE,aAAP,EAAvB,GAAgD,EAJnD;MAKLV,OAAO,EAAEQ,MAAM,CAACR,OAAP,GAAiBQ,MAAM,CAACR,OAAP,EAAjB,GAAoC;IALxC,CAAP;EAOD;;EAEDW,iBAAiB,CAACC,QAAD,EAAuB;IACtC,KAAKC,SAAL,GAAiBD,QAAjB;EACD;;EAEQ,MAAHE,GAAG,CAACC,OAAD,EAA4BC,OAA5B,EAAoE;IAC3E,MAAMR,MAAc,GAAGO,OAAO,CAACpB,GAAR,CAAYW,SAAZ,EAAvB;;IACA,MAAMW,SAAS,GAAGC,yBAAA,CAAaC,EAAb,CAAgBJ,OAAO,CAACK,UAAxB,EAAqCC,SAAD,IAAe;MACnE,OAAO,IAAAC,wBAAA,EAAgBD,SAAhB,EAA2B,KAAK5B,QAAhC,CAAP;IACD,CAFiB,CAAlB;;IAGA,MAAM8B,SAAS,GAAGN,SAAS,CAACO,OAAV,GAAoBC,MAApB,CAA2B,CAACC,GAAD,EAAM,GAAGC,KAAH,CAAN,KAAoBD,GAAG,GAAGC,KAAK,CAACC,MAA3D,EAAmE,CAAnE,CAAlB;IAEA,MAAMC,kBAAkB,GAAGZ,SAAS,CAACO,OAAV,GAAoBC,MAApB,CAA2B,CAACC,GAAD,EAAc,GAAGC,KAAH,CAAd,KAA4B;MAChF,IAAIA,KAAK,CAACC,MAAN,GAAe,CAAnB,EAAsBF,GAAG,IAAI,CAAP;MACtB,OAAOA,GAAP;IACD,CAH0B,EAGxB,CAHwB,CAA3B;;IAKA,IAAIH,SAAS,KAAK,CAAd,IAAmB,CAACP,OAAO,CAACc,EAAhC,EAAoC;MAClC,KAAKvC,MAAL,CAAYwC,cAAZ,CAA4B,kCAAiC/C,KAAK,CAACgD,IAAN,CAAWjB,OAAO,CAACjB,EAAnB,CAAuB,IAApF;MACA,OAAO,KAAImC,eAAJ,EAAU,EAAV,CAAP;IACD;;IAED,IAAI,CAACjB,OAAO,CAACc,EAAb,EACE,KAAKvC,MAAL,CAAY2C,OAAZ,CAAqB,WAAUL,kBAAmB,gCAA+B7C,KAAK,CAACgD,IAAN,CAAWjB,OAAO,CAACjB,EAAnB,CAAuB,IAAxG;;IAEF,MAAMR,QAAQ,GAAG4B,yBAAA,CAAaC,EAAb,CAAgBJ,OAAO,CAACK,UAAxB,EAAqCC,SAAD,IAAe;MAClE,MAAMc,GAAG,GAAG,KAAK9C,SAAL,CAAe+C,YAAf,CAA4Bf,SAAS,CAACvB,EAAtC,CAAZ;MACA,MAAMuC,iBAAiB,GAAG,KAAK5C,QAAL,CAAc6C,cAAd,CAA6BjB,SAA7B,EAAwCkB,uBAAA,CAAazC,EAArD,CAA1B;MACA,OAAOuC,iBAAiB,CAACG,GAAlB,CAAuBC,OAAD,KAAsB;QAAEC,IAAI,EAAE,IAAAC,eAAA,EAAQR,GAAR,EAAaM,OAAb,CAAR;QAA+BG,QAAQ,EAAEH;MAAzC,CAAtB,CAAtB,CAAP;IACD,CAJgB,CAAjB;;IAMA,MAAMI,aAAa,GAAGC,MAAM,CAACC,MAAP,CAAchC,OAAd,EAAuB;MAC3CiC,OAAO,EAAE,KADkC;MAE3C/B,SAF2C;MAG3C3B,QAH2C;MAI3C2D,QAAQ,EAAE,KAAK5D,SAAL,CAAeqD,IAJkB;MAK3CrD,SAAS,EAAE,KAAKA,SAL2B;MAM3C6D,KAAK,EAAElC,OAAO,CAACkC,KAN4B;MAO3CC,KAAK,EAAEnC,OAAO,CAACmC,KAP4B;MAQ3CrB,EAAE,EAAEd,OAAO,CAACc,EAR+B;MAS3CsB,QAAQ,EAAEpC,OAAO,CAACoC;IATyB,CAAvB,CAAtB;;IAYA,IAAIpC,OAAO,CAACmC,KAAR,IAAiBnC,OAAO,CAACc,EAAzB,IAA+BtB,MAAM,CAAC2C,KAA1C,EAAiD;MAC/C,IAAI3C,MAAM,CAACG,iBAAX,EAA8B;QAC5B;QACAH,MAAM,CAACG,iBAAP,CAA0B0C,OAAD,IAAa;UACpC,IAAI,KAAKxC,SAAT,EAAoB,KAAKA,SAAL,CAAewC,OAAf;UACpBA,OAAO,CAACjC,UAAR,CAAmBkC,OAAnB,CAA4BjC,SAAD,IAAe;YACxC;YACA,KAAK7B,MAAL,CAAY+D,OAAZ,CAAoBrE,cAApB,EAAoC;cAClCsE,YAAY,EAAE;gBACZ1D,EAAE,EAAEuB,SAAS,CAACoC,WAAV,CAAsBC,QAAtB,EADQ;gBAEZC,YAAY,EAAEtC,SAAS,CAACgC,OAFZ;gBAGZO,OAAO,EAAEvC,SAAS,CAACuC;cAHP;YADoB,CAApC;UAOD,CATD;QAUD,CAZD;MAaD;;MAED,OAAOpD,MAAM,CAAC2C,KAAP,CAAaN,aAAb,CAAP;IACD;;IAED,MAAMQ,OAAO,GAAG,MAAM7C,MAAM,CAACqD,IAAP,CAAYhB,aAAZ,CAAtB;IAEA,OAAOQ,OAAP;EACD;;AAxHuE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["tester.task.ts"],"names":["TesterTask","constructor","aspectId","devFiles","CompilerAspect","id","execute","context","tester","env","getTester","componentsSpecFiles","ComponentMap","as","components","component","testCount","toArray","reduce","acc","specs","length","artifacts","componentsResults","specFilesWithCapsule","componentSpecFiles","get","Error","map","specFile","capsule","capsuleNetwork","graphCapsules","getCapsule","compiler","getCompiler","distPath","getDistPathBySrcPath","relative","path","testerContext","Object","assign","release","specFiles","rootPath","capsulesRootDir","patterns","testsResults","test","Promise","all","compResult","junit","componentId","toString","fs","outputFile","getJUnitArtifactPath","getArtifactDef","componentTests","componentErrors","errors","metadata","tests","results","CAPSULE_ARTIFACTS_DIR","name","globPatterns","rootDir"],"mappings":"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","sourcesContent":["import { BuildContext, BuiltTaskResult, BuildTask, CAPSULE_ARTIFACTS_DIR } from '@teambit/builder';\nimport fs from 'fs-extra';\nimport { join } from 'path';\nimport { Compiler, CompilerAspect } from '@teambit/compiler';\nimport { DevFilesMain } from '@teambit/dev-files';\nimport { ComponentMap } from '@teambit/component';\nimport { Tester } from './tester';\nimport { detectTestFiles } from './utils';\nimport { testsResultsToJUnitFormat } from './utils/junit-generator';\n\n/**\n * tester build task. Allows to test components during component build.\n */\nexport class TesterTask implements BuildTask {\n readonly name = 'TestComponents';\n readonly dependencies = [CompilerAspect.id];\n constructor(readonly aspectId: string, private devFiles: DevFilesMain) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const tester: Tester = context.env.getTester();\n const componentsSpecFiles = ComponentMap.as(context.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 specFilesWithCapsule = ComponentMap.as(context.components, (component) => {\n const componentSpecFiles = componentsSpecFiles.get(component);\n if (!componentSpecFiles) throw new Error('capsule not found');\n const [, specs] = componentSpecFiles;\n return specs.map((specFile) => {\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 const distPath = compiler.getDistPathBySrcPath(specFile.relative);\n\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 const testerContext = Object.assign(context, {\n release: true,\n specFiles: specFilesWithCapsule,\n rootPath: context.capsuleNetwork.capsulesRootDir,\n patterns: specFilesWithCapsule,\n });\n\n // TODO: remove after fix AbstractVinyl on capsule\n // @ts-ignore\n const testsResults = await tester.test(testerContext);\n\n // write junit files\n await Promise.all(\n testsResults.components.map(async (compResult) => {\n const junit = testsResultsToJUnitFormat([compResult]);\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(compResult.componentId);\n if (!capsule) {\n throw new Error(`unable to find ${compResult.componentId.toString()} in capsules`);\n }\n await fs.outputFile(join(capsule.path, getJUnitArtifactPath()), junit);\n })\n );\n\n return {\n artifacts: getArtifactDef(), // @ts-ignore\n componentsResults: testsResults.components.map((componentTests) => {\n const componentErrors = componentTests.errors;\n const component = context.capsuleNetwork.graphCapsules.getCapsule(componentTests.componentId)?.component;\n if (!component) {\n throw new Error(`unable to find ${componentTests.componentId.toString()} in capsules`);\n }\n\n return {\n component,\n metadata: { tests: componentTests.results },\n errors: componentErrors,\n };\n }),\n };\n }\n}\n\nexport function getJUnitArtifactPath() {\n return join(CAPSULE_ARTIFACTS_DIR, '__bit_junit.xml');\n}\n\nexport function getArtifactDef() {\n return [\n {\n name: 'junit',\n globPatterns: [getJUnitArtifactPath()],\n rootDir: CAPSULE_ARTIFACTS_DIR,\n },\n ];\n}\n"]}
1
+ {"version":3,"names":["TesterTask","constructor","aspectId","devFiles","CompilerAspect","id","execute","context","tester","env","getTester","componentsSpecFiles","ComponentMap","as","components","component","detectTestFiles","testCount","toArray","reduce","acc","specs","length","artifacts","componentsResults","specFilesWithCapsule","componentSpecFiles","get","Error","map","specFile","capsule","capsuleNetwork","graphCapsules","getCapsule","compiler","getCompiler","distPath","getDistPathBySrcPath","relative","path","join","testerContext","Object","assign","release","specFiles","rootPath","capsulesRootDir","patterns","testsResults","test","Promise","all","compResult","junit","testsResultsToJUnitFormat","componentId","toString","fs","outputFile","getJUnitArtifactPath","getArtifactDef","componentTests","componentErrors","errors","metadata","tests","results","CAPSULE_ARTIFACTS_DIR","name","globPatterns","rootDir"],"sources":["tester.task.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, BuildTask, CAPSULE_ARTIFACTS_DIR } from '@teambit/builder';\nimport fs from 'fs-extra';\nimport { join } from 'path';\nimport { Compiler, CompilerAspect } from '@teambit/compiler';\nimport { DevFilesMain } from '@teambit/dev-files';\nimport { ComponentMap } from '@teambit/component';\nimport { Tester } from './tester';\nimport { detectTestFiles } from './utils';\nimport { testsResultsToJUnitFormat } from './utils/junit-generator';\n\n/**\n * tester build task. Allows to test components during component build.\n */\nexport class TesterTask implements BuildTask {\n readonly name = 'TestComponents';\n readonly dependencies = [CompilerAspect.id];\n constructor(readonly aspectId: string, private devFiles: DevFilesMain) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const tester: Tester = context.env.getTester();\n const componentsSpecFiles = ComponentMap.as(context.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 specFilesWithCapsule = ComponentMap.as(context.components, (component) => {\n const componentSpecFiles = componentsSpecFiles.get(component);\n if (!componentSpecFiles) throw new Error('capsule not found');\n const [, specs] = componentSpecFiles;\n return specs.map((specFile) => {\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 const distPath = compiler.getDistPathBySrcPath(specFile.relative);\n\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 const testerContext = Object.assign(context, {\n release: true,\n specFiles: specFilesWithCapsule,\n rootPath: context.capsuleNetwork.capsulesRootDir,\n patterns: specFilesWithCapsule,\n });\n\n // TODO: remove after fix AbstractVinyl on capsule\n // @ts-ignore\n const testsResults = await tester.test(testerContext);\n\n // write junit files\n await Promise.all(\n testsResults.components.map(async (compResult) => {\n const junit = testsResultsToJUnitFormat([compResult]);\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(compResult.componentId);\n if (!capsule) {\n throw new Error(`unable to find ${compResult.componentId.toString()} in capsules`);\n }\n await fs.outputFile(join(capsule.path, getJUnitArtifactPath()), junit);\n })\n );\n\n return {\n artifacts: getArtifactDef(), // @ts-ignore\n componentsResults: testsResults.components.map((componentTests) => {\n const componentErrors = componentTests.errors;\n const component = context.capsuleNetwork.graphCapsules.getCapsule(componentTests.componentId)?.component;\n if (!component) {\n throw new Error(`unable to find ${componentTests.componentId.toString()} in capsules`);\n }\n\n return {\n component,\n metadata: { tests: componentTests.results },\n errors: componentErrors,\n };\n }),\n };\n }\n}\n\nexport function getJUnitArtifactPath() {\n return join(CAPSULE_ARTIFACTS_DIR, '__bit_junit.xml');\n}\n\nexport function getArtifactDef() {\n return [\n {\n name: 'junit',\n globPatterns: [getJUnitArtifactPath()],\n rootDir: CAPSULE_ARTIFACTS_DIR,\n },\n ];\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["tester.ui.runtime.tsx"],"names":["TesterUI","constructor","component","emptyStateSlot","registerEmptyState","emptyStateComponent","register","provider","config","testerUi","section","TestsSection","registerRoute","route","registerNavigation","navigationLink","order","ComponentAspect","UIRuntime","Slot","withType","TesterAspect","addRuntime"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,QAAN,CAAe;AAOpBC,EAAAA,WAAW,CAASC,SAAT,EAAyCC,cAAzC,EAAyE;AAAA,SAAhED,SAAgE,GAAhEA,SAAgE;AAAA,SAAhCC,cAAgC,GAAhCA,cAAgC;AAAA;AAAE;AAEtF;AACF;AACA;;;AACEC,EAAAA,kBAAkB,CAACC,mBAAD,EAAqC;AACrD,SAAKF,cAAL,CAAoBG,QAApB,CAA6BD,mBAA7B;AACA,WAAO,IAAP;AACD;;AAIoB,eAARE,QAAQ,CAAC,CAACL,SAAD,CAAD,EAA6BM,MAA7B,EAAqC,CAACL,cAAD,CAArC,EAAyE;AAC5F,UAAMM,QAAQ,GAAG,IAAIT,QAAJ,CAAaE,SAAb,EAAwBC,cAAxB,CAAjB;AAEA,UAAMO,OAAO,GAAG,KAAIC,qBAAJ,EAAiBR,cAAjB,CAAhB;AAEAD,IAAAA,SAAS,CAACU,aAAV,CAAwBF,OAAO,CAACG,KAAhC;AACAX,IAAAA,SAAS,CAACY,kBAAV,CAA6BJ,OAAO,CAACK,cAArC,EAAqDL,OAAO,CAACM,KAA7D;AAEA,WAAOP,QAAP;AACD;;AA5BmB;;;gCAATT,Q,kBACW,CAACiB,4BAAD,C;gCADXjB,Q,aAGMkB,e;gCAHNlB,Q,WAiBI,CAACmB,gBAAKC,QAAL,EAAD,C;eAcFpB,Q;;;AAEfqB,uBAAaC,UAAb,CAAwBtB,QAAxB","sourcesContent":["import { ComponentType } from 'react';\nimport { UIRuntime } from '@teambit/ui';\nimport { SlotRegistry, Slot } from '@teambit/harmony';\nimport { ComponentAspect, ComponentUI } from '@teambit/component';\nimport { TestsSection } from './tests.section';\nimport { TesterAspect } from './tester.aspect';\n\nexport type EmptyStateSlot = SlotRegistry<ComponentType>;\nexport class TesterUI {\n static dependencies = [ComponentAspect];\n\n static runtime = UIRuntime;\n\n stageKey?: string;\n\n constructor(private component: ComponentUI, private emptyStateSlot: EmptyStateSlot) {}\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 static slots = [Slot.withType<ComponentType>()];\n\n static async provider([component]: [ComponentUI], config, [emptyStateSlot]: [EmptyStateSlot]) {\n const testerUi = new TesterUI(component, emptyStateSlot);\n\n const section = new TestsSection(emptyStateSlot);\n\n component.registerRoute(section.route);\n component.registerNavigation(section.navigationLink, section.order);\n\n return testerUi;\n }\n}\n\nexport default TesterUI;\n\nTesterAspect.addRuntime(TesterUI);\n"]}
1
+ {"version":3,"names":["TesterUI","constructor","component","emptyStateSlot","registerEmptyState","emptyStateComponent","register","provider","config","testerUi","section","TestsSection","registerRoute","route","registerNavigation","navigationLink","order","ComponentAspect","UIRuntime","Slot","withType","TesterAspect","addRuntime"],"sources":["tester.ui.runtime.tsx"],"sourcesContent":["import { ComponentType } from 'react';\nimport { UIRuntime } from '@teambit/ui';\nimport { SlotRegistry, Slot } from '@teambit/harmony';\nimport { ComponentAspect, ComponentUI } from '@teambit/component';\nimport { TestsSection } from './tests.section';\nimport { TesterAspect } from './tester.aspect';\n\nexport type EmptyStateSlot = SlotRegistry<ComponentType>;\nexport class TesterUI {\n static dependencies = [ComponentAspect];\n\n static runtime = UIRuntime;\n\n stageKey?: string;\n\n constructor(private component: ComponentUI, private emptyStateSlot: EmptyStateSlot) {}\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 static slots = [Slot.withType<ComponentType>()];\n\n static async provider([component]: [ComponentUI], config, [emptyStateSlot]: [EmptyStateSlot]) {\n const testerUi = new TesterUI(component, emptyStateSlot);\n\n const section = new TestsSection(emptyStateSlot);\n\n component.registerRoute(section.route);\n component.registerNavigation(section.navigationLink, section.order);\n\n return testerUi;\n }\n}\n\nexport default TesterUI;\n\nTesterAspect.addRuntime(TesterUI);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGO,MAAMA,QAAN,CAAe;EAOpBC,WAAW,CAASC,SAAT,EAAyCC,cAAzC,EAAyE;IAAA,KAAhED,SAAgE,GAAhEA,SAAgE;IAAA,KAAhCC,cAAgC,GAAhCA,cAAgC;IAAA;EAAE;EAEtF;AACF;AACA;;;EACEC,kBAAkB,CAACC,mBAAD,EAAqC;IACrD,KAAKF,cAAL,CAAoBG,QAApB,CAA6BD,mBAA7B;IACA,OAAO,IAAP;EACD;;EAIoB,aAARE,QAAQ,CAAC,CAACL,SAAD,CAAD,EAA6BM,MAA7B,EAAqC,CAACL,cAAD,CAArC,EAAyE;IAC5F,MAAMM,QAAQ,GAAG,IAAIT,QAAJ,CAAaE,SAAb,EAAwBC,cAAxB,CAAjB;IAEA,MAAMO,OAAO,GAAG,KAAIC,qBAAJ,EAAiBR,cAAjB,CAAhB;IAEAD,SAAS,CAACU,aAAV,CAAwBF,OAAO,CAACG,KAAhC;IACAX,SAAS,CAACY,kBAAV,CAA6BJ,OAAO,CAACK,cAArC,EAAqDL,OAAO,CAACM,KAA7D;IAEA,OAAOP,QAAP;EACD;;AA5BmB;;;gCAATT,Q,kBACW,CAACiB,4BAAD,C;gCADXjB,Q,aAGMkB,e;gCAHNlB,Q,WAiBI,CAACmB,eAAA,CAAKC,QAAL,EAAD,C;eAcFpB,Q;;;AAEfqB,sBAAA,CAAaC,UAAb,CAAwBtB,QAAxB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["tests.section.tsx"],"names":["TestsSection","constructor","emptyStateSlot","path","children","href"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,YAAN,CAAsC;AAC3CC,EAAAA,WAAW,CAASC,cAAT,EAAyC;AAAA,SAAhCA,cAAgC,GAAhCA,cAAgC;AAAA,mDAE5C;AACNC,MAAAA,IAAI,EAAE,QADA;AAENC,MAAAA,QAAQ,eAAE,+BAAC,sBAAD;AAAW,QAAA,UAAU,EAAE,KAAKF;AAA5B;AAFJ,KAF4C;AAAA,4DAMnC;AACfG,MAAAA,IAAI,EAAE,QADS;AAEfD,MAAAA,QAAQ,EAAE;AAFK,KANmC;AAAA,mDAU5C,EAV4C;AAAE;;AADX","sourcesContent":["import React from 'react';\nimport { Section } from '@teambit/component';\nimport { TestsPage } from './ui/tests-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 children: <TestsPage emptyState={this.emptyStateSlot} />,\n };\n navigationLink = {\n href: '~tests',\n children: 'Tests',\n };\n order = 40;\n}\n"]}
1
+ {"version":3,"names":["TestsSection","constructor","emptyStateSlot","path","children","href"],"sources":["tests.section.tsx"],"sourcesContent":["import React from 'react';\nimport { Section } from '@teambit/component';\nimport { TestsPage } from './ui/tests-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 children: <TestsPage emptyState={this.emptyStateSlot} />,\n };\n navigationLink = {\n href: '~tests',\n children: 'Tests',\n };\n order = 40;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGO,MAAMA,YAAN,CAAsC;EAC3CC,WAAW,CAASC,cAAT,EAAyC;IAAA,KAAhCA,cAAgC,GAAhCA,cAAgC;IAAA,+CAE5C;MACNC,IAAI,EAAE,QADA;MAENC,QAAQ,eAAE,+BAAC,sBAAD;QAAW,UAAU,EAAE,KAAKF;MAA5B;IAFJ,CAF4C;IAAA,wDAMnC;MACfG,IAAI,EAAE,QADS;MAEfD,QAAQ,EAAE;IAFK,CANmC;IAAA,+CAU5C,EAV4C;EAAE;;AADX"}
@@ -1 +1 @@
1
- {"version":3,"sources":["tests-page.tsx"],"names":["TESTS_SUBSCRIPTION_CHANGED","GET_COMPONENT","TestsPage","className","emptyState","component","ComponentContext","onTestsChanged","variables","id","toString","data","_legacy","name","testData","testsChanged","getHost","getTests","testResults","testsResults","testFiles","loading","env","environment","EmptyStateTemplate","get","host","styles","testsPage","title","separator","testBlock"],"mappings":";;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAEA,MAAMA,0BAA0B,GAAG,kBAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAtBA;AAwBA,MAAMC,aAAa,GAAG,kBAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CA1BA;;AAgCO,SAASC,SAAT,CAAmB;AAAEC,EAAAA,SAAF;AAAaC,EAAAA;AAAb,CAAnB,EAA8D;AAAA;;AACnE,QAAMC,SAAS,GAAG,yBAAWC,6BAAX,CAAlB;AACA,QAAMC,cAAc,GAAG,+BAAgBP,0BAAhB,EAA4C;AAAEQ,IAAAA,SAAS,EAAE;AAAEC,MAAAA,EAAE,EAAEJ,SAAS,CAACI,EAAV,CAAaC,QAAb;AAAN;AAAb,GAA5C,CAAvB;AACA,QAAM;AAAEC,IAAAA;AAAF,MAAW,wBAASV,aAAT,EAAwB;AACvCO,IAAAA,SAAS,EAAE;AAAEC,MAAAA,EAAE,EAAEJ,SAAS,CAACI,EAAV,CAAaG,OAAb,CAAqBC;AAA3B;AAD4B,GAAxB,CAAjB;AAIA,QAAMC,QAAQ,GAAG,yBAAAP,cAAc,CAACI,IAAf,8EAAqBI,YAArB,MAAqCJ,IAArC,aAAqCA,IAArC,wCAAqCA,IAAI,CAAEK,OAA3C,kDAAqC,cAAeC,QAApD,CAAjB;AACA,QAAMC,WAAW,GAAGJ,QAAH,aAAGA,QAAH,gDAAGA,QAAQ,CAAEK,YAAb,0DAAG,sBAAwBC,SAA5C,CARmE,CAUnE;;AACA,MAAIN,QAAJ,aAAIA,QAAJ,eAAIA,QAAQ,CAAEO,OAAd,EAAuB,oBAAO,+BAAC,wBAAD,OAAP;AAEvB,QAAMC,GAAG,4BAAGjB,SAAS,CAACkB,WAAb,0DAAG,sBAAuBd,EAAnC;AACA,QAAMe,kBAAkB,GAAGpB,UAAU,CAACqB,GAAX,CAAeH,GAAG,IAAI,EAAtB,CAA3B;;AAEA,MACE,CAACJ,WAAW,KAAK,IAAhB,IAAwB,CAAAJ,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAEK,YAAV,MAA2B,IAApD,KACAd,SAAS,CAACqB,IAAV,KAAmB,6BADnB,IAEAF,kBAHF,EAIE;AACA,wBACE;AAAK,MAAA,SAAS,EAAE,2BAAWG,2BAAOC,SAAlB,EAA6BzB,SAA7B;AAAhB,oBACE,yDACE,+BAAC,kBAAD;AAAI,MAAA,SAAS,EAAEwB,2BAAOE;AAAtB,eADF,eAEE,+BAAC,qBAAD;AAAW,MAAA,gBAAgB,MAA3B;AAA4B,MAAA,SAAS,EAAEF,2BAAOG;AAA9C,MAFF,eAGE,+BAAC,sBAAD;AACE,MAAA,KAAK,EAAC,MADR;AAEE,MAAA,KAAK,EAAC;AAFR,oBAKE,+BAAC,kBAAD,qBACE,+BAAC,kBAAD,OADF,CALF,CAHF,CADF,CADF;AAiBD,GAtCkE,CAwCnE;;;AACA,MAAIZ,WAAW,KAAK,IAAhB,IAAwB,CAAAJ,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAEK,YAAV,MAA2B,IAAvD,EAA6D;AAC3D,wBACE,+BAAC,qBAAD;AACE,MAAA,KAAK,EAAC,6CADR;AAEE,MAAA,QAAQ,EAAC,2CAFX;AAGE,MAAA,IAAI,EAAG;AAHT,MADF;AAOD;;AAED,sBACE;AAAK,IAAA,SAAS,EAAE,2BAAWQ,2BAAOC,SAAlB,EAA6BzB,SAA7B;AAAhB,kBACE,yDACE,+BAAC,kBAAD;AAAI,IAAA,SAAS,EAAEwB,2BAAOE;AAAtB,aADF,eAEE,+BAAC,qBAAD;AAAW,IAAA,gBAAgB,MAA3B;AAA4B,IAAA,SAAS,EAAEF,2BAAOG;AAA9C,IAFF,eAGE,+BAAC,wBAAD;AAAW,IAAA,WAAW,EAAEZ,WAAxB;AAAqC,IAAA,SAAS,EAAES,2BAAOI;AAAvD,IAHF,CADF,CADF;AASD","sourcesContent":["import { useQuery, useSubscription, gql } from '@apollo/client';\nimport { ComponentContext } from '@teambit/component';\nimport { H1 } from '@teambit/documenter.ui.heading';\nimport { Separator } from '@teambit/design.ui.separator';\nimport { EmptyBox } from '@teambit/design.ui.empty-box';\nimport { MDXLayout } from '@teambit/mdx.ui.mdx-layout';\nimport { AlertCard } from '@teambit/design.ui.alert-card';\nimport { TestLoader } from '@teambit/defender.ui.test-loader';\nimport classNames from 'classnames';\nimport React, { HTMLAttributes, useContext } from 'react';\nimport { TestTable } from '@teambit/defender.ui.test-table';\nimport { EmptyStateSlot } from '../tester.ui.runtime';\nimport styles from './tests-page.module.scss';\n\nconst TESTS_SUBSCRIPTION_CHANGED = gql`\n subscription OnTestsChanged($id: String!) {\n testsChanged(id: $id) {\n testsResults {\n testFiles {\n file\n duration\n pass\n failed\n pending\n errorStr\n tests {\n ancestor\n duration\n status\n name\n error\n }\n }\n }\n }\n }\n`;\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 testFiles {\n file\n duration\n pass\n failed\n pending\n errorStr\n tests {\n ancestor\n duration\n status\n name\n error\n }\n }\n }\n }\n }\n }\n`;\n\ntype TestsPageProps = {\n emptyState: EmptyStateSlot;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport function TestsPage({ className, emptyState }: TestsPageProps) {\n const component = useContext(ComponentContext);\n const onTestsChanged = useSubscription(TESTS_SUBSCRIPTION_CHANGED, { variables: { id: component.id.toString() } });\n const { data } = useQuery(GET_COMPONENT, {\n variables: { id: component.id._legacy.name },\n });\n\n const testData = onTestsChanged.data?.testsChanged || data?.getHost?.getTests;\n const testResults = testData?.testsResults?.testFiles;\n\n // TODO: change loading EmptyBox\n if (testData?.loading) return <TestLoader />;\n\n const env = component.environment?.id;\n const EmptyStateTemplate = emptyState.get(env || '');\n\n if (\n (testResults === null || testData?.testsResults === null) &&\n component.host === 'teambit.workspace/workspace' &&\n EmptyStateTemplate\n ) {\n return (\n <div className={classNames(styles.testsPage, className)}>\n <div>\n <H1 className={styles.title}>Tests</H1>\n <Separator isPresentational className={styles.separator} />\n <AlertCard\n level=\"info\"\n title=\"There are no\n tests for this Component. Learn how to add tests:\"\n >\n <MDXLayout>\n <EmptyStateTemplate />\n </MDXLayout>\n </AlertCard>\n </div>\n </div>\n );\n }\n\n // TODO: get the docs domain from the community aspect and pass it here as a prop\n if (testResults === null || testData?.testsResults === null) {\n return (\n <EmptyBox\n title=\"This component doesn’t have any tests.\"\n linkText=\"Learn how to add tests to your components\"\n link={`https://bit.dev/docs/dev-services-overview/tester/tester-overview`}\n />\n );\n }\n\n return (\n <div className={classNames(styles.testsPage, className)}>\n <div>\n <H1 className={styles.title}>Tests</H1>\n <Separator isPresentational className={styles.separator} />\n <TestTable testResults={testResults} className={styles.testBlock} />\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"names":["TESTS_SUBSCRIPTION_CHANGED","gql","GET_COMPONENT","TestsPage","className","emptyState","component","useContext","ComponentContext","onTestsChanged","useSubscription","variables","id","toString","data","useQuery","_legacy","name","testData","testsChanged","getHost","getTests","testResults","testsResults","testFiles","loading","env","environment","EmptyStateTemplate","get","host","classNames","styles","testsPage","title","separator","testBlock"],"sources":["tests-page.tsx"],"sourcesContent":["import { useQuery, useSubscription, gql } from '@apollo/client';\nimport { ComponentContext } from '@teambit/component';\nimport { H1 } from '@teambit/documenter.ui.heading';\nimport { Separator } from '@teambit/design.ui.separator';\nimport { EmptyBox } from '@teambit/design.ui.empty-box';\nimport { MDXLayout } from '@teambit/mdx.ui.mdx-layout';\nimport { AlertCard } from '@teambit/design.ui.alert-card';\nimport { TestLoader } from '@teambit/defender.ui.test-loader';\nimport classNames from 'classnames';\nimport React, { HTMLAttributes, useContext } from 'react';\nimport { TestTable } from '@teambit/defender.ui.test-table';\nimport { EmptyStateSlot } from '../tester.ui.runtime';\nimport styles from './tests-page.module.scss';\n\nconst TESTS_SUBSCRIPTION_CHANGED = gql`\n subscription OnTestsChanged($id: String!) {\n testsChanged(id: $id) {\n testsResults {\n testFiles {\n file\n duration\n pass\n failed\n pending\n errorStr\n tests {\n ancestor\n duration\n status\n name\n error\n }\n }\n }\n }\n }\n`;\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 testFiles {\n file\n duration\n pass\n failed\n pending\n errorStr\n tests {\n ancestor\n duration\n status\n name\n error\n }\n }\n }\n }\n }\n }\n`;\n\ntype TestsPageProps = {\n emptyState: EmptyStateSlot;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport function TestsPage({ className, emptyState }: TestsPageProps) {\n const component = useContext(ComponentContext);\n const onTestsChanged = useSubscription(TESTS_SUBSCRIPTION_CHANGED, { variables: { id: component.id.toString() } });\n const { data } = useQuery(GET_COMPONENT, {\n variables: { id: component.id._legacy.name },\n });\n\n const testData = onTestsChanged.data?.testsChanged || data?.getHost?.getTests;\n const testResults = testData?.testsResults?.testFiles;\n\n // TODO: change loading EmptyBox\n if (testData?.loading) return <TestLoader />;\n\n const env = component.environment?.id;\n const EmptyStateTemplate = emptyState.get(env || '');\n\n if (\n (testResults === null || testData?.testsResults === null) &&\n component.host === 'teambit.workspace/workspace' &&\n EmptyStateTemplate\n ) {\n return (\n <div className={classNames(styles.testsPage, className)}>\n <div>\n <H1 className={styles.title}>Tests</H1>\n <Separator isPresentational className={styles.separator} />\n <AlertCard\n level=\"info\"\n title=\"There are no\n tests for this Component. Learn how to add tests:\"\n >\n <MDXLayout>\n <EmptyStateTemplate />\n </MDXLayout>\n </AlertCard>\n </div>\n </div>\n );\n }\n\n // TODO: get the docs domain from the community aspect and pass it here as a prop\n if (testResults === null || testData?.testsResults === null) {\n return (\n <EmptyBox\n title=\"This component doesn’t have any tests.\"\n linkText=\"Learn how to add tests to your components\"\n link={`https://bit.dev/docs/dev-services-overview/tester/tester-overview`}\n />\n );\n }\n\n return (\n <div className={classNames(styles.testsPage, className)}>\n <div>\n <H1 className={styles.title}>Tests</H1>\n <Separator isPresentational className={styles.separator} />\n <TestTable testResults={testResults} className={styles.testBlock} />\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["detect-spec-files.ts"],"names":["detectTestFiles","component","devFiles","files","getDevFiles","testFiles","get","TesterAspect","id","state","filesystem","filter","file","includes","relative"],"mappings":";;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AACA;AACA;AACO,SAASA,eAAT,CAAyBC,SAAzB,EAA+CC,QAA/C,EAAuE;AAC5E,QAAMC,KAAK,GAAGD,QAAQ,CAACE,WAAT,CAAqBH,SAArB,CAAd;AACA,QAAMI,SAAS,GAAGF,KAAK,CAACG,GAAN,CAAUC,uBAAaC,EAAvB,CAAlB;AACA,SAAOP,SAAS,CAACQ,KAAV,CAAgBC,UAAhB,CAA2BP,KAA3B,CAAiCQ,MAAjC,CAAyCC,IAAD,IAAUP,SAAS,CAACQ,QAAV,CAAmBD,IAAI,CAACE,QAAxB,CAAlD,CAAP;AACD","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"]}
1
+ {"version":3,"names":["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;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;AACA;AACA;AACO,SAASA,eAAT,CAAyBC,SAAzB,EAA+CC,QAA/C,EAAuE;EAC5E,MAAMC,KAAK,GAAGD,QAAQ,CAACE,WAAT,CAAqBH,SAArB,CAAd;EACA,MAAMI,SAAS,GAAGF,KAAK,CAACG,GAAN,CAAUC,sBAAA,CAAaC,EAAvB,CAAlB;EACA,OAAOP,SAAS,CAACQ,KAAV,CAAgBC,UAAhB,CAA2BP,KAA3B,CAAiCQ,MAAjC,CAAyCC,IAAD,IAAUP,SAAS,CAACQ,QAAV,CAAmBD,IAAI,CAACE,QAAxB,CAAlD,CAAP;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["export { detectTestFiles } from './detect-spec-files';\n"]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { detectTestFiles } from './detect-spec-files';\n"],"mappings":";;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["junit-generator.ts"],"names":["testsResultsToJUnitFormat","components","builder","junitReportBuilder","newBuilder","forEach","compResult","suite","testSuite","name","componentId","toString","results","start","timestamp","Date","toISOString","testFiles","testFile","error","testCase","className","file","message","tests","test","failure","status","skipped","duration","time","build"],"mappings":";;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,SAASA,yBAAT,CAAmCC,UAAnC,EAA4E;AACjF,QAAMC,OAAO,GAAGC,8BAAmBC,UAAnB,EAAhB;;AACAH,EAAAA,UAAU,CAACI,OAAX,CAAoBC,UAAD,IAAgB;AAAA;;AACjC,UAAMC,KAAK,GAAGL,OAAO,CAACM,SAAR,GAAoBC,IAApB,CAAyBH,UAAU,CAACI,WAAX,CAAuBC,QAAvB,EAAzB,CAAd;;AACA,+BAAIL,UAAU,CAACM,OAAf,gDAAI,oBAAoBC,KAAxB,EAA+B;AAAA;;AAC7BN,MAAAA,KAAK,CAACO,SAAN,CAAgB,IAAIC,IAAJ,yBAAST,UAAU,CAACM,OAApB,yDAAS,qBAAoBC,KAA7B,EAAoCG,WAApC,EAAhB;AACD;;AACD,4BAAAV,UAAU,CAACM,OAAX,8EAAoBK,SAApB,CAA8BZ,OAA9B,CAAuCa,QAAD,IAAc;AAClD,UAAIA,QAAQ,CAACC,KAAb,EAAoB;AAClB,cAAMC,QAAQ,GAAGb,KAAK,CAACa,QAAN,GAAiBC,SAAjB,CAA2BH,QAAQ,CAACI,IAApC,EAA0Cb,IAA1C,CAA+CS,QAAQ,CAACI,IAAxD,CAAjB;AACAF,QAAAA,QAAQ,CAACD,KAAT,CAAe,0BAAUD,QAAQ,CAACC,KAAT,CAAeI,OAAzB,CAAf;AACD;;AACDL,MAAAA,QAAQ,CAACM,KAAT,CAAenB,OAAf,CAAwBoB,IAAD,IAAU;AAC/B,cAAML,QAAQ,GAAGb,KAAK,CAACa,QAAN,GAAiBC,SAAjB,CAA2BH,QAAQ,CAACI,IAApC,EAA0Cb,IAA1C,CAA+CgB,IAAI,CAAChB,IAApD,CAAjB;;AACA,YAAIgB,IAAI,CAACN,KAAT,EAAgB;AACdC,UAAAA,QAAQ,CAACD,KAAT,CAAe,0BAAUM,IAAI,CAACN,KAAf,CAAf;AACD;;AACD,YAAIM,IAAI,CAACC,OAAT,EAAkB;AAChBN,UAAAA,QAAQ,CAACM,OAAT,CAAiB,0BAAUD,IAAI,CAACC,OAAf,CAAjB;AACD;;AACD,YAAID,IAAI,CAACE,MAAL,KAAgB,SAAhB,IAA6BF,IAAI,CAACE,MAAL,KAAgB,SAAjD,EAA4D;AAC1DP,UAAAA,QAAQ,CAACQ,OAAT;AACD;;AACD,YAAIH,IAAI,CAACI,QAAT,EAAmB;AACjBT,UAAAA,QAAQ,CAACU,IAAT,CAAcL,IAAI,CAACI,QAAL,GAAgB,IAA9B;AACD;AACF,OAdD;AAeD,KApBD;AAqBD,GA1BD;AA2BA,SAAO3B,OAAO,CAAC6B,KAAR,EAAP;AACD","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"]}
1
+ {"version":3,"names":["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;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGO,SAASA,yBAAT,CAAmCC,UAAnC,EAA4E;EACjF,MAAMC,OAAO,GAAGC,6BAAA,CAAmBC,UAAnB,EAAhB;;EACAH,UAAU,CAACI,OAAX,CAAoBC,UAAD,IAAgB;IAAA;;IACjC,MAAMC,KAAK,GAAGL,OAAO,CAACM,SAAR,GAAoBC,IAApB,CAAyBH,UAAU,CAACI,WAAX,CAAuBC,QAAvB,EAAzB,CAAd;;IACA,2BAAIL,UAAU,CAACM,OAAf,gDAAI,oBAAoBC,KAAxB,EAA+B;MAAA;;MAC7BN,KAAK,CAACO,SAAN,CAAgB,IAAIC,IAAJ,yBAAST,UAAU,CAACM,OAApB,yDAAS,qBAAoBC,KAA7B,EAAoCG,WAApC,EAAhB;IACD;;IACD,wBAAAV,UAAU,CAACM,OAAX,8EAAoBK,SAApB,CAA8BZ,OAA9B,CAAuCa,QAAD,IAAc;MAClD,IAAIA,QAAQ,CAACC,KAAb,EAAoB;QAClB,MAAMC,QAAQ,GAAGb,KAAK,CAACa,QAAN,GAAiBC,SAAjB,CAA2BH,QAAQ,CAACI,IAApC,EAA0Cb,IAA1C,CAA+CS,QAAQ,CAACI,IAAxD,CAAjB;QACAF,QAAQ,CAACD,KAAT,CAAe,IAAAI,oBAAA,EAAUL,QAAQ,CAACC,KAAT,CAAeK,OAAzB,CAAf;MACD;;MACDN,QAAQ,CAACO,KAAT,CAAepB,OAAf,CAAwBqB,IAAD,IAAU;QAC/B,MAAMN,QAAQ,GAAGb,KAAK,CAACa,QAAN,GAAiBC,SAAjB,CAA2BH,QAAQ,CAACI,IAApC,EAA0Cb,IAA1C,CAA+CiB,IAAI,CAACjB,IAApD,CAAjB;;QACA,IAAIiB,IAAI,CAACP,KAAT,EAAgB;UACdC,QAAQ,CAACD,KAAT,CAAe,IAAAI,oBAAA,EAAUG,IAAI,CAACP,KAAf,CAAf;QACD;;QACD,IAAIO,IAAI,CAACC,OAAT,EAAkB;UAChBP,QAAQ,CAACO,OAAT,CAAiB,IAAAJ,oBAAA,EAAUG,IAAI,CAACC,OAAf,CAAjB;QACD;;QACD,IAAID,IAAI,CAACE,MAAL,KAAgB,SAAhB,IAA6BF,IAAI,CAACE,MAAL,KAAgB,SAAjD,EAA4D;UAC1DR,QAAQ,CAACS,OAAT;QACD;;QACD,IAAIH,IAAI,CAACI,QAAT,EAAmB;UACjBV,QAAQ,CAACW,IAAT,CAAcL,IAAI,CAACI,QAAL,GAAgB,IAA9B;QACD;MACF,CAdD;IAeD,CApBD;EAqBD,CA1BD;EA2BA,OAAO5B,OAAO,CAAC8B,KAAR,EAAP;AACD"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/tester",
3
- "version": "0.0.737",
3
+ "version": "0.0.738",
4
4
  "homepage": "https://bit.dev/teambit/defender/tester",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.defender",
8
8
  "name": "tester",
9
- "version": "0.0.737"
9
+ "version": "0.0.738"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -26,15 +26,15 @@
26
26
  "@teambit/documenter.ui.heading": "4.1.1",
27
27
  "@teambit/cli": "0.0.491",
28
28
  "@teambit/logger": "0.0.583",
29
- "@teambit/workspace": "0.0.737",
30
- "@teambit/component": "0.0.737",
31
- "@teambit/graphql": "0.0.737",
32
- "@teambit/builder": "0.0.737",
33
- "@teambit/dev-files": "0.0.737",
34
- "@teambit/envs": "0.0.737",
29
+ "@teambit/workspace": "0.0.738",
30
+ "@teambit/component": "0.0.738",
31
+ "@teambit/graphql": "0.0.738",
32
+ "@teambit/builder": "0.0.738",
33
+ "@teambit/dev-files": "0.0.738",
34
+ "@teambit/envs": "0.0.738",
35
35
  "@teambit/tests-results": "0.0.97",
36
- "@teambit/ui": "0.0.737",
37
- "@teambit/compiler": "0.0.737",
36
+ "@teambit/ui": "0.0.738",
37
+ "@teambit/compiler": "0.0.738",
38
38
  "@teambit/bit-error": "0.0.394",
39
39
  "@teambit/defender.ui.test-loader": "0.0.490",
40
40
  "@teambit/defender.ui.test-table": "0.0.495",
@@ -1,2 +1,2 @@
1
- export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@0.0.737/dist/tester.composition.js')]
2
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@0.0.737/dist/tester.docs.mdx')]
1
+ export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@0.0.738/dist/tester.composition.js')]
2
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_tester@0.0.738/dist/tester.docs.mdx')]