🏡 index : quine-global/webdriverio.git

import type HookStats from './hook.js'
import RunnableStats from './runnable.js'
import type TestStats from './test.js'
import type { Tag } from '../types.js'

export interface Suite {
    type?: string
    title: string
    parent?: string
    fullTitle: string
    pending?: boolean
    file: string
    duration?: number
    cid?: string
    specs?: string[]
    uid?: string
    tags?: string[] | Tag[]
    description?: string
    rule?: string
    retries?: number
}

/**
 * Class describing statistics about a single suite.
 */
export default class SuiteStats extends RunnableStats {
    uid: string
    cid?: string
    file: string
    title: string
    fullTitle: string
    tags?: string[] | Tag[]
    tests: TestStats[] = []
    hooks: HookStats[] = []
    suites: SuiteStats[] = []
    parent?: string
    retries = 0
    /**
     * an array of hooks and tests stored in order as they happen
     */
    hooksAndTests: (HookStats | TestStats)[] = []
    description?: string
    rule?: string

    constructor (suite: Suite) {
        super(suite.type || 'suite')
        this.uid = RunnableStats.getIdentifier(suite)
        this.cid = suite.cid
        this.file = suite.file
        this.title = suite.title
        this.fullTitle = suite.fullTitle
        this.tags = suite.tags
        this.parent= suite.parent
        /**
         * only Cucumber
         */
        this.description = suite.description
        this.rule = suite.rule
    }

    /**
     * Mark suite as retried and remove previous history.
     */
    retry () {
        this.retries++
        this.tests = []
        this.hooks = []
        this.hooksAndTests = []
    }
}