Cypress.Commands.overwrite('check', checkCommand); Cypress.Commands.overwrite('uncheck', uncheckCommand); function checkCommand(originalFn, subject, value, options = {}) { checkOrUncheck('check', originalFn, subject, value, options); } function uncheckCommand(originalFn, subject, value, options = {}) { checkOrUncheck('uncheck', originalFn, subject, value, options); } function checkOrUncheck(type, originalFn, subject, values = [], options = {}) { const isAcceptableElement = $el => { switch (type) { case 'check': return $el.is(':checkbox,:radio'); case 'uncheck': return $el.is(':checkbox'); } }; if (subject.is('dato-checkbox')) { cy.get(subject).click(); } else if (subject.is('dato-radio')) { values = Array.isArray(values) ? values : [values]; for (let i = 0; i < subject.length; i++) { const radio = subject[i]; const input = radio.querySelector('input'); const radioValue = input.getAttribute('value'); if (values.indexOf(radioValue) > -1) { const label = radio.querySelector('label'); cy.get(label).click(); } } } else { originalFn(subject, values, options); } }