🏡 index : quine-global/webdriverio.git

/*
 * Maintains a counter for each driver to get consistent and
 * unique screenshot names for percy
 */

interface Map {
    [key: string]: Record<string, number>
}

class PercyCaptureMap {
    #map: Map = {}

    increment(sessionName: string, eventName: string) {
        if (!this.#map[sessionName]) {
            this.#map[sessionName] = {}
        }

        if (!this.#map[sessionName][eventName]) {
            this.#map[sessionName][eventName] = 0
        }

        this.#map[sessionName][eventName]++
    }

    decrement(sessionName: string, eventName: string) {
        if (!this.#map[sessionName] || !this.#map[sessionName][eventName]) {
            return
        }

        this.#map[sessionName][eventName]--
    }

    getName(sessionName: string, eventName: string) {
        return `${sessionName}-${eventName}-${this.get(sessionName, eventName)}`
    }

    get(sessionName: string, eventName: string) {
        if (!this.#map[sessionName]) {
            return 0
        }

        if (!this.#map[sessionName][eventName]) {
            return 0
        }

        return this.#map[sessionName][eventName] - 1
    }
}

export default PercyCaptureMap