diff --git a/src/elementRoleMap.js b/src/elementRoleMap.js index 0d016a4..5de46e6 100644 --- a/src/elementRoleMap.js +++ b/src/elementRoleMap.js @@ -23,7 +23,25 @@ for (let i = 0; i < keys.length; i++) { if (relation.module === 'HTML') { const concept = relation.concept; if (concept) { - elementRoles.push([concept, [key]]); + const elementRoleRelation: ?ElementARIARoleRelationTuple = elementRoles.find(relation => ariaRoleRelationConceptAttributeEquals(relation[0], concept)); + let roles: RoleSet; + + if (elementRoleRelation) { + roles = elementRoleRelation[1]; + } else { + roles = []; + } + let isUnique = true; + for (let i = 0; i < roles.length; i++) { + if (roles[i] === key) { + isUnique = false; + break; + } + } + if (isUnique) { + roles.push(key); + } + elementRoles.push([concept, roles]); } } }