🏡 index : quine-global/webdriverio.git

/**
 * notify `WDIOCLInterface` about failure in hook
 * we need to do it this way because `beforeFn` and `afterFn` are not real hooks.
 * Otherwise hooks failures are lost.
 *
 * @param {string}  hookName    name of the hook
 * @param {Array}   hookResults hook functions results array
 * @param {string}  cid         cid
 */
export const logHookError = (hookName: string, hookResults: unknown[] = [], cid: string) => {
    const result = hookResults.find(result => result instanceof Error)
    if (typeof result === 'undefined') {
        return
    }

    /**
     * need to convert Error to plain object, otherwise it is lost on process.send
     */
    const error = { message: result.message }

    const content = {
        cid: cid,
        error: error,
        fullTitle: `${hookName} Hook`,
        type: 'hook',
        state: 'fail'
    }

    if (globalThis.process && typeof globalThis.process.send === 'function') {
        globalThis.process.send!({
            origin: 'reporter',
            name: 'printFailureMessage',
            content
        })
    }
}