🏡 index : quine-global/webdriverio.git

import { vi } from 'vitest'

export default class MochaMock {
    loadFiles = vi.fn()
    loadFilesAsync = vi.fn()
    reporter = vi.fn()
    fullTrace = vi.fn()
    addFile = vi.fn()
    run = vi.fn()

    mockFailureCount: number
    suite: { on: any }
    runner: {
        on: any
        suite: any
        test: any
    }

    constructor (private mochaOpts: any) {
        this.suite = {
            on: vi.fn()
        }

        this.runner = {
            on: vi.fn(),
            suite: {
                beforeAll: vi.fn(),
                beforeEach: vi.fn(),
                afterEach: vi.fn(),
                afterAll: vi.fn(),
                suites: [{ 'title': 'first suite' }]
            },
            test: { 'title': 'first test' }
        }

        this.mockFailureCount = mochaOpts.mockFailureCount || 0
        this.run = vi.fn().mockImplementation((cb) => {
            if (mochaOpts.mockRuntimeError) {
                throw mochaOpts.mockRuntimeError
            }

            cb(this.mockFailureCount)
            return this.runner
        })
    }

    static Runner = vi.fn().mockImplementation(function (total) {
        return { grep: vi.fn(), total }
    })
}