@teambit/tester 0.0.574 → 0.0.575

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,7 +1,7 @@
1
1
  import { Logger } from '@teambit/logger';
2
2
  import { EnvService, ExecutionContext, EnvDefinition } from '@teambit/envs';
3
3
  import { Workspace } from '@teambit/workspace';
4
- import { PubSub } from 'graphql-subscriptions';
4
+ import { PubSubEngine } from 'graphql-subscriptions';
5
5
  import { DevFilesMain } from '@teambit/dev-files';
6
6
  import { Tests, CallbackFn } from './tester';
7
7
  import { TesterOptions } from './tester.main.runtime';
@@ -39,7 +39,7 @@ export declare class TesterService implements EnvService<Tests, TesterDescriptor
39
39
  /**
40
40
  * regex used to identify which files to test.
41
41
  */
42
- patterns: string[], logger: Logger, pubsub: PubSub, devFiles: DevFilesMain);
42
+ patterns: string[], logger: Logger, pubsub: PubSubEngine, devFiles: DevFilesMain);
43
43
  _callback: CallbackFn | undefined;
44
44
  render(env: EnvDefinition): JSX.Element;
45
45
  getDescriptor(environment: EnvDefinition): {
@@ -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","NoTestFilesFound","join","console","cyan","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 { PubSub } 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';\nimport { NoTestFilesFound } from './exceptions';\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: PubSub,\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) throw new NoTestFilesFound(this.patterns.join(','));\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 return tester.test(testerContext);\n }\n}\n"]}
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","NoTestFilesFound","join","console","cyan","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":";;;;;;;;;;;;;;;;;;;;;;;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;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA,MAAMA,KAAK,GAAGC,OAAO,CAAC,OAAD,CAArB;;AAEO,MAAMC,cAAc,GAAG,gBAAvB;;;AA0BA,MAAMC,aAAN,CAAmE;AAGxEC,EAAAA,WAAW,CACAC,SADA;AAET;AACJ;AACA;AACaC,EAAAA,QALA,EAODC,MAPC,EASDC,MATC,EAWDC,QAXC,EAYT;AAAA,SAXSJ,SAWT,GAXSA,SAWT;AAAA,SAPSC,QAOT,GAPSA,QAOT;AAAA,SALQC,MAKR,GALQA,MAKR;AAAA,SAHQC,MAGR,GAHQA,MAGR;AAAA,SADQC,QACR,GADQA,QACR;AAAA,kDAdK,QAcL;AAAA;AAAE;;AAIJC,EAAAA,MAAM,CAACC,GAAD,EAAqB;AACzB,UAAMC,UAAU,GAAG,KAAKC,aAAL,CAAmBF,GAAnB,CAAnB;AACA,wBACE,+BAAC,WAAD;AAAM,MAAA,GAAG,EAAEC,UAAF,aAAEA,UAAF,uBAAEA,UAAU,CAAEE;AAAvB,oBACE,+BAAC,WAAD;AAAM,MAAA,KAAK,EAAC;AAAZ,6BADF,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;AAAM,MAAA,SAAS,MAAf;AAAgB,MAAA,KAAK,EAAC;AAAtB,wBANF,eASE,+BAAC,cAAD,OATF,eAUE,+BAAC,WAAD,QAEG,6BAAU,CAAAJ,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEK,MAAZ,KAAsB,EAAhC,EAAoC;AAAEC,MAAAA,QAAQ,EAAE,YAAZ;AAA0BC,MAAAA,cAAc,EAAE;AAA1C,KAApC,CAFH,CAVF,eAcE,+BAAC,cAAD,OAdF,CADF;AAkBD;;AAEDN,EAAAA,aAAa,CAACO,WAAD,EAA6B;AACxC,QAAI,CAACA,WAAW,CAACT,GAAZ,CAAgBU,SAArB,EAAgC,OAAOC,SAAP;AAChC,UAAMC,MAAc,GAAGH,WAAW,CAACT,GAAZ,CAAgBU,SAAhB,EAAvB;AAEA,WAAO;AACLP,MAAAA,EAAE,EAAES,MAAM,CAACT,EAAP,IAAa,EADZ;AAELC,MAAAA,WAAW,EAAEQ,MAAM,CAACR,WAAP,IAAsB,EAF9B;AAGLS,MAAAA,IAAI,EAAED,MAAM,CAACC,IAAP,IAAe,EAHhB;AAILP,MAAAA,MAAM,EAAEM,MAAM,CAACE,aAAP,GAAuBF,MAAM,CAACE,aAAP,EAAvB,GAAgD,EAJnD;AAKLT,MAAAA,OAAO,EAAEO,MAAM,CAACP,OAAP,GAAiBO,MAAM,CAACP,OAAP,EAAjB,GAAoC;AALxC,KAAP;AAOD;;AAEDU,EAAAA,iBAAiB,CAACC,QAAD,EAAuB;AACtC,SAAKC,SAAL,GAAiBD,QAAjB;AACD;;AAEQ,QAAHE,GAAG,CAACC,OAAD,EAA4BC,OAA5B,EAAoE;AAC3E,UAAMR,MAAc,GAAGO,OAAO,CAACnB,GAAR,CAAYU,SAAZ,EAAvB;;AACA,UAAMW,SAAS,GAAGC,0BAAaC,EAAb,CAAgBJ,OAAO,CAACK,UAAxB,EAAqCC,SAAD,IAAe;AACnE,aAAO,8BAAgBA,SAAhB,EAA2B,KAAK3B,QAAhC,CAAP;AACD,KAFiB,CAAlB;;AAGA,UAAM4B,SAAS,GAAGL,SAAS,CAACM,OAAV,GAAoBC,MAApB,CAA2B,CAACC,GAAD,EAAM,GAAGC,KAAH,CAAN,KAAoBD,GAAG,GAAGC,KAAK,CAACC,MAA3D,EAAmE,CAAnE,CAAlB;AAEA,UAAMC,kBAAkB,GAAGX,SAAS,CAACM,OAAV,GAAoBC,MAApB,CAA2B,CAACC,GAAD,EAAc,GAAGC,KAAH,CAAd,KAA4B;AAChF,UAAIA,KAAK,CAACC,MAAN,GAAe,CAAnB,EAAsBF,GAAG,IAAI,CAAP;AACtB,aAAOA,GAAP;AACD,KAH0B,EAGxB,CAHwB,CAA3B;AAKA,QAAIH,SAAS,KAAK,CAAd,IAAmB,CAACN,OAAO,CAACa,EAAhC,EAAoC,MAAM,KAAIC,8BAAJ,EAAqB,KAAKvC,QAAL,CAAcwC,IAAd,CAAmB,GAAnB,CAArB,CAAN;AAEpC,QAAI,CAACf,OAAO,CAACa,EAAb,EACE,KAAKrC,MAAL,CAAYwC,OAAZ,CAAqB,WAAUJ,kBAAmB,gCAA+B3C,KAAK,CAACgD,IAAN,CAAWlB,OAAO,CAAChB,EAAnB,CAAuB,IAAxG;;AAEF,UAAMR,QAAQ,GAAG2B,0BAAaC,EAAb,CAAgBJ,OAAO,CAACK,UAAxB,EAAqCC,SAAD,IAAe;AAClE,YAAMa,GAAG,GAAG,KAAK5C,SAAL,CAAe6C,YAAf,CAA4Bd,SAAS,CAACtB,EAAtC,CAAZ;AACA,YAAMqC,iBAAiB,GAAG,KAAK1C,QAAL,CAAc2C,cAAd,CAA6BhB,SAA7B,EAAwCiB,uBAAavC,EAArD,CAA1B;AACA,aAAOqC,iBAAiB,CAACG,GAAlB,CAAuBC,OAAD,KAAsB;AAAEC,QAAAA,IAAI,EAAE,qBAAQP,GAAR,EAAaM,OAAb,CAAR;AAA+BE,QAAAA,QAAQ,EAAEF;AAAzC,OAAtB,CAAtB,CAAP;AACD,KAJgB,CAAjB;;AAMA,UAAMG,aAAa,GAAGC,MAAM,CAACC,MAAP,CAAc9B,OAAd,EAAuB;AAC3C+B,MAAAA,OAAO,EAAE,KADkC;AAE3C7B,MAAAA,SAF2C;AAG3C1B,MAAAA,QAH2C;AAI3CwD,MAAAA,QAAQ,EAAE,KAAKzD,SAAL,CAAemD,IAJkB;AAK3CnD,MAAAA,SAAS,EAAE,KAAKA,SAL2B;AAM3C0D,MAAAA,KAAK,EAAEhC,OAAO,CAACgC,KAN4B;AAO3CC,MAAAA,KAAK,EAAEjC,OAAO,CAACiC,KAP4B;AAQ3CpB,MAAAA,EAAE,EAAEb,OAAO,CAACa,EAR+B;AAS3CqB,MAAAA,QAAQ,EAAElC,OAAO,CAACkC;AATyB,KAAvB,CAAtB;;AAYA,QAAIlC,OAAO,CAACiC,KAAR,IAAiBjC,OAAO,CAACa,EAAzB,IAA+BrB,MAAM,CAACyC,KAA1C,EAAiD;AAC/C,UAAIzC,MAAM,CAACG,iBAAX,EAA8B;AAC5B;AACAH,QAAAA,MAAM,CAACG,iBAAP,CAA0BwC,OAAD,IAAa;AACpC,cAAI,KAAKtC,SAAT,EAAoB,KAAKA,SAAL,CAAesC,OAAf;AACpBA,UAAAA,OAAO,CAAC/B,UAAR,CAAmBgC,OAAnB,CAA4B/B,SAAD,IAAe;AACxC;AACA,iBAAK5B,MAAL,CAAY4D,OAAZ,CAAoBlE,cAApB,EAAoC;AAClCmE,cAAAA,YAAY,EAAE;AACZvD,gBAAAA,EAAE,EAAEsB,SAAS,CAACkC,WAAV,CAAsBC,QAAtB,EADQ;AAEZC,gBAAAA,YAAY,EAAEpC,SAAS,CAAC8B,OAFZ;AAGZO,gBAAAA,OAAO,EAAErC,SAAS,CAACqC;AAHP;AADoB,aAApC;AAOD,WATD;AAUD,SAZD;AAaD;;AAED,aAAOlD,MAAM,CAACyC,KAAP,CAAaN,aAAb,CAAP;AACD;;AAED,WAAOnC,MAAM,CAACmD,IAAP,CAAYhB,aAAZ,CAAP;AACD;;AAnHuE","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';\nimport { NoTestFilesFound } from './exceptions';\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) throw new NoTestFilesFound(this.patterns.join(','));\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 return tester.test(testerContext);\n }\n}\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/tester",
3
- "version": "0.0.574",
3
+ "version": "0.0.575",
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.574"
9
+ "version": "0.0.575"
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.397",
28
28
  "@teambit/logger": "0.0.485",
29
- "@teambit/workspace": "0.0.574",
30
- "@teambit/component": "0.0.574",
31
- "@teambit/graphql": "0.0.574",
32
- "@teambit/builder": "0.0.574",
33
- "@teambit/dev-files": "0.0.574",
34
- "@teambit/envs": "0.0.574",
29
+ "@teambit/workspace": "0.0.575",
30
+ "@teambit/component": "0.0.575",
31
+ "@teambit/graphql": "0.0.575",
32
+ "@teambit/builder": "0.0.575",
33
+ "@teambit/dev-files": "0.0.575",
34
+ "@teambit/envs": "0.0.575",
35
35
  "@teambit/tests-results": "0.0.83",
36
- "@teambit/ui": "0.0.574",
37
- "@teambit/compiler": "0.0.574",
36
+ "@teambit/ui": "0.0.575",
37
+ "@teambit/compiler": "0.0.575",
38
38
  "@teambit/bit-error": "0.0.383",
39
39
  "@teambit/defender.ui.test-loader": "0.0.476",
40
40
  "@teambit/defender.ui.test-table": "0.0.479",
@@ -6,7 +6,7 @@ import { EnvService, ExecutionContext, EnvDefinition } from '@teambit/envs';
6
6
  import { ComponentMap } from '@teambit/component';
7
7
  import { Workspace } from '@teambit/workspace';
8
8
  import highlight from 'cli-highlight';
9
- import { PubSub } from 'graphql-subscriptions';
9
+ import { PubSubEngine } from 'graphql-subscriptions';
10
10
  import { DevFilesMain } from '@teambit/dev-files';
11
11
  import { Tester, Tests, CallbackFn } from './tester';
12
12
  import { TesterAspect } from './tester.aspect';
@@ -54,7 +54,7 @@ export class TesterService implements EnvService<Tests, TesterDescriptor> {
54
54
 
55
55
  private logger: Logger,
56
56
 
57
- private pubsub: PubSub,
57
+ private pubsub: PubSubEngine,
58
58
 
59
59
  private devFiles: DevFilesMain
60
60
  ) {}