UNPKG

@teambit/tester

Version:
180 lines (179 loc) 4.78 kB
import type { CLIMain } from '@teambit/cli'; import type { Component, IComponent } from '@teambit/component'; import type { EnvsExecutionResult, EnvsMain } from '@teambit/envs'; import type { LoggerMain } from '@teambit/logger'; import type { Workspace } from '@teambit/workspace'; import type { GraphqlMain } from '@teambit/graphql'; import type { BuilderMain } from '@teambit/builder'; import type { UiMain } from '@teambit/ui'; import type { DevFilesMain } from '@teambit/dev-files'; import type { TestsResult } from '@teambit/tests-results'; import type { ComponentsResults, CallbackFn, Tests } from './tester'; import { TesterService } from './tester.service'; import { TesterTask } from './tester.task'; export type TesterExtensionConfig = { /** * regex of the text environment. */ testRegex: string; /** * determine whether to watch on start. */ watchOnStart: boolean; patterns: string[]; }; export type TestResults = EnvsExecutionResult<Tests>; export type TesterOptions = { /** * start the tester in watch mode. */ watch: boolean; /** * start the tester in debug mode. */ debug: boolean; /** * start the tester in debug mode. */ ui?: boolean; /** * initiate the tester on given env. */ env?: string; /** * generate JUnit files on the specified dir */ junit?: string; /** * show code coverage */ coverage?: boolean; /** * update snapshot if supported by the tester */ updateSnapshot?: boolean; callback?: CallbackFn; }; type CoverageResults = { files: CoverageFile[]; total: CoverageData; }; type CoverageStats = { pct: number; total: number; covered: number; skipped: number; }; type CoverageFile = { path: string; data: CoverageData; }; type CoverageData = { lines: CoverageStats; statements: CoverageStats; functions: CoverageStats; branches: CoverageStats; }; export declare class TesterMain { private patterns; /** * graphql extension. */ private graphql; /** * envs extension. */ private envs; /** * workspace extension. */ private workspace; /** * tester service. */ readonly service: TesterService; /** * build task. */ readonly task: TesterTask; private devFiles; private builder; static runtime: import("@teambit/harmony").RuntimeDefinition; static dependencies: import("@teambit/harmony").Aspect[]; constructor(patterns: string[], /** * graphql extension. */ graphql: GraphqlMain, /** * envs extension. */ envs: EnvsMain, /** * workspace extension. */ workspace: Workspace, /** * tester service. */ service: TesterService, /** * build task. */ task: TesterTask, devFiles: DevFilesMain, builder: BuilderMain); _testsResults: { [componentId: string]: ComponentsResults; } | undefined[]; test(components: Component[], opts?: TesterOptions): Promise<TestResults>; private generateJUnit; /** * watch all components for changes and test upon each. */ watch(components: Component[], opts?: TesterOptions): Promise<EnvsExecutionResult<Tests>>; uiWatch(): Promise<EnvsExecutionResult<Tests>>; getTestsResults(component: IComponent, idHasVersion?: boolean): Promise<{ testsResults?: TestsResult; loading: boolean; coverage?: CoverageResults; } | undefined>; private getTestsResultsFromState; /** * Get the tests patterns from the config. (used as default patterns in case the env does not provide them via getTestsDevPatterns) * @returns */ getPatterns(): string[]; getComponentDevPatterns(component: Component): { name: string; pattern: string[]; }; getDevPatternToRegister(): (component: Component) => { name: string; pattern: string[]; }; /** * get all test files of a component. */ getTestFiles(component: Component): import("@teambit/component.sources").AbstractVinyl[]; private getOptions; static defaultConfig: { /** * default test regex for which files tester to apply on. */ patterns: string[]; /** * determine whether to watch on start. */ watchOnStart: boolean; }; static provider([cli, envs, workspace, loggerAspect, graphql, ui, devFiles, builder]: [ CLIMain, EnvsMain, Workspace, LoggerMain, GraphqlMain, UiMain, DevFilesMain, BuilderMain ], config: TesterExtensionConfig): Promise<TesterMain>; } export {};