@teambit/tester
Version:
180 lines (179 loc) • 4.78 kB
TypeScript
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 {};