@qaflag/core
Version:
Base requirements for the QA Flag library
62 lines (55 loc) • 1.69 kB
text/typescript
import { Logger } from '../models/logger';
import { LogProvider } from '../types/log-provider.interface';
import { ScenarioInterface } from '../scenario/scenario.interface';
import TypedEmitter from 'typed-emitter';
import { KvStore } from '../models/kv-store';
import { PersonaInterface } from '../persona/persona.interface';
import { TestCase } from '../case/case';
import { ProjectSettings } from '../types/project-settings.interface';
export interface SuiteStep {
stepNumber: number;
scenarios: ScenarioInterface[];
}
export type SuiteEvents = {
personaStartUp: () => void;
personaInitialized: () => void;
beforeAll: () => void;
beforeEach: (scenario: ScenarioInterface) => void;
afterEach: (scenario: ScenarioInterface) => void;
completed: () => void;
passed: () => void;
failed: () => void;
};
export interface SuiteConstructor {
new (settings: ProjectSettings): SuiteInterface;
}
export interface SuiteInterface extends LogProvider {
title: string;
steps: SuiteStep[];
cases: TestCase[];
scenarios: ScenarioInterface[];
events: TypedEmitter<SuiteEvents>;
persona: PersonaInterface;
logger: Logger;
results: SuiteResults;
store: KvStore;
baseUrl: string | undefined;
settings: ProjectSettings;
set<T>(key: string, value: T): T;
get<T = any>(key: string): T;
push<T = any>(key: string, value: T): T[];
__execute(): Promise<void>;
}
export type SuiteStatus = 'not started' | 'in progress' | 'pass' | 'fail';
export interface SuiteResults {
status: SuiteStatus;
scenarios: {
passCount: number;
failCount: number;
};
assertions: {
passCount: number;
failCount: number;
optionalFailCount: number;
};
}