Kilotest: Diagnoses of button name not visible
violation by HTML element 816 on Fair Vote page
Basics
About the page
- URL: https://fairvote.org/
- Tested 3 days ago on 2026-10-07 at 21:15 by job
261007T2112-ljo - Summary of results:
- Rule engines:
- Called: 12
- Were able to test: 12
- Reported any rule violations: 11
- Violations: 714
- Violators: 357
- Issues: 53
- Rule engines:
- Download the full technical report (JSON)
About the issue
- Why it matters: User cannot get help explaining a button
- Priority: lowest
- Related WCAG standard: 4.1.2
- Reported by 1 rule engine (ASLint)
- Violations: 20
- Violators: 16
About the violator
- Tag name:
DIV - Text:
SIGN UP FOR OUR NEWSLETTER … gform.initializeOnLoaded( function() {jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );var current_page = jQuery('#gform_source_page_number_4').val();jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "4", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_4" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_4"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_4" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 4, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} );
- Start tag:
<div class="indietech-popup__container indietech-popup__container--center-center indietech-popup__container--no-header" role="dialog" aria-modal="true" aria-label="Sign Up - Banners" style="max-width: 600px;"> - XPath:
/html/body /div[4] /div[1] /div[1] - Bounding box: [not obtained]
- Reported by ASLint
Diagnoses
Here is how rule engines diagnose the button name not visible
issue for HTML element 816 of the Fair Vote page.
- The button content has only whitespaces. Having only defined an attribute aria-label="Close modal" is not sufficient and it is recommended to have the content instead, e.g. at least visually hidden, but exposed to assisitve technologies. Some users are disabling styles for better readability, and also description from attribute is not available for automatic translators.
Rule engine: ASLint (eSSENTIAL Accessibility)
Rule:
empty_button_description