@ericmconnelly/wdio-slack-reporter
Version:
Reporter from WebdriverIO using Web API to send results to Slack.
71 lines • 2.8 kB
TypeScript
/// <reference types="node" />
import { ChatPostMessageArguments, FilesUploadArguments } from '@slack/web-api';
import { IncomingWebhookSendArguments } from '@slack/webhook';
import { RunnerStats, SuiteStats, TestStats } from '@wdio/reporter';
import { Reporters } from '@wdio/types';
import { SLACK_REQUEST_TYPE } from './constants.js';
export { ChatPostMessageArguments, FilesUploadArguments, WebAPICallResult, } from '@slack/web-api';
export { IncomingWebhookResult, IncomingWebhookSendArguments, } from '@slack/webhook';
export { RunnerStats, TestStats } from '@wdio/reporter';
export type TestResultType = 'passed' | 'failed' | 'pending' | 'skipped';
export interface StateCount {
passed: number;
failed: number;
skipped: number;
}
export declare class CucumberStats extends SuiteStats {
state: TestStats['state'];
}
export interface EmojiSymbols {
passed?: string;
failed?: string;
skipped?: string;
pending?: string;
start?: string;
finished?: string;
watch?: string;
}
export interface SlackWebApiOptions {
type: 'web-api';
channel: string;
slackBotToken: string;
uploadScreenshotOfFailedCase?: boolean;
notifyDetailResultThread?: boolean;
filterForDetailResults?: TestResultType[];
createScreenshotPayload?: (testStats: TestStats, screenshotBuffer: Buffer) => FilesUploadArguments;
createResultDetailPayload?: (runnerStats: RunnerStats, stateCounts: StateCount) => ChatPostMessageArguments;
}
export interface SlackWebhookOptions {
type: 'webhook';
webhook: string;
slackName?: string;
slackIconUrl?: string;
}
export type SlackOptions = SlackWebApiOptions | SlackWebhookOptions;
export interface SlackReporterOptions extends Reporters.Options {
slackOptions?: SlackOptions;
emojiSymbols?: EmojiSymbols;
title?: string;
resultsUrl?: string;
notifyFailedCase?: boolean;
notifyTestStartMessage?: boolean;
notifyTestFinishMessage?: boolean;
createStartPayload?: (runnerStats: RunnerStats) => ChatPostMessageArguments | IncomingWebhookSendArguments;
createFailedTestPayload?: (testStats: TestStats) => ChatPostMessageArguments | IncomingWebhookSendArguments;
createResultPayload?: (runnerStats: RunnerStats, stateCounts: StateCount) => ChatPostMessageArguments | IncomingWebhookSendArguments;
}
export type SlackRequestType = PostMessage | Upload | Send;
interface PostMessage {
type: typeof SLACK_REQUEST_TYPE.WEB_API_POST_MESSAGE;
payload: ChatPostMessageArguments;
isDetailResult?: boolean;
}
interface Upload {
type: typeof SLACK_REQUEST_TYPE.WEB_API_UPLOAD;
payload: FilesUploadArguments;
}
interface Send {
type: typeof SLACK_REQUEST_TYPE.WEBHOOK_SEND;
payload: IncomingWebhookSendArguments;
}
//# sourceMappingURL=types.d.ts.map