private getFrameSelectorToResultMap()

in src/injected/frameCommunicators/html-element-axe-results-helper.ts [93:119]


    private getFrameSelectorToResultMap(
        elementResults: AxeResultsWithFrameLevel[],
    ): DictionaryStringTo<AxeResultsWithFrameLevel[]> {
        const elementResultsByFrame: DictionaryStringTo<AxeResultsWithFrameLevel[]> = {};

        for (let i = 0; i < elementResults.length; i++) {
            const elementResult = elementResults[i];
            const targetLength = elementResult.target.length;

            if (elementResult.targetIndex == null) {
                elementResult.targetIndex = 0;
            }
            if (targetLength === elementResult.targetIndex + 1) {
                // current frame
                elementResultsByFrame[''] = elementResultsByFrame[''] || [];
                elementResultsByFrame[''].push(elementResult);
            } else if (targetLength > elementResult.targetIndex + 1) {
                const frameSelector = elementResult.target[elementResult.targetIndex++];
                elementResultsByFrame[frameSelector] = elementResultsByFrame[frameSelector] || [];
                elementResultsByFrame[frameSelector].push(elementResult);
            } else {
                this.logger.log('Unable to find selector for result ', elementResult);
            }
        }

        return elementResultsByFrame;
    }