///
///
import type { FixtureResult, Globals, Label, LabelName, Link, LinkType, Parameter, StepResult, TestResult, TestResultContainer } from "../../model.js";
import type { Category, EnvironmentInfo } from "../types.js";
export declare const ALLURE_METADATA_CONTENT_TYPE = "application/vnd.allure.metadata+json";
export declare const ALLURE_RUNTIME_MESSAGE_CONTENT_TYPE = "application/vnd.allure.message+json";
export interface LifecycleListener {
beforeTestResultStart?: (result: TestResult) => void;
afterTestResultStart?: (result: TestResult) => void;
beforeTestResultStop?: (result: TestResult) => void;
afterTestResultStop?: (result: TestResult) => void;
beforeTestResultUpdate?: (result: TestResult) => void;
afterTestResultUpdate?: (result: TestResult) => void;
beforeTestResultWrite?: (result: TestResult) => void;
afterTestResultWrite?: (result: TestResult) => void;
beforeStepStop?: (result: StepResult) => void;
afterStepStop?: (result: StepResult) => void;
}
export type LinkTemplate = string | ((url: string) => string);
export type LinkTypeOptions = {
urlTemplate: LinkTemplate;
nameTemplate?: LinkTemplate;
};
export type LinkConfig = Partial> & Record;
export type WriterDescriptor = [cls: string, ...args: readonly unknown[]] | string;
export type GlobalLabelsConfig = Partial> & Record;
export interface ReporterConfig {
readonly resultsDir?: string;
readonly links?: LinkConfig;
readonly globalLabels?: Label[] | GlobalLabelsConfig;
readonly listeners?: LifecycleListener[];
readonly environmentInfo?: EnvironmentInfo;
readonly categories?: Category[];
}
export interface ReporterRuntimeConfig extends Omit {
readonly writer: Writer | WriterDescriptor;
}
export interface Writer {
writeResult(result: TestResult): void;
writeGroup(result: TestResultContainer): void;
writeAttachment(distFileName: string, content: Buffer): void;
writeAttachmentFromPath(distFileName: string, from: string): void;
writeEnvironmentInfo(info: EnvironmentInfo): void;
writeCategoriesDefinitions(categories: Category[]): void;
writeGlobals(distFileName: string, info: Globals): void;
}
export type TestScope = {
uuid: string;
tests: string[];
fixtures: FixtureResultWrapper[];
labels: Label[];
links: Link[];
parameters: Parameter[];
description?: string;
descriptionHtml?: string;
};
export type FixtureType = "before" | "after";
export type FixtureResultWrapper = {
uuid: string;
value: FixtureResult;
type: FixtureType;
scopeUuid: string;
};
export type TestResultWrapper = {
value: TestResult;
scopeUuids: string[];
};