<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Stefany Newman on Medium]]></title>
        <description><![CDATA[Stories by Stefany Newman on Medium]]></description>
        <link>https://medium.com/@web-accessibility-education?source=rss-f3cc8931cb6b------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*-_phUwSik8XTeb2SdRwCbA.png</url>
            <title>Stories by Stefany Newman on Medium</title>
            <link>https://medium.com/@web-accessibility-education?source=rss-f3cc8931cb6b------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 23:15:55 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@web-accessibility-education/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[I am offering freelance accessibility services ADA / Section 508 / EAA Compliance]]></title>
            <link>https://medium.com/@web-accessibility-education/i-am-offering-freelance-accessibility-services-ada-section-508-eaa-compliance-4759ba86ce68?source=rss-f3cc8931cb6b------2</link>
            <guid isPermaLink="false">https://medium.com/p/4759ba86ce68</guid>
            <category><![CDATA[accessibility]]></category>
            <category><![CDATA[web-accessibility]]></category>
            <category><![CDATA[ada-compliance]]></category>
            <category><![CDATA[eaa-compliance]]></category>
            <category><![CDATA[accessibility-consultant]]></category>
            <dc:creator><![CDATA[Stefany Newman]]></dc:creator>
            <pubDate>Fri, 02 Jan 2026 22:40:03 GMT</pubDate>
            <atom:updated>2026-01-02T22:40:03.570Z</atom:updated>
            <content:encoded><![CDATA[<p>I am offering freelance accessibility services ADA / Section 508 / EAA Compliance</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FnSY4I3wQ3Zc&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DnSY4I3wQ3Zc&amp;image=http%3A%2F%2Fi.ytimg.com%2Fvi%2FnSY4I3wQ3Zc%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/759e14b9a767101c5c8112ebd7a17f5a/href">https://medium.com/media/759e14b9a767101c5c8112ebd7a17f5a/href</a></iframe><p>I am offering accessibility remediation and audit services.</p><p>Schedule a meeting -&gt; <a href="https://calendly.com/stefanynewman/discovery-call">https://calendly.com/stefanynewman/discovery-call</a></p><p>What makes me stand out from the competition?</p><ol><li>I have worked as an <strong>Accessibility Subject Matter Expert</strong> at major companies, including <strong>Microsoft, Airbnb, and Paramount</strong>.</li><li>As an experienced <strong>front-end developer</strong>, I bring a unique and valuable skill set: I can not only <strong>audit</strong> a site for accessibility issues but I can also <strong>fix the code myself</strong> or recommend precise, actionable fixes directly within the codebase.</li><li>I hold the CPWA certification (Certified Professional in Web Accessibility), which is the highest designation available for an accessibility professional.</li><li>I am ready to start contributing immediately</li><li>I have the major screen readers and devices needed to perform a comprehensive accessibility audit, such as JAWS, VoiceOver, TalkBack and NVDA.</li><li>I never outsource my accessibility work, ensuring your company’s secrets and proprietary information are safe and secure with me.</li><li>I can audit websites and digital properties in <strong>multiple languages</strong>: English, Bulgarian, and Russian.</li></ol><p>How I can help your digital agency:</p><ul><li>Most freelancers work with clients after they get home from work, leaving them exhausted and prone to making mistakes. On the other hand, being an independent contractor is my full-time job, so I can be relied upon, not only to produce quality work, but also to communicate as frequently as needed.</li><li>If your agency website is not accessible, yet you advertise accessibility services, there is nearly 0% chance that you will be hired by clients who need to comply with accessibility. Would you trust a lung doctor who smokes? You are probably constantly losing clients without knowing it, since it takes pressing a few buttons to evaluate general website accessibility.</li><li>If you have clients that receive Federal funding, such as some universities and medical providers, they must comply with Section 508 (WCAG 2.0). However, hiring a full-time accessibility specialist for one or two clients can be prohibitive — hence hiring an independent contractor per a project is much more affordable.</li><li>If you advertise that you provide accessibility services, but don’t have a specialist on staff, it’s more affordable to hire outside help.</li><li>During the Discovery Process with a new client, if you need to write down the accessibility requirements, you would need that done by a specialist, not just a project manager or a sales person.</li><li>If you need accessibility training for your Engineering and Design staff.</li><li>If your clients have any presence in the European Market, then they need to comply with the European Accessibility Act (EAA)</li><li>If you need help writing a VPAT(Voluntary Product Accessibility Template) / ACR (Accessibility Conformance Report).</li></ul><p>How I can help your Product:</p><ul><li>If you need training for your testers. If your QA testers are not accessibility certified, they do not know how to test for it. It’s like asking someone who hasn’t gone to medical school to check your health.</li><li>If you need to confirm your product’s accessibility.</li><li>If you need to test with JAWS, but don’t want to pay for a subscription (it costs almost 1k a year).</li><li>If you need someone US based. Hiring offshore accessibility specialists increases the risk of trade secrets being revealed and weakens application security.</li><li>If you need an accessibility roadmap for your product, divided by sprints for your Quarterly Planning</li><li>If you want to sell your product to an entity that receives Federal funding, then the procurement process requires an Accessibility Conformance Report (commonly misnomered as a VPAT) of your offering.</li></ul><p>Testimonials from previous employers:</p><p>“<strong>Stefany helped us through three large accessibility audits</strong>, taking the reins on bug fixing, investigating, and documenting. I hope to work with [her] again!” — Chad Schulz, Principal Software Engineering Manager at Microsoft</p><p>“<strong>Stefany’s passion for accessibility shone through in her work.</strong>” — Diane Ko, Staff Engineer at Airbnb</p><p>I only work with 3 clients per a quarter, so book your free consultation today!</p><p>Portfolio:</p><p>Udemy link — <a href="https://www.udemy.com/user/stefany-newman/">https://www.udemy.com/user/stefany-newman/</a></p><p>Recent Conference Talk — <a href="https://docs.google.com/presentation/d/1rIej0xxaqsYTD1ttdxjXRP35jOKZ_uVuiYEgs3vO9P4/edit">https://docs.google.com/presentation/d/1rIej0xxaqsYTD1ttdxjXRP35jOKZ_uVuiYEgs3vO9P4/edit</a></p><p>Hand-coded accessible website — <a href="https://pointyendfencing.com/">https://pointyendfencing.com/</a> | Code — <a href="https://github.com/stefany-newman/accessible-fencing-website">https://github.com/stefany-newman/accessible-fencing-website</a></p><p>Accessible Image Slider (hand-coded) — <a href="https://github.com/stefany-newman/accessible-image-slider">https://github.com/stefany-newman/accessible-image-slider</a></p><p>VPAT / ACR — <a href="https://github.com/stefany-newman/accessible-image-slider/blob/main/Accessibility%20Conformance%20Report.md">https://github.com/stefany-newman/accessible-image-slider/blob/main/Accessibility%20Conformance%20Report.md</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4759ba86ce68" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Code an Accessible Image Slider Without Frameworks — Part 1: WCAG & HTML]]></title>
            <link>https://medium.com/@web-accessibility-education/how-to-code-an-accessible-image-slider-without-frameworks-part-1-wcag-html-a25862eb80e6?source=rss-f3cc8931cb6b------2</link>
            <guid isPermaLink="false">https://medium.com/p/a25862eb80e6</guid>
            <category><![CDATA[web-accessibility]]></category>
            <category><![CDATA[accessible-design]]></category>
            <category><![CDATA[wai-aria]]></category>
            <category><![CDATA[accessibility]]></category>
            <category><![CDATA[screen-reader]]></category>
            <dc:creator><![CDATA[Stefany Newman]]></dc:creator>
            <pubDate>Thu, 03 Jul 2025 22:15:51 GMT</pubDate>
            <atom:updated>2025-07-10T17:54:11.838Z</atom:updated>
            <content:encoded><![CDATA[<h3>How to Code an Accessible Image Slider Without Frameworks — Part 1: WCAG &amp; HTML</h3><p>Summary: Do not follow the APG’s version of a carousel literally. Make sure to code it depending on its own architecture. Use aria-roledescription to give the container a human readable name and don’t clutter the DOM with redundant ARIA. <a href="https://github.com/stefany-newman/accessible-image-slider">Check out the finished slider</a>.</p><figure><img alt="Image slider interface showing ‘Image 1’ with left and right navigation arrows and four pagination dots, the first dot highlighted." src="https://cdn-images-1.medium.com/max/1024/0*Bqyk6q3Qt6HUBy1J" /></figure><p>Nearly every website has images. One of the most difficult projects in accessible engineering is dealing with just about anything that has JavaScript and pictures. And if your website is an e-commerce one, then you definitely need image galleries — hence the point of this article.</p><p>But where could we find an accessible slider? <a href="https://www.w3.org/WAI/ARIA/apg/patterns/carousel/">We could copy the APG’s implementation of it</a>, but there are two main problems:</p><ol><li>Their code is old (they use var bindings — imagine going to the restroom and finding out there are newspapers instead of toilet paper — it would do the job, but at what cost?)</li><li>They only have 2 different instances of a slider — ones with bells and whistles — what if you need something simpler?</li></ol><h3>Defining project requirements</h3><p>Functions:</p><ul><li>One image showing at a time;</li><li>Next / previous graphic buttons</li><li>Upon reaching the end of the “next” image, the first one is shown;</li><li>Upon reaching the end of the “previous” image, the last one is shown;</li><li>Navigation dots</li><li>When the user activates either a dot or the next / previous buttons, the current dot becomes active (aria-current=”true”)</li></ul><p>Accessibility requirements:</p><ul><li>All controls must be keyboard operable;</li><li>All controls must remain visible while the user is in Forced Colors Mode (formerly known as Windows High Contrast Mode);</li><li>3:1 contrast to adjacent colors (unless we add medium sized text, then the contrast has to be 4.5:1);</li><li>The component must scale without a horizontal bar appearing, while the browser is zoomed in up to 400%;</li><li>All content images must have alt text;</li></ul><p>WCAG Success Criteria to conform to:</p><ol><li>1.1.1 Non-text Content</li><li>1.3.1 Info and Relationships</li><li>1.3.2 Meaningful Sequence</li><li>1.4.1 Use of Color</li><li>1.4.10 Reflow</li><li>1.4.11 Non-text Contrast</li><li>2.1.1 Keyboard</li><li>2.4.7 Focus Visible</li><li>2.4.12 Focus Not Obscured (Enhanced)</li><li>2.5.5 Target Size (Enhanced)</li><li>3.3.2 Labels on Instructions</li><li>4.1.2 Name, Role, Value</li></ol><p>WCAG Success Criteria to conform to, depending on the content:</p><ol><li>1.4.5 Images of Text (if the images contain burnt-in text, they must conform to 1.4.5).</li></ol><h3>Coding the HTML</h3><pre>&lt;section aria-roledescription=&quot;image slider&quot; aria-labelledby=&quot;gallery-heading&quot;&gt;<br>    &lt;! - Slider code here →<br>&lt;/section&gt;</pre><h3>Landmark or no landmark?</h3><p>Contrary to popular belief, &lt;section&gt; doesn’t have any semantic meaning, unless it has an accessible name, then it becomes a region. <strong>However, you could conform to the WCAG without making every </strong><strong>&lt;section&gt; a </strong><strong>region</strong>. In fact, if all your sections are regions, it will make the website harder to browse with screen readers since it would clutter the landmarks list.</p><p>If the parent page of the gallery is titled “Gallery”, then there is no need to add a semantic meaning to the container, especially if you have a visible heading.</p><pre>&lt;section aria-roledescription=”image slider” aria-labelledby=”gallery-heading”&gt;<br>     &lt;h1 id=”gallery-heading”&gt;Gallery&lt;/h1&gt;<br>&lt;/section&gt;</pre><p>We start by creating a section and giving it an aria-roledescription of “image slider”. The attribute aria-roledescription is used on group or region landmarks to give screen readers a hint as to what the content represents. The attribute aria-labelledby is used to name the section, hence giving it an implicit role of region.</p><pre>&lt;! - Next Button →<br>&lt;button type=&quot;button&quot; aria-label=&quot;Next Image&quot;&gt;<br>    &lt;svg aria-hidden=&quot;true&quot;&gt;…&lt;/svg&gt;<br>&lt;/button&gt;<br>&lt;! - Previous Button →<br>&lt;button type=&quot;button&quot; aria-label=&quot;Previous Image&quot;&gt;<br>    &lt;svg aria-hidden=&quot;true&quot;&gt;…&lt;/svg&gt;<br>&lt;/button&gt;</pre><p>Next and previous buttons added. Notice the ARIA:</p><ul><li>aria-label gives the buttons a string to be announced by screen readers, since their contents are just SVG arrows;</li><li>We hide the SVG arrows from screen readers with aria-hidden. The attribute is commonly used to hide elements from screen readers, but leaves them visible to sighted users.</li></ul><pre>&lt;div id=&quot;gallery-images&quot;&gt;<br>    &lt;img src=&quot;example-image-1.png&quot; id=&quot;image1&quot; alt=&quot;Image 1&quot; &gt;<br>    &lt;img src=&quot;example-image-2.png&quot; id=&quot;image2&quot; alt=&quot;Image 2&quot; hidden&gt;<br>    &lt;img src=&quot;example-image-3.png&quot; id=&quot;image3&quot; alt=&quot;Image 3&quot; hidden&gt;<br>    &lt;img src=&quot;example-image-4.png&quot; id=&quot;image4&quot; alt=&quot;Image 4&quot; hidden&gt;<br>&lt;/div&gt;</pre><p>Whenever we are writing JavaScript code that hides and shows content, we first must determine <strong>how to hide the elements, because there are numerous ways to do it,</strong> and it makes it easier to define it beforehand. In this case, we will hide the images with the hidden attribute.</p><pre>&lt;ol role=&quot;list&quot;&gt;<br>  &lt;li&gt;<br>     &lt;button type=&quot;button&quot; aria-current=&quot;true&quot; aria-labelledby=&quot;image1&quot;&gt;&lt;/button&gt;<br>  &lt;/li&gt;<br>  &lt;li&gt;<br>      &lt;button type=&quot;button&quot; aria-current=&quot;false&quot; aria-labelledby=&quot;image2&quot;&gt;&lt;/button&gt;<br>  &lt;/li&gt;<br>  &lt;li&gt;<br>      &lt;button type=&quot;button&quot; aria-current=&quot;false&quot; aria-labelledby=&quot;image3&quot;&gt;&lt;/button&gt;<br>  &lt;/li&gt;<br>  &lt;li&gt;<br>      &lt;button type=&quot;button&quot; aria-current=&quot;false&quot; aria-labelledby=&quot;image4&quot;&gt;&lt;/button&gt;<br>  &lt;/li&gt;<br>&lt;/ol&gt;</pre><p>We use role=”list” so that the list is announced properly on VoiceOver on Safari — since we are using list-style-type: none to style the dots, it sometimes makes the screen readers forget they are dealing with a list. aria-current is used to denote the currently active dot / image, and aria-labelledby labels each dot with the alt text of the image.</p><p>There are many ways to name dot navigation buttons. Some people use “Slide 1 of 4” in the accessible name, some people just use a static string, it depends on your component and its architecture. I chose to name the dots after the images, since at this time of writing (July 1), the alt text of the current image is not announced on next / previous with aria-live. This was a deliberate architectural decision on my part.</p><p>This is the final HTML (with classes and IDs):</p><pre>&lt;section class=&quot;gallery-section&quot; aria-roledescription=&quot;image slider&quot; aria-labelledby=&quot;gallery-heading&quot;&gt;<br>    &lt;h1 id=&quot;gallery-heading&quot;&gt;Gallery&lt;/h1&gt;<br>    &lt;div id=&quot;gallery-container&quot; class=&quot;gallery-container&quot;&gt;<br>        &lt;div class=&quot;next-prev-controls&quot; id=&quot;next-prev-controls&quot;&gt;<br>            &lt;button type=&quot;button&quot; id=&quot;next&quot; class=&quot;next&quot; aria-label=&quot;Next Image&quot;&gt;<br>                &lt;svg aria-hidden=&quot;true&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 -960 960 960&quot;&gt;<br>                    &lt;path d=&quot;M647-440H160v-80h487L423-744l57-56 320 320-320 320-57-56 224-224Z&quot;/&gt;<br>                &lt;/svg&gt;<br>            &lt;/button&gt;<br>            &lt;button type=&quot;button&quot; id=&quot;prev&quot; class=&quot;prev&quot; aria-label=&quot;Previous Image&quot;&gt;    <br>                &lt;svg aria-hidden=&quot;true&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 -960 960 960&quot;&gt;<br>                    &lt;path d=&quot;m313-440 224 224-57 56-320-320 320-320 57 56-224 224h487v80H313Z&quot;/&gt;<br>                &lt;/svg&gt;<br>            &lt;/button&gt;<br>        &lt;/div&gt;<br>        &lt;div id=&quot;gallery-images&quot; class=&quot;gallery-content&quot;&gt;<br>            &lt;img src=&quot;images/example/example-image-1.png&quot; class=&quot;gallery-image&quot; id=&quot;image1&quot; alt=&quot;Image 1&quot; &gt;<br>            &lt;img src=&quot;images/example/example-image-2.png&quot; class=&quot;gallery-image&quot; id=&quot;image2&quot; alt=&quot;Image 2&quot; hidden&gt;<br>            &lt;img src=&quot;images/example/example-image-3.png&quot; class=&quot;gallery-image&quot; id=&quot;image3&quot; alt=&quot;Image 3&quot; hidden&gt;<br>            &lt;img src=&quot;images/example/example-image-4.png&quot; class=&quot;gallery-image&quot; id=&quot;image4&quot; alt=&quot;Image 4&quot; hidden&gt;<br>        &lt;/div&gt;<br>        &lt;div id=&quot;dot-navigation&quot; class=&quot;dot-navigation&quot;&gt;<br>            &lt;ol role=&quot;list&quot;&gt;<br>                &lt;li&gt;<br>                    &lt;button type=&quot;button&quot; class=&quot;dot&quot; aria-current=&quot;true&quot;  aria-labelledby=&quot;image1&quot;&gt;&lt;/button&gt;<br>                &lt;/li&gt;<br>                &lt;li&gt;<br>                    &lt;button type=&quot;button&quot; class=&quot;dot&quot; aria-current=&quot;false&quot; aria-labelledby=&quot;image2&quot;&gt;&lt;/button&gt;<br>                &lt;/li&gt;<br>                &lt;li&gt;<br>                    &lt;button type=&quot;button&quot; class=&quot;dot&quot; aria-current=&quot;false&quot; aria-labelledby=&quot;image3&quot;&gt;&lt;/button&gt;<br>                &lt;/li&gt;<br>                &lt;li&gt;<br>                    &lt;button type=&quot;button&quot; class=&quot;dot&quot; aria-current=&quot;false&quot; aria-labelledby=&quot;image4&quot;&gt;&lt;/button&gt;<br>                &lt;/li&gt;<br>            &lt;/ol&gt;<br>        &lt;/div&gt;<br>    &lt;/div&gt;<br>&lt;/section&gt;</pre><p>Stay tuned for parts 2 and 3.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a25862eb80e6" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Lo que se debe y no se debe hacer con los botones de mostrar contraseña accesibles]]></title>
            <link>https://medium.com/@web-accessibility-education/lo-que-se-debe-y-no-se-debe-hacer-con-los-botones-de-mostrar-contrase%C3%B1a-accesibles-07b763bdcfd0?source=rss-f3cc8931cb6b------2</link>
            <guid isPermaLink="false">https://medium.com/p/07b763bdcfd0</guid>
            <category><![CDATA[accessible-design]]></category>
            <category><![CDATA[accessibility]]></category>
            <category><![CDATA[accesibilidad-web]]></category>
            <category><![CDATA[español]]></category>
            <category><![CDATA[accesibilidad-digital]]></category>
            <dc:creator><![CDATA[Stefany Newman]]></dc:creator>
            <pubDate>Thu, 26 Jun 2025 16:03:14 GMT</pubDate>
            <atom:updated>2025-06-26T16:03:14.580Z</atom:updated>
            <content:encoded><![CDATA[<p>Resumen: Los botones para desbloquear contraseñas deben ser grandes, operables con el teclado, con código semántico, buen contraste y utilizar un componente de casilla de verificación o una funcionalidad aria-pressed (alternar).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*i9tZ0lb4IAIUcUAe" /></figure><h3>Qué hacer: Permitir el uso del teclado</h3><p>Permitir el uso del teclado con el botón implica dos cosas:</p><ol><li>Los usuarios deben poder seleccionar el botón pulsando la tecla Tab…</li><li>…y al pulsar la barra espaciadora o Intro se debe activar, en este caso, ocultando o mostrando la contraseña.</li></ol><p>Sencillo, ¿verdad?</p><figure><img alt="Campo de introducción de contraseña con una casilla de verificación “Mostrar contraseña”." src="https://cdn-images-1.medium.com/max/1024/0*Prg4YIelNCKUS5p9" /></figure><p><em>✅ Tanto Google como Microsoft utilizan una casilla de verificación para controlar el desbloqueo de contraseñas, lo cual está bien, ya que las casillas de verificación se pueden manejar con el teclado de forma predeterminada.</em></p><h3>Qué no hacer: Utilizar un ancla o un div clicable como control de activación</h3><p>Cada vez que audito un sitio web y llego a su formulario de inicio de sesión, compruebo inmediatamente el HTML del botón para desvelar la contraseña y, en 9 de cada 10 casos, utiliza un enlace de ancla o un div. Es horrible.</p><figure><img alt="Formulario de contraseña con un botón de desvelar enfocado que muestra una herramienta de inspección de elementos abierta que indica que el botón está codificado con un div en el que se puede hacer clic." src="https://cdn-images-1.medium.com/max/1024/0*Ofcy00UfUHFQmMn1" /></figure><p><em>❌ Ejemplo de un formulario de inicio de sesión que utiliza un div clicable como control desencadenante para su función de desvelar contraseña.</em></p><p>El uso de un elemento que no sea un botón plantea muchos problemas:</p><ol><li>Es probable que el control no se pueda manejar con el teclado, lo cual es el mínimo exigido para cumplir con los requisitos de accesibilidad.</li><li>Para que &lt;a&gt; sea enfocable, es necesario asignarle una URL que genere esta estructura confusa “a href=”#”.</li><li>Otro efecto secundario negativo de utilizar &lt;a&gt; para un botón es que, aunque se programe toda la funcionalidad desde cero, el control seguirá apareciendo como un enlace si el usuario tiene activado el <a href="https://www.youtube.com/watch?v=7fsu8Wulqc4">modo de alto contraste de Windows</a>.</li></ol><p>En su lugar, utilizar el elemento botón, que tiene características de accesibilidad integradas, como la activación con la barra espaciadora/Intro, la capacidad de enfoque y se muestra como un botón en el modo de alto contraste de Windows (asegúrate de utilizar border: transparent en lugar de border:none).</p><p>Si no puedes utilizar el elemento button, como último recurso, replícalo utilizando la guía de <a href="https://www.w3.org/WAI/ARIA/apg/patterns/button/">prácticas de autoría ARIA</a>. Pero recuerda, hazlo solo si no tienes otra opción, porque es como tener que usar un periódico como papel higiénico.</p><h3>Qué no hacer: Alternar los atributos aria-label y aria-pressed</h3><p>Si no se utiliza una casilla de verificación, la mayoría de los desarrolladores utilizan un botón de alternancia con una aria-label como nombre accesible. Esto está bien, pero alternar los valores de ambos atributos es una mala práctica.</p><p>Personalmente, siempre me siento incómodo cuando me encargan cambiar los valores de la aria-label ya que considero que los nombres son algo semipermanente y a los lectores de pantalla no les gustan nada los <a href="https://adrianroselli.com/2020/12/be-careful-with-dynamic-accessible-names.html">nombres accesibles dinámicos</a>.</p><p>Por el contrario, los atributos de estado como aria-pressed están pensados para ser dinámicos, por lo que cambiar sus valores no solo es lo esperado, sino que los lectores de pantalla lo admiten perfectamente.</p><p>Cambiar ambos solo provoca caos. Algunos lectores de pantalla no anunciarán el nuevo nombre, o anunciarán el nuevo nombre con el estado antiguo y viceversa.</p><h3>Qué hacer: Elegir un nombre significativo y accesible</h3><p>La mayoría de los botones de contraseña suelen ser simplemente un botón con un icono. Por lo tanto, es fundamental elegir el nombre accesible adecuado para que los lectores de pantalla puedan anunciar al usuario qué función tiene el control.</p><p>No te equivocarás si nombras tus botones “Mostrar contraseña” o “Alternar visibilidad de la contraseña”, siempre y cuando los combines con un marcador de estado como aria-pressed.</p><figure><img alt="Un globo de VoiceOver que dice “Alternar visibilidad de la contraseña, botón”." src="https://cdn-images-1.medium.com/max/1024/0*-KyDMWHpeBh1tDJv" /></figure><p>✅ <em>La página para crear una cuenta de HP tiene un excelente ejemplo de un botón gráfico de contraseña con un nombre accesible adecuado. Un usuario ciego que utilice un lector de pantalla puede comprender inmediatamente para qué sirve el botón.</em></p><figure><img alt="Un globo de VoiceOver que solo dice “botón” cuando se enfoca en un botón de desvelar la contraseña." src="https://cdn-images-1.medium.com/max/1024/0*FD7DGo2-It2zZesl" /></figure><p>❌ <em>Cuando un botón no tiene un nombre accesible, los lectores de pantalla suelen anunciar solo “button”, lo que resulta inútil para un usuario ciego.</em></p><h3>Qué no hacer: Reducir el área objetivo a menos de 44 x 44 píxeles</h3><p>Quizás estés pensando “Pero Stefany, el<a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html"> criterio de éxito 2.5.8 AA de las WCAG</a> exige que el área objetivo o el espaciado sea de al menos 24 x 24 píxeles”. ¡Es cierto! Pero cuando se trata del tamaño de los objetivos o controles, tiendo a diseñarlos tan grandes como sea posible, hasta 44 píxeles, por las siguientes razones:</p><ol><li>Incluso el criterio de éxito mencionado anteriormente sugiere que las áreas objetivo tengan un tamaño mínimo de 44 x 44 píxeles para “enlaces y controles importantes”.</li><li>En realidad, las WCAG recomiendan ceñirse a un tamaño mínimo de 44 x 44 píxeles, pero dado que el <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-enhanced">criterio de éxito para la recomendación es triple A</a>, muchos profesionales de la accesibilidad lo ignoran por completo, lo cual es un error.</li><li>Las WCAG subrayan que debemos intentar implementar los criterios de éxito triple A en la medida de lo posible, y hacer los controles un poco más grandes es fácil.</li><li>Uno de los líderes en accesibilidad, <a href="https://developer.apple.com/design/human-interface-guidelines/buttons">Apple, también recomienda un tamaño mínimo de 44 x 44 píxeles*</a>.</li><li>Los controles de mayor tamaño sirven principalmente para ayudar a las personas con temblores a activarlos, independientemente de si utilizan los dedos o el ratón. Pero, además, ayudan a las personas cuando se producen sacudidas mientras utilizan el teléfono, como en un viaje en autobús con baches, un terremoto o un concierto.</li></ol><p>Si hay suficiente interés, estaría encantada de escribir un artículo en profundidad sobre por qué prefiero los botones más grandes y las ventajas que tienen.</p><figure><img alt="Un campo de contraseña con un botón para desvelar que mide 85,96 x 45 píxeles." src="https://cdn-images-1.medium.com/max/884/0*IQuyaK8nssumetkL" /></figure><p>✅ <em>El control para mostrar la contraseña de la Asociación Americana de Esclerosis Múltiple tiene un tamaño de 85,96 x 45 píxeles, lo que facilita su activación. Un síntoma común de la esclerosis múltiple son los temblores en las manos.</em></p><h3>Qué no hacer: Utilizar un icono de bajo contraste</h3><p>Si utilizas un botón gráfico, debes tener cuidado de que el icono no se pierda en el diseño del sitio web. Una práctica habitual es que esos iconos sean grises, lo cual está bien, pero la mayoría de los sitios web tienen un fondo blanco, lo que hace que la mayoría de esos controles incumplan las directrices de contraste de color.</p><figure><img alt="Un campo de contraseña con un botón para desvelar que mide 85,96 x 45 píxeles." src="https://cdn-images-1.medium.com/max/1024/0*ljWeaazvEIPH1Sao" /></figure><p>❌ <em>El botón gráfico de Ryan Air no cumple con los requisitos de contraste de color, ya que solo tiene un contraste de 1,69:1 con el fondo blanco. Las WCAG exigen una relación de 3:1 para los controles de formulario.</em></p><p>Esto no significa que nunca se deba utilizar el color gris sobre un fondo claro, sino que se debe aplicar un tono más oscuro para que el contraste de color sea de 3:1.</p><h3>Conclusión</h3><p>Ninguna interfaz de usuario será accesible para todos, sin importar cuánto tiempo y esfuerzo se invierta, simplemente porque los seres humanos somos únicos. Si nos ceñimos al menos a unas sencillas normas de accesibilidad, podemos garantizar que una gran parte de los usuarios disfrutarán de una experiencia buena y accesible.</p><p>Veo muchos artículos y componentes que pretenden enseñar a la gente cómo programar el botón o enlace “perfecto”, lo cual es imposible. Pero pensemos en los componentes “mostrar contraseña” como el papel higiénico; es preferible un papel higiénico de una sola capa a ninguno, pero una persona preferiría sin duda uno de dos capas.</p><p>*Técnicamente, las Directrices de interfaz humana de Apple recomiendan 44 x 44 <strong>puntos, no píxeles</strong>, para adaptarse a sus pantallas retina. Sin embargo, el mínimo de su definición de 1 punto es 1 píxel.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=07b763bdcfd0" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dos and don’ts of accessible show password buttons]]></title>
            <link>https://medium.com/@web-accessibility-education/dos-and-donts-of-accessible-show-password-buttons-9a5fbc2c566b?source=rss-f3cc8931cb6b------2</link>
            <guid isPermaLink="false">https://medium.com/p/9a5fbc2c566b</guid>
            <category><![CDATA[screen-reader]]></category>
            <category><![CDATA[accessibility-testing]]></category>
            <category><![CDATA[accessibility]]></category>
            <category><![CDATA[accessible-web]]></category>
            <category><![CDATA[inclusion]]></category>
            <dc:creator><![CDATA[Stefany Newman]]></dc:creator>
            <pubDate>Fri, 06 Dec 2024 15:31:39 GMT</pubDate>
            <atom:updated>2024-12-06T15:38:58.341Z</atom:updated>
            <content:encoded><![CDATA[<p>Summary: Unmask password buttons must be large, keyboard operable, with semantic code, good contrast, and either utilize a checkbox component or an aria-pressed (toggle) functionality.</p><figure><img alt="An eye image, mimicking the usual icon for unmask password buttons." src="https://cdn-images-1.medium.com/max/1024/0*yQJTWqTfQH09nmlt" /></figure><h4>Do: Make it keyboard operable</h4><p>Making the button keyboard operable means 2 things:</p><ol><li>Users must be able to focus the button by tabbing to it…</li><li>…and pressing Spacebar or Enter should activate it, in this case, it should mask/unmask the password.</li></ol><p>Simple, right?</p><figure><img alt="Input password field with a “Show Password” checkbox" src="https://cdn-images-1.medium.com/max/1024/0*VfXY_3aVLJPmuNoX" /><figcaption><em>✅ Google and Microsoft both use a checkbox for their password unmask control, which is fine, since a checkbox is keyboard-operable by default.</em></figcaption></figure><h4>Don’t: Use an anchor or a clickable div as the trigger control</h4><p>Whenever I am auditing a website and reach their sign-in form, I immediately check the HTML of the unmask password button, and 9 times out of 10, it’s using an anchor link or a div. Horrible.</p><figure><img alt="Password form with a focused unmask button showing an opened inspect elements tool that shows that the button is coded with a clickable div." src="https://cdn-images-1.medium.com/max/1024/0*UwDUrxusjWio4zyY" /><figcaption><em>❌ Example of a login form using a clickable div as a trigger control for their unmask password functionality.</em></figcaption></figure><p>There are many issues in using a non-button element:</p><ol><li>The control likely isn’t going to be keyboard operable, which is the bare minimum of accessibility conformance.</li><li>To make &lt;a&gt; focusable, you need to give it a URL which produces this grape soup “a href=”#”.</li><li>Another bad side effect of using &lt;a&gt; for a button is even if you code the entire functionality from scratch, the control will still show up as a link if the user has enabled <a href="https://www.youtube.com/watch?v=7fsu8Wulqc4">Windows High Contrast Mode</a>.</li></ol><p>Instead, use the button element, which has accessibility features baked in, such as activation on Spacebar / Enter, focusability and it shows up as a button in Windows High Contrast Mode (make sure you use border: transparent instead of border:none).</p><p>If you can’t use the button element, as a last resort, replicate it using the guide of <a href="https://www.w3.org/WAI/ARIA/apg/patterns/button/">ARIA Authoring Practices</a>. But remember, do that if you absolutely have no other choice, because it’s kind of like having to use a newspaper as toilet paper.</p><h4>Don’t: Toggle both aria-label and aria-pressed attributes</h4><p>If you are not using a checkbox, then most developers utilize a toggle button with an aria-label as its accessible name. Which is fine, but toggling the values of both attributes is a bad practice.</p><p>Personally, I am always queasy when I am tasked to switch the values of the aria-label since I regard names as something semi-permanent, and, screen readers really do not like <a href="https://adrianroselli.com/2020/12/be-careful-with-dynamic-accessible-names.html">dynamic accessible names</a>.</p><p>Whereas state attributes such as aria-pressed are meant to be dynamic, so toggling their values is not only expected, but very well supported by screen readers.</p><p>Changing both just spells chaos. Some screen readers will not announce the new name, or would announce the new name with the old state and vice versa.</p><h4>Do: Choose a meaningful accessible name</h4><p>Most password buttons are usually just a button with an icon. So choosing the right accessible name is vital so that screen readers can announce to the the user what the control is supposed to do.</p><p>You can’t go wrong with naming your buttons “Show Password” or “Toggle password visibility”, as long as you combine them with a state marker such as aria-pressed.</p><figure><img alt="A VoiceOver speech bubble that says “Toggle password visibility, button”." src="https://cdn-images-1.medium.com/max/1024/0*fBmCouyUMdwW0QuY" /><figcaption>✅ <em>HP’s create account page has a great example of a password graphic button with a good accessible name. A blind screen reader user can immediately understand what the button is supposed to do.</em></figcaption></figure><figure><img alt="A VoiceOver speech bubble that just says “button” when focused on a password unmask button." src="https://cdn-images-1.medium.com/max/1024/0*Y4cU-TYDNBgtRzUp" /><figcaption>❌ <em>When a button has no accessible name, screen readers usually only announce “button”, which is useless to a blind user.</em></figcaption></figure><h4>Don’t: Make the target area smaller than 44 x 44 pixels</h4><p>You might be thinking “But Stefany, the<a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html"> WCAG Success Criterion 2.5.8 AA</a> requires the target area or spacing to be at least 24 x 24 pixels”. True! But when it comes to target / control sizes, I tend to design them as big to 44 pixels as I can get away with, for the following reasons:</p><ol><li>Even the abovementioned Success Criterion suggests making the target areas at least 44 x 44 pixels for “important links and controls”.</li><li>It is actually recommended in the WCAG to stick to a minimum size of 44 x 44 pixels, but since the <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-enhanced">Success Criterion for the recommendation is triple A</a>, a lot of accessibility professionals completely ignore it, which is a mistake.</li><li>The WCAG makes it a point to underline that we should try to implement triple A Success Criteria as much as possible and making controls just a little bit bigger is easy.</li><li>One of the leaders in accessibility, <a href="https://developer.apple.com/design/human-interface-guidelines/buttons">Apple, also recommends 44 x 44 pixels of minimum target size*</a>.</li><li>Larger target size controls are mainly there to help people with tremors activate controls, no matter if they are using their fingers or a mouse. But in addition, it helps people whenever there is shaking happening while they are using their phones, such as a bumpy bus ride, an earthquake or if you are at a concert.</li></ol><p>If there is enough interest, I’d be happy to write an in-depth article on why I prefer the larger buttons and the benefits they have.</p><figure><img alt="a password field with an unmask button that is 85.96 x 45 pixels big." src="https://cdn-images-1.medium.com/max/884/0*ThkDjcmFHrBS-1J2" /><figcaption>✅ <em>The show password control of the MS Association of America is 85.96 x 45 pixels large, making it easy to be activated. A common symptom of MS is hand tremors.</em></figcaption></figure><h4>Don’t: Use a low contrast color icon</h4><p>If you are using a graphic button, then you need to be careful that the icon doesn’t drown into the website’s design. A common practice is for those icons to be grey, which is fine, but the majority of websites have a white background, which makes most of those controls fail color contrast guidelines.</p><figure><img alt="An unmask password button with poor color contrast (1.69:1)" src="https://cdn-images-1.medium.com/max/1024/0*im1ec6xat_PyFw_w" /><figcaption>❌ <em>Ryan Air’s graphic button fails color contrast by only having 1.69:1 contrast with the white background. The WCAG requires a 3:1 ratio for form controls.</em></figcaption></figure><p>That doesn’t mean you should never use the color grey on a light background — just apply a darker shade so that the color contrast is 3:1.</p><h3>Conclusion</h3><p>No user interface will be anniversary accessible, no matter how much time and effort is spent, simply because we as humans are unique. By at least adhering to simple accessibility rules, we can ensure a large portion of the users will have good and accessible experience.</p><p>I see a lot of articles and components claiming to tell people how to code the “perfect” button, or link, which is impossible. But think of “show password” components like toilet paper — a one-ply toilet paper is preferable to none, but a person would very much prefer a two-ply.</p><p>Thank you for wanting to make the world more accessible by reading this article!</p><p>*Technically, the Apple Human Interface Guidelines recommend 44 x 44 <strong>points, not pixels</strong>, in order to accommodate their retina displays. However, the minimum of their definition of 1 point is 1 pixel.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9a5fbc2c566b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to code accessible focusable headings with JavaScript]]></title>
            <link>https://medium.com/@web-accessibility-education/how-to-code-accessible-focusable-headings-with-javascript-9ad8e19f5e43?source=rss-f3cc8931cb6b------2</link>
            <guid isPermaLink="false">https://medium.com/p/9ad8e19f5e43</guid>
            <category><![CDATA[inclusion]]></category>
            <category><![CDATA[assistive-technology]]></category>
            <category><![CDATA[accessibility]]></category>
            <category><![CDATA[web-accessibility]]></category>
            <category><![CDATA[screen-reader]]></category>
            <dc:creator><![CDATA[Stefany Newman]]></dc:creator>
            <pubDate>Thu, 08 Aug 2024 17:31:34 GMT</pubDate>
            <atom:updated>2024-08-08T17:31:34.096Z</atom:updated>
            <content:encoded><![CDATA[<p>Summary: Using the semantic h HTML element, add tabindex=”-1” to the heading and use the focus() JavaScript method of the Element object.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NPV_XRAgTbpX9g_IFs85Lg.png" /></figure><h3>Code</h3><h4>HTML</h4><pre>&lt;section&gt;<br>    &lt;h1 class=&quot;heading&quot; tabindex=&quot;-1&quot;&gt;<br>        About Our Fencing Club<br>    &lt;/h1&gt;<br><br>    &lt;p&gt;<br>        We are a community organization that brings together individuals with a passion for the sport of fencing.<br>        Members of the club have the opportunity to participate in fencing classes, workshops, and sparring sessions<br>        under the guidance of experienced coaches.<br>    &lt;/p&gt;<br><br>    &lt;p&gt;<br>        The club provides a supportive and encouraging environment for fencers of all levels, from beginners to advanced<br>        athletes, to improve their skills, compete in tournaments, and enjoy the camaraderie of fellow fencers. <br>    &lt;/p&gt;<br>&lt;/section&gt;</pre><ul><li>Make sure the heading matches the title of the page, if possible. This way when focus lands on it, screen reader users can immediately figure out if they are at the right page.</li><li>We are adding tabindex=”-1” which makes it possible to place a focus programmatically on a non-interactive element (with the JavaScript .focus() method you will see below).</li><li>We are giving the heading a class name so we can fetch it and manipulate it with JavaScript.</li><li>Alternatively, you can also traverse the DOM and fetch the first h1 on the page, if your pages are built with semantic principles in mind (also known as competently built), but I avoid this method because if the page has an additional h1 heading, it might spell chaos.</li><li>Developers mistakenly think that section elements have a semantic meaning, but that is not true. If we give the section an accessible name, only then would it become a landmark. Since our page is simple, there is no need to pollute the screen reader landmarks list.</li></ul><figure><img alt="A static HTML page with the heading containing the browser focus. Heading reads “About Our Fencing Club”." src="https://cdn-images-1.medium.com/max/605/0*L__LU9RuI9bueimQ" /><figcaption><em>An example “about us” page for a Single Page Application of a fencing club. Notice the focused heading.</em></figcaption></figure><h4>JavaScript code</h4><h4>Simplest</h4><pre>const firstHeading = document.querySelector(&quot;.heading&quot;);<br><br>document.addEventListener(&quot;DOMContentLoaded&quot;, () =&gt; firstHeading.focus());</pre><ul><li>First we fetch the heading using its class name and add it in the constant firstHeading</li><li>Then we try to figure out when the DOM content has loaded. Note that we are not using the load event, which is much slower and unnecessary in this case. Once the DOM is loaded, we swiftly move focus to the heading with the .focus() method</li><li>Focus now moves to the first heading when page is loaded</li></ul><h4>Longer yet more robust code</h4><p>You can remove the tabindex attribute of the heading once focus leaves the element. Occasionally, leaving tabindex=”-1” on static elements that no longer require focus can have side effects. It has happened to me that Internet Explorer would still place focus on static elements containing the negative tabindex; we can add a line to remove the now redundant attribute.</p><pre>const firstHeading = document.querySelector(&quot;.heading&quot;);<br><br>document.addEventListener(&quot;DOMContentLoaded&quot;, () =&gt; firstHeading.focus());<br><br>// Removes tabindex=-1 from the heading due to potential bugs<br>firstHeading.addEventListener(<br>   &quot;blur&quot;, () =&gt; firstHeading.removeAttribute(&quot;tabindex&quot;)<br>);</pre><h3>Use Cases</h3><p>So you might be thinking — what would be the point of making headings focusable? Isn’t that against accessibility principles?</p><p>There are numerous examples when making headings focusable can be beneficial for the user:</p><h4>Single Page Applications</h4><p>Ever since smartphones became popular, website owners became obsessed with the ludicrous idea of making websites behave and look like mobile apps. Which meant disabling the ability of the browsers to refresh when the user navigates to a different page, so that the user experience feels “app-like”, as if the end user cares. But I digress.</p><p>Since browser refresh doesn’t occur in Single Page Applications (which, let’s face it, are most ReactJS websites), authors have to manage focus themselves. If focus management is left to the browser — which let’s face it, it often is, since web developers usually don’t bother learning accessibility — then different browsers would put the focus wherever they want, following loose guidelines such as the <em>sequential focus navigation starting point</em>. And you definitely don’t want that.</p><p>So a technique often used is to place the focus on the first, often h1, heading of the page.</p><h4>When an element is destroyed after “closing it”</h4><p>Occasionally, when an element is closed / destroyed, focus is lost. Sometimes the best place to move the focus is on another heading, if that is indeed the most logical place for the user.</p><p>For example, if you have a window with a close button that prompts the user to register for an account, and the user closes said window, then maybe the best place to place the focus would be the hero heading.</p><h4>Modal dialog windows</h4><p>The accessibility community is somewhat split on where to place focus when a modal window opens, since the website has to become inert when the modal is invoked. Some experts believe that the focus should go to the first heading, while some believe the window itself is a better focus target.</p><h4>Skip to Main Content</h4><p>While it is common practice to move the focus to the main element after “Skip to main content” links, sometimes it makes more sense to focus the h1 heading instead, for example, if you need to support older browsers, or when confronted with unexpected screen reader behavior (looking at you, TalkBack…).</p><h3>Conclusion</h3><p>Managing focus is crucial for accessibility and it is often quite difficult to do. Hopefully this article helped.</p><p>I know most of the tickets I have to write as an accessibility architect often include focus management.</p><p>Always make sure to test with different screen readers.</p><p>Photo by<a href="https://unsplash.com/@grianghraf?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash"> Grianghraf</a> on<a href="https://unsplash.com/photos/brown-wooden-human-figure-holding-black-cross-ZPqsCNUNkPU?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash"> Unsplash</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9ad8e19f5e43" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dos and don’ts of accessible cookie banners]]></title>
            <link>https://medium.com/@web-accessibility-education/dos-and-donts-of-accessible-cookie-banners-2c1a3102df2f?source=rss-f3cc8931cb6b------2</link>
            <guid isPermaLink="false">https://medium.com/p/2c1a3102df2f</guid>
            <category><![CDATA[web-accessibility]]></category>
            <category><![CDATA[accessibility-testing]]></category>
            <category><![CDATA[wcag]]></category>
            <category><![CDATA[screen-reader]]></category>
            <category><![CDATA[ux]]></category>
            <dc:creator><![CDATA[Stefany Newman]]></dc:creator>
            <pubDate>Mon, 06 Feb 2023 12:02:30 GMT</pubDate>
            <atom:updated>2023-02-06T13:11:11.852Z</atom:updated>
            <content:encoded><![CDATA[<p>Cookie banners are one of the most underutilized parts of user interface by the users and businesses. Similar to toilet paper, we want the cookie banners to be sturdy, accessible, and effective; with hopes to forget we ever we ever interacted with both during the day. And like toilet paper, when cookie banners are missing, we all panic.</p><figure><img alt="Tea cup with cookies on a desk" src="https://cdn-images-1.medium.com/max/1024/0*WTnNGUQGLAUGXNa3" /></figure><h3>Do: Make it keyboard accessible</h3><p>I have seen a lot of cookie banners that can’t be reached by tabbing the page. That’s really bad.</p><p>However, then comes the question in what focus order the cookie banner should exist on the page — which is a whole other long discussion. For now, just focus on the banner to be tabbable and its buttons and links such as, “Learn More”, “Privacy Policy”, etc.</p><h3>Do: Add a landmark with an accessible name</h3><p>Developers tend to think landmarks are only useful to screen reader users which is not true. <a href="https://chrome.google.com/webstore/detail/landmark-navigation-via-k/ddpokpbjopmeeiiolheejjpkonlkklgp?hl=en-US">A browser plugin can extract landmarks</a> and allow sighted users to skip section of the page easily. Especially if the website is cluttered with too many interactive elements, as most websites are.</p><p>I suggest you use the `region` landmark since it can be fitted anywhere inside the &lt;body&gt; tag and it was literally created to find what you are looking for.</p><p><a href="https://www.w3.org/WAI/ARIA/apg/practices/landmark-regions/#:~:text=Navigation%20Landmark%20Example-,Region,-A%20region%20landmark">WAI’s description of the `region`</a> landmark explains it better than I can:</p><blockquote>A <a href="https://w3c.github.io/aria/#region">region</a> landmark is a perceivable section of the page containing content that is sufficiently important for users to be able to navigate to the section.</blockquote><p>The accessible name could be as simple as “Cookie Banner” or “Accept or Reject Cookies” or similar. Resist the urge to name it: “A useless freaking banner”.</p><p>The end code should be something like this:</p><pre>&lt;!-- A cookie banner with a region landmark (2 ways)  --&gt; <br>&lt;!-- Good --&gt; <br>&lt;div role=&quot;region&quot; aria-label=&quot;Cookie Banner&quot;&gt;<br>  ...<br>&lt;/div&gt;<br>&lt;!-- section tags implicitly (automatically) have the role of &quot;region&quot; if you give them an accessible name —&gt;<br>with either `aria-label` or `aria-labelledby`. <br>&lt;!-- Better --&gt;<br>&lt;section aria-label=&quot;Cookie Banner&quot;&gt;<br>  ... <br>&lt;/section&gt;<br><br>&lt;!-- Best --&gt;<br>&lt;section aria-labelledby=&quot;cookie_heading&quot;&gt;<br>  &lt;h2 id=&quot;cookie_heading&quot;&gt;<br>    We use cookies on this site<br>  &lt;/h2&gt;<br>  ... <br>&lt;/section&gt;</pre><p>`section` tag has an implicit role of “region” if an accessible name is defined.</p><p>Whatever you do, do not add role=”banner” to your cookie banner! The ARIA role=”banner” and “a banner” are two completely different things! And yes, there is a very popular website right now whose cookie `div` has a role of “banner” for whatever reason.</p><figure><img alt="Screenshot of a browser plugin showing different landmarks on a page, such as banner, main, navigation, second navigation, complementary, contentinfo." src="https://cdn-images-1.medium.com/max/137/1*qPaaHjrNXtN9TsPJDWFK-Q.png" /><figcaption>Example of a browser plugin that shows a list of landmarks which allows non screen reader users to skip to important sections quickly.</figcaption></figure><h3>Do: Use plain language</h3><p>Plain language is very important and is often ignored; especially when it comes to compliance. It is vital for people with learning, cognitive, or neurological developmental disabilities. Not to mention people that pick-up English as their second or third language (like myself). Or folks who just don’t want to look up words when they want to do something as simple as order toilet paper online after a long day at work, or in the middle of their toilet paper emergency.</p><p>Language on the banner must be as simple as what the legal department of your company would allow. If you can use synonyms for complex words, that would be best. Note that I only mean the text displayed in the banner, not the pages linked within. While it is also encouraged to use plain language in the <em>Privacy </em>and/or <em>Cookie Policy </em>pages, I understand it’s not always possible since you need to remain compliant.</p><figure><img alt="A cookie banner with an accept and decline buttons that reads “we use cookies. Accepting improves out side and provides you wiht personalized service. Declining results in one cookie being placed on your device so we remember your choice. To learn more about the cookie we use, please our privacy policy”." src="https://cdn-images-1.medium.com/max/389/0*yA06x-r72maNwZXf" /><figcaption><em>✔️ This cookie banner does a great job of explaining cookies using plain language</em></figcaption></figure><h3>Do: Try to keep the interface as simple as possible</h3><p>Remember that simplicity is the biggest ally of accessibility and overall, just good user experience (UX). The cookie banner is just a container for links and buttons. I have seen banners with dropdown buttons, tables, and other UI elements that don’t belong there.</p><p>Remember that most people will just dismiss the banner as quickly as possible, and nearly no one is going to read paragraph upon paragraph. Unless, they’re specifically looking for details about their user data, and that’s why we include <em>Cookie </em>/ <em>Privacy Policy</em> links in the cookie banner.</p><figure><img alt="Screenshot of a cookie banner that reads — “We use cookies on this site to enahnce your user experience. By clicking on any link in this page, you are giving your consent for us to place cookies”. A button reads “Give me more info”." src="https://cdn-images-1.medium.com/max/615/0*m2tyW1wpu2FzHo3Q" /><figcaption><em>✔️ Example of a simple cookie banner that gives the user the necessary information and only has 2 buttons. A great example of using plain language with a simple interface</em></figcaption></figure><figure><img alt="Complicated website popup for cookie usage, with tabs, dropdowns and a lot of technical jargon." src="https://cdn-images-1.medium.com/max/1024/0*Fe5wWnIfiraKCUm2" /><figcaption><em>❌ A cookie banner that is too complicated is bad for user experience and accessibility. Screenshot of a cookie banner above with a drop-down and a tab interface that makes it cluttered and confusing to the user.</em></figcaption></figure><h3>Don’t: Make the cookie banner sticky on browser zoom</h3><p>This is a sin of a lot of websites, since the banners are usually sticky (they follow you around as you scroll the page), when you zoom in the browser, they become giant and obstruct the view of the user.</p><p>However, you also need to make sure that the cookie banner scales up as the user zooms into the page, otherwise you will fail two WCAG Success Criteria, <a href="https://www.w3.org/WAI/WCAG21/Understanding/resize-text.html">1.4.4: Resize Text (Level AA)</a> and <a href="https://www.w3.org/WAI/WCAG21/Understanding/reflow.html">1.4.10:Reflow (Level AA)</a></p><figure><img alt="200% Zoomed in page link with Website Cookie popup taking over screen" src="https://cdn-images-1.medium.com/max/1024/0*893WsNdWaDYh4foA" /><figcaption><em>❌ A website’s cookie banner when zoomed 200%, obstructs the view of the user and makes the website incredibly difficult to use.</em></figcaption></figure><figure><img alt="400% Zoomed in page link with Website Cookie popup taking over screen" src="https://cdn-images-1.medium.com/max/1024/0*rbwX_oL3XJ6MoBxj" /><figcaption><em>❌ Same website zoomed to 400% and not only the view was almost entirely blocked by the sticky banner, but the content of the cookie container was cut off which is a </em><a href="https://www.w3.org/WAI/WCAG21/Understanding/reflow.html">failure of SC 1.4.10: Reflow (Level AA)</a></figcaption></figure><h3>Don’t: Use a third party cookie banner without performing manual accessibility testing</h3><p>When I searched “Create a cookie banner”, all Google first page results were links to third party plugins, promising a “5 minute setup” and some other nonsense. But not a single plugin promised accessibility, at least from their landing pages.</p><p>The issue is that even if you find a plugin that promises to be accessible, or “WCAG compliant”, you need to perform your own accessibility audit. Companies lie about accessibility all the time. Ask for a demo of the code before purchasing and do a thorough testing.</p><p>I think when it comes to cookie banners, the best way is to code them yourself, or the development team of your company. I have never found an accessible cookie banner out of the box. Even if one exists, if your dev team doesn’t know anything about accessibility, they can mess up the setup so much that it becomes inaccessible once it goes live on your website.</p><h3>Don’t: Make the cookie banner pop up, or a modal</h3><p>Modals are windows that block user access outside their container. If used properly, modals can improve the user experience, but unless you have a good reason, do not make your cookie banner a modal window or a “pop up”.</p><p>Pop-ups, similar to those annoying newsletter subscriptions requests, are horrible for user experience. Imagine dismissing one and then suddenly another pops up!</p><p>Also if you are tempted to make the banner a modal, don’t do it. Remember, when a cookie banner is in the page, it must be keyboard accessible and to be one of the first things a user focuses on the page, unless there is a convenient link to it. So if it is a modal, when once the user tabs to it, they will be stuck and probably quite angry. Don’t do that to your users.</p><h3>Don’t: Put the cookie banner as the last focusable item on your website</h3><p>Especially if the cookie banner is sticky (follows you around), and a sighted keyboard user wants to dismiss it, they’d have to Tab through all of the buttons and links on the web page to find it and close it.</p><p>If you have no choice in the matter, assign the parent element a landmark (<em>region</em> is the best one) and/or add a skip link that shows up on focus right next to the Skip to Content link. I like this method because it doesn’t show the link unless you press Tab on page load, which means designers won’t be mad at you for “messing up” their Figma. <br>Code below:</p><pre>&lt;div class=”skips”&gt; <br> &lt;a href=”#”&gt;Skip to main content&lt;/a&gt;<br> &lt;a href=”#”&gt;Skip to cookie banner&lt;/a&gt;<br>&lt;/div&gt;</pre><p>— — — — — — — — — — — — — — — — — — — — — — — — —</p><p><a href="https://codepen.io/Stefany93/pen/mdjLbKY">Code</a></p><p>Photo by<a href="https://unsplash.com/@adeolueletu?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"> Adeolu Eletu</a> on<a href="https://unsplash.com/photos/uF860tgJ-jw?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"> Unsplash</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2c1a3102df2f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why you should make closed captioning accessible to screen reader users]]></title>
            <link>https://medium.com/@web-accessibility-education/why-you-should-make-closed-captioning-accessible-to-screen-reader-users-1bf909525a40?source=rss-f3cc8931cb6b------2</link>
            <guid isPermaLink="false">https://medium.com/p/1bf909525a40</guid>
            <category><![CDATA[screen-reader]]></category>
            <category><![CDATA[blindness]]></category>
            <category><![CDATA[web-accessibility]]></category>
            <category><![CDATA[accessibility]]></category>
            <category><![CDATA[closed-captioning]]></category>
            <dc:creator><![CDATA[Stefany Newman]]></dc:creator>
            <pubDate>Mon, 16 Jan 2023 12:46:48 GMT</pubDate>
            <atom:updated>2023-01-16T20:19:24.170Z</atom:updated>
            <content:encoded><![CDATA[<p>Summary: Besides blindness being a spectrum and the fact that many non-blind people use screen readers, a blind user might want to play a video for sighted family or friends, which they can’t do if the interface for closed captioning isn’t accessible for them — either via screen readers or any other accessibility-forward technology, such as voice recognition.</p><figure><img alt="A scrabble board that spells out “Caption”" src="https://cdn-images-1.medium.com/max/1024/1*Q-2wg5eFv8XterWE8-Dh1g.jpeg" /></figure><p>Does this situation seem familiar to you?</p><p>You are an accessibility expert sitting in a feature planning meeting, discussing how a closed captioning component must be made accessible to blind people when some ignorant coworker who outranks you, blurts out:</p><p>“There is no need to make the caption menu accessible to blind users because blind people can’t see the captions.”</p><p>When you try to politely explain why they are wrong, you get interrupted right away and dismissed. Or worse, they tell you they will discuss this “offline” which is the corporate version of ghosting.</p><p>So the next time this happens, share this article.</p><h3>A lot of sighted people use screen readers</h3><p>In fact, when <a href="https://webaim.org/projects/screenreadersurvey9/">WebAIM conducted a survey asking screen reader users what their disability was</a>, 79.5% reported blindness. Bearing in mind that participants were able to choose more than one disability, that still leaves potentially 20.5% of users using screen readers without being blind.</p><p>And there are many reasons a sighted person might use a screen reader:</p><ol><li>To avoid migraine attacks triggered by digital screens</li><li>Due to cognitive disabilities, such as folks with ADHD</li><li>Low vision users</li><li>Sensory overload, sometimes experienced by people with autism</li><li>Personal preference</li></ol><p>Any one of those conditions could be combined with deafness, which would make captions and the ability to enable them with a screen reader crucial.</p><h3>Blind people have families and friends with various disabilities</h3><p>A blind parent might have a deaf child, and they will need to be able to enable closed captions on <em>Paw Patrol</em>. Another blind person who is hosting a <em>Twilight </em>marathon with their friends, one of whom is hard-of-hearing and another whose English is their second language, might need captions, so the host needs the ability to enable them on the TV.</p><p>You might be thinking, “Wouldn’t it be easier for their sighted friends to enable the captions instead?” No.</p><p>First of all, we all like being independent, and we don’t like bothering people. Second of all, have you ever tried to operate a TV that isn’t your own? It’s like a maze, with all the buttons and remotes. And third of all, what if you don’t speak the language the TV settings are on? The list goes on.</p><h3>If we want screen readers to properly read the content, all parts of it must be accessible</h3><p>If you have a video player that is coded accessibly with semantic HTML and ARIA, but the closed captions button is just a nameless `div`, it might at the very least confuse screen readers; at worst, it might be completely inaccessible using assistive technology. Just imagine a keyboard trap — or just a “clickable” screen reader announcement — can confuse the user and prevent them from operating the player at all.</p><p>Imagine buying a sweater only to find out that the neck is too small. Sure, it looked great in the store, but when you wanted to use it, it had a defect that made it unusable. Technically it is still a sweater, and people will wear it if they don’t have any other clothes, but it is a horrible product. Is that what you want your customers to think about your company?</p><h3>Lawsuits, lawsuits, lawsuits</h3><p>Every time you create an inaccessible product, you leave the door open to lawsuits. It’s like putting a bumper sticker on your car that says “I love speeding.” And a customer who is unable to play a movie, podcast, or even a commercial will be rightfully upset and can sue your company.</p><h3>Conclusion</h3><p>It is dangerous and inappropriate to make assumptions about your users without conducting user testing, or at least doing your own research. If there is no money for user testing, there are many nonprofit organizations that work with disabled people you could reach out to get more information, donate, or volunteer. The opportunities are endless.</p><p>This article was reviewed by <a href="https://www.linkedin.com/in/ariel-ferro?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAAMNxcQBiGHkHK1WfC71x_5TGyEBixacNls&amp;lipi=urn%3Ali%3Apage%3Ad_flagship3_search_srp_all%3BjG9jbYDMSmmyLzbtWekT2g%3D%3D">Ariel Ferro</a>, a programmer who happens to be blind.</p><p>Photo by<a href="https://unsplash.com/@monicadear?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"> Monica Flores</a> on<a href="https://unsplash.com/photos/p4mFOzM-asQ?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"> Unsplash</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1bf909525a40" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why you should start using the inert attribute when coding your next modal window]]></title>
            <link>https://medium.com/@web-accessibility-education/why-you-should-start-using-the-inert-attribute-when-coding-your-next-modal-window-ed9400b1e12a?source=rss-f3cc8931cb6b------2</link>
            <guid isPermaLink="false">https://medium.com/p/ed9400b1e12a</guid>
            <category><![CDATA[accessible-design]]></category>
            <category><![CDATA[accessibility]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[wcag]]></category>
            <category><![CDATA[screen-reader]]></category>
            <dc:creator><![CDATA[Stefany Newman]]></dc:creator>
            <pubDate>Sat, 07 Jan 2023 14:23:25 GMT</pubDate>
            <atom:updated>2023-01-07T14:55:08.384Z</atom:updated>
            <content:encoded><![CDATA[<p>Summary: The HTML attribute <em>inert</em> makes controlling the keyboard and assistive technology focus incredibly easy. Moreover, despite the fact that it was created more than 10 years ago, it has finally received broader browser support. It minimizes development time as well as bugs, and it increases the accessibility of modals that are notoriously difficult to work well with screen readers.</p><figure><img alt="Frozen fish." src="https://cdn-images-1.medium.com/max/1024/1*6d_f5f3VDk8r1d-J1SSXvw.jpeg" /></figure><p><strong>Warning:</strong> There is an auto-playing GIF without flashes further down the article.</p><h3>Functionality of inert</h3><figure><img alt="Screenshot of a modal dialog window, with a dimmed background and a delivery address form as its content. 3 buttons, “Verify Address”, “Add”, and “Cancel”." src="https://cdn-images-1.medium.com/max/1024/0*DFXUKPYb6nitKvY0" /></figure><p>The day we have all been waiting for is finally here. The difficulty of coding accessible modal windows went from “super super difficult” to “super difficult” — all thanks to the `inert` attribute.</p><p>The way it works is by disabling the keyboard and screen reader focus of an element and its children. Now, you might be thinking, “Duh Stefany, isn’t that what `aria-hidden`, and `tabindex=-1` and `display: none` is for?” Yes, but note how you described three different methods for hiding content using three different technologies? This is where the difficulty of managing focus comes from.</p><p>Each modal dialog must trigger the following:</p><ol><li>All functionality behind the dialog must be disabled — such as buttons, links, and even static elements, such as plain text. Those must be disabled for as many assistive technologies as possible, such as screen readers, keyboards, voice recognition, everything.</li><li>Background is visible, but dimmed.</li><li>Focus is contained only within the dialog. Pressing the Tab key multiple times should make the focus move around inside the dialog, until it reaches the last interactive element and then starts again in a circle, much like a roundabout.</li></ol><figure><img alt="Roundabout with three cars around it." src="https://cdn-images-1.medium.com/max/1024/0*yXQqGdPqqonmx0bq" /></figure><p><em>The focus in a modal dialog must be trapped, as if you are driving in a roundabout: you can only go outside of the dialog if you exit it, and you must drive around the roundabout until you need to exit. The inert attribute makes this very easy.</em></p><h3>The code</h3><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodepen.io%2FStefany93%2Fembed%2Fpreview%2FLYrmxed%3Fdefault-tabs%3Djs%252Cresult%26height%3D600%26host%3Dhttps%253A%252F%252Fcodepen.io%26slug-hash%3DLYrmxed&amp;display_name=CodePen&amp;url=https%3A%2F%2Fcodepen.io%2FStefany93%2Fpen%2FLYrmxed&amp;image=https%3A%2F%2Fshots.codepen.io%2FStefany93%2Fpen%2FLYrmxed-512.jpg%3Fversion%3D1673099435&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codepen" width="800" height="600" frameborder="0" scrolling="no"><a href="https://medium.com/media/78adf01856cee625cdc49ede645c1709/href">https://medium.com/media/78adf01856cee625cdc49ede645c1709/href</a></iframe><p>When the user activates <em>#dialogTrigger</em>, and the dialog appears, we want to disable the background of the website and dim it while trapping the focus inside the dialog.</p><p>You might be thinking, “Stefany, it’s so easy, just add `display: none;` on the &lt;main&gt;”. There are two issues that prevent us from just slapping <em>display: none;</em> everywhere: animation and visibility.</p><p>Hiding elements with CSS <em>display: none;</em> will hide it from everyone — sighted users included. Hiding it from everyone makes for a bad user experience. Remember that we want to dim the website but keep it visible — we can’t do that with <em>display: none</em>.</p><p>This is where `inert` comes in. Just adding `inert` to the <em>&lt;main&gt;</em> tag will hide all its children for everyone but sighted users, which is what we need. Since it is a Boolean attribute, meaning it just returns “true” or “false,” we can throw it around like a football between the &lt;main&gt; tag and #modalDialog, depending on which element is supposed to be inactive.</p><figure><img alt="GIF showing how the inert attribute is applied dynamically on the modal window and website content container (main &amp; #modalDialog), depending on which one of them is active. The DOM is manipulated with JavaScript." src="https://cdn-images-1.medium.com/max/550/0*SbYmpX1l3YJSt-uN" /></figure><p><em>GIF showing how the inert attribute is applied dynamically on the modal window and website content container (main &amp; #modalDialog), depending on which one of them is active. The DOM is manipulated with JavaScript.</em></p><h3>Browser support is awesome, except for Firefox</h3><p>At this time of writing (January 2, 2022), <a href="https://caniuse.com/?search=inert">`inert` is supported by all major browsers on desktop and mobile, except Firefox</a>, but we can add a <a href="https://github.com/WICG/inert">polyfill</a> to remedy this situation. Before you take a breath to argue that polyfills slow down websites, make sure you measure exactly how slow it makes your application and then figure out whether there are other areas you can improve the performance. The most important thing I want to underline is that this attribute prevents so many developer mistakes and makes coding faster. Every time I start a new job as an accessibility engineer at a company, the number of bugs I encounter concerning focus in modal dialogs are usually in the hundreds, since it is very difficult to make them accessible.</p><h3>Conclusion</h3><p>You can use `inert` for other components too, such as hamburger menus, off-canvas navigation, or just a modal dropdown dialog. Anytime you need a piece of interface to be visible but inactive, just add inert to the parent element. It’s so simple, it’s kind of like the Better Than Bouillon of the Internet. I think the biggest asset of inert is its ability to be animateable — nowadays, everyone expects your interfaces to feel natural with transitions and whatnot, and the reason <em>display: none;</em> is rarely used is because you can’t animate it. Remember to always check whether the user has enabled animations on their operating system before animating, of course.</p><p>Inert makes writing JavaScript or React so simple and straightforward since we are using a browser’s built-in method. The less code you have to write, the lower the chances of introducing bugs.</p><h3>Resources</h3><ul><li><a href="https://codepen.io/Stefany93/pen/LYrmxed">Code on Codepen</a></li><li><a href="https://www.youtube.com/watch?v=-gBv12xu4Yo">Inert | The CSS Podcast</a></li><li><a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/inert">MDN — inert</a></li><li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/">ARIA Authoring Practices Guide (APG) — Modal</a></li></ul><p>Photos by<a href="https://unsplash.com/es/@lucasmiguel?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"> Lucas Miguel</a>, and <a href="https://unsplash.com/@enginakyurt?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">engin akyurt</a> on<a href="https://unsplash.com/"> Unsplash</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ed9400b1e12a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Taking the IAAP-Kryterion WAS test at a testing center — my experience]]></title>
            <link>https://medium.com/@web-accessibility-education/taking-the-iaap-kryterion-was-test-at-a-testing-center-my-experience-69b712e635be?source=rss-f3cc8931cb6b------2</link>
            <guid isPermaLink="false">https://medium.com/p/69b712e635be</guid>
            <category><![CDATA[web-accessibility]]></category>
            <category><![CDATA[certification]]></category>
            <category><![CDATA[accessibility]]></category>
            <category><![CDATA[certified-professionals]]></category>
            <dc:creator><![CDATA[Stefany Newman]]></dc:creator>
            <pubDate>Fri, 09 Dec 2022 19:47:22 GMT</pubDate>
            <atom:updated>2022-12-09T19:47:22.723Z</atom:updated>
            <content:encoded><![CDATA[<h3>Taking the IAAP-Kryterion WAS test at a testing center — my experience</h3><p>Summary: The experience was mostly positive, the only issues being that the staff wasn’t properly trained to handle accessibility tests and there was a lack of directions.</p><figure><img alt="Red-brown building — Tulsa Tech" src="https://cdn-images-1.medium.com/max/821/0*tlpF15oVWwSYlzYu" /><figcaption>Tulsa Tech</figcaption></figure><p>As I finished my first accessibility test and rewarded myself with a bucket of graham crackers and an episode of <em>Gossip Girl</em>, I suddenly got an idea: what if I take the Web Accessibility Specialist (WAS) exam in the same testing window as the Certified Professional in Accessibility Core Competencies (CPACC)? Since I had just spent the past 2 months studying — and because a lot of the questions in the CPACC exam are likely in the WAS certification as well — I figured I would have higher chances of passing. And since I wouldn’t know for months whether I passed the CPACC, taking the WAS could act as a fallback or as insurance in case I failed the CPACC. Or, I could fail them both at the same time; that would be embarrassing for sure.</p><p>I scheduled my WAS exam for August 10, 2022, at the Tulsa Technology Center. I chose to take it at a testing center instead of taking the home proctored exam since the <a href="https://medium.com/@web-accessibility-education/what-it-is-like-taking-an-accessibility-iaap-kryterion-home-proctored-exam-6d44afb453ca">Kryterion requirements for a home exam have ridiculous rules</a>.</p><h3>Exam Day</h3><p>Because I am a morning person, I scheduled my exam for 8:30 a.m. The nearest testing center was in Tulsa, which was about 20 minutes from my home.</p><p>The Tulsa Technology Center is part of the university, which made me feel like a muggle in Hogwarts, since I don’t have a college degree, but I sure hang out at universities a lot. The exam email didn’t specify where exactly in the building the test was going to take place, so I had to find it, which was confusing since no one there had ever heard of the WAS exam.</p><p>“Hello, where is the Web Accessibility Specialist exam taking place?” I asked security.</p><p>“The what?”</p><p>I repeated the question.</p><p>“I don’t know,” they said.</p><p>“Where do people usually take exams here?”</p><p>“In the university? Everywhere,” they responded.</p><p>I rephrased, even more frustrated now, “OK, where do people who don’t go to university take their exams?”</p><p>“Oh, over there,” and they pointed to an office.</p><p>Relieved that I wasn’t completely lost, I went to the office and the same conversation ensued with the staff there.</p><p>“Hello, is this the place where the Web Accessibility Specialist exam is taking place?” I asked.</p><p>“The what?”</p><p>I was getting more and more frustrated, was scared that I was lost, and I feared I would miss the exam. On top of that, if you don’t show up to your exam or fail to cancel within 4 business days of the test date, the IAAP will keep all the money, which is so unfair — especially to disabled people and those with chronic illness. Moreover, I really didn’t want to lose the $430 I had paid for it. I would rather spend my money on more useful things, like <a href="https://en.wikipedia.org/wiki/Tamagotchi">Tamagotchis</a>.</p><p>So I repeated the question and started trembling.</p><p>“You might want to try the building next to us,” they replied.</p><p>Scared, I started to exit the office when I heard, “Wait!”</p><p>A woman suddenly opened a folder and asked,</p><p>“Is this a Kryterion exam?”</p><p>“Yes!” I said, full of hope.</p><p>“Oh, you should have said that. But we only conducted one Kryterion exam a few months ago for this dude. Sit down and wait.”</p><p>At least there was some progress. I also mentally thanked the “dude” who was here before me so they didn’t chase me out of the office.</p><p>I waited for about half an hour, and the staff had to make multiple calls and open many folders, but — finally — they figured it out.</p><p>“Okay Stefany, put all your stuff in the locker, including your watch. Show us 2 forms of ID and the confirmation email Kryterion sent you.”</p><p>As I obliged, I was escorted to the exam room. It was super tiny and contained a computer that looked like it was manufactured when I was born, and it also featured cameras on the ceiling. It kind of reminded me of an interrogation room.</p><p>“Tap the glass if you need help or need to go to the bathroom. You will be recorded, so don’t move around,” they said.</p><h3>Taking the exam</h3><p>The exam is usually 2 hours, but I was given 3, since English isn’t my first language; I thought this was great.</p><p>The first thing I noticed was that the monitor’s contrast was super high. I was barely able to distinguish input boxes, as the screen was super bright. The computer was very loud — it likely hadn’t been dusted since the 90s — and the peripherals were in the same bad condition.</p><p>Sometimes I had to lean in really close to the monitor because of the brightness issues, and I was afraid of telling the staff because I didn’t want them to tell me to go away or for them to think I was trying to cheat. I also thought that maybe the super bright monitor was there on purpose to make the exam more difficult.</p><p>Another obstacle was that since the WAS is targeted at developers, there were a lot of code questions, but the code wasn’t formatted, so I had to think really hard about the structure and, again, lean in close.</p><p>And of course the questions were vague: it was difficult to understand what the question was asking you to figure out, but I assume that’s on purpose.</p><p>The questions that gave me the most trouble were those asking you to choose the “best way” to code an accessible widget, which is subjective, given that accessibility is not a red and blue science: it’s relative.</p><p>The second toughest thing was asking the “A” levels of various WCAG Success Criteria.</p><p>I finished the exam and went home, and in about a month, I got the results showing that I had passed.</p><p>Overall, my experience was much better than the home proctored exam. There was less noise, and there was almost no chance of a power or Internet outage because it was taking place at a university campus. Likewise, there was no chance of various ghosts interfering.</p><h3>Tips for taking the exam at a testing center in the United States</h3><ol><li>Visit the place the day before and <strong>find the office within the building where the exam is taking place</strong> to make sure that when you arrive, you won’t be lost like me.</li><li>Request earplugs if you are sensitive to noise.</li><li>Schedule the exam at the time of day you feel the most energized and razor sharp. I am a morning person, so I scheduled it early in the morning.</li><li>Take as few electronics as possible with you, since you will be asked to surrender them.</li><li><strong>Bring 2 forms of identification and the confirmation email with the code</strong>. One of them must be a photo ID, such as a passport or a driver’s license. I only brought my state ID, but thankfully they accepted my debit card as a second form of identification; otherwise, if I had to go home, I would have lost 100% of my exam fees. You can email Kryterion to ask what other forms of ID are acceptable, but I assume a health insurance or passport card would have been accepted as well.</li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=69b712e635be" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What it is like taking an accessibility IAAP-Kryterion home proctored exam]]></title>
            <link>https://medium.com/@web-accessibility-education/what-it-is-like-taking-an-accessibility-iaap-kryterion-home-proctored-exam-6d44afb453ca?source=rss-f3cc8931cb6b------2</link>
            <guid isPermaLink="false">https://medium.com/p/6d44afb453ca</guid>
            <category><![CDATA[iaap]]></category>
            <category><![CDATA[cpacc]]></category>
            <category><![CDATA[a11ycertification]]></category>
            <category><![CDATA[accessibility]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[Stefany Newman]]></dc:creator>
            <pubDate>Mon, 10 Oct 2022 11:01:57 GMT</pubDate>
            <atom:updated>2022-10-11T13:33:38.802Z</atom:updated>
            <content:encoded><![CDATA[<p>Summary: Home proctored exams are awful. If you can, schedule your exam at a testing center to reduce most of the stress.</p><figure><img alt="Illustration of a woman, sitting on a couch with a laptop in her lap, and a sign behind her that says “online test”." src="https://cdn-images-1.medium.com/max/1024/1*fUwzEM7bvQJCr6FVTDyeEw.jpeg" /></figure><p>After 2 months of memorizing international and American accessibility laws, assistive technologies, and so on, the day came to take the <a href="https://www.accessibilityassociation.org/s/certified-professional">Certified Professional in Accessibility Core Competencies</a> (CPACC) exam, offered by the <a href="https://www.accessibilityassociation.org/s/">International Association of Accessibility Professionals</a> (IAAP) and proctored by <a href="https://www.kryteriononline.com/">Kryterion</a>. However, I didn’t expect the experience would be similar to getting a tooth pulled.</p><h3>The home proctored exam rules and my preparation</h3><p>A home proctored exam means that someone is watching you and recording you through your webcam constantly, but you can’t see them (so not much different than everyday life, but still frustrating). The night before my exam, I spent 2 hours removing and covering up all the monitors and TVs in my home office, as well as removing all the <em>Sailor Moon</em> figures from my desk. I was allowed only tissues, water and snacks.</p><figure><img alt="TV covered by a blanket" src="https://cdn-images-1.medium.com/max/1024/1*BOdRGqPZu2mjKgnQqcA6gA.jpeg" /><figcaption>You must cover all screens that will be in the room with you during the exam. This was my TV.</figcaption></figure><p>So to take the exam at home with the proctoring company the IAAP has hired, you must obey their absurd rules for making your office “good enough” for them:</p><ul><li>You must remove non-essential computer stuff from your desk and are allowed only water, tissues (for crying during the exam, which will absolutely happen) and snacks.</li><li>You must plug in an external microphone so that they can record sound too. I thought my webcam with a microphone would be enough, but after chatting with support, I plugged in my Yeti mic.</li><li>No pens, paper, pencils or anything you can write with.</li><li>You must cover all electronic devices in the room, especially if they have screens, like monitors or TVs.</li><li>Remove all items from the walls in the part of the room where the computer is, even if it is behind you.</li><li>You can’t take the exam on a Chromebook.</li><li>No wristwatches of any kind, Google glasses, Star Trek badges, or headphones are allowed.</li></ul><figure><img alt="Monitor with a webcam on a desk. Behind it, there is a lamp. On the desk there is a keyboard, mouse, speakers, water bottle, passport, box of tissues and a stress toy." src="https://cdn-images-1.medium.com/max/1024/1*8RlQa0wzRIQwdep5UhQC4A.jpeg" /><figcaption>This is how my desk looked like on the morning of the exam. I had to remove all items that weren’t allowed. I needed the lamp since they required a well lit area to watch you, and to take selfies when required.</figcaption></figure><p>There were even more rules, but I am trying to keep my word count low. Basically, Kriterion and the IAAP treat every person taking their exams as a cheater. Feels great.</p><p>It took me 2 hours to cover and remove things from the walls and the desk, and I was super stressed the night before.</p><p>Then, when you actually take the exam, more ridiculous rules await you. During the exam, you are not allowed to do the following:</p><ul><li>Look around the room, or even turn your head away from the monitor</li><li>Whisper or talk to yourself.</li><li>Go to the bathroom without permission.</li></ul><p>Additionally, the proctor is constantly watching you through your webcam, but you can’t see them — which is so creepy since you don’t know what they are doing while watching you.</p><h3>Exam Day</h3><p>I was nervous, which is normal, and didn’t sleep well the night before, so always take into account that you might not get enough rest before an exam. I signed up to take a morning exam, since that’s when I feel the most energized and productive.</p><p>So, I woke up, put on the outfit I picked from the day before, did my makeup, had a bowl of oatmeal — which is brain food — and then reviewed my index cards.</p><p>You are supposed to be at your computer 10 minutes before the exam starts, but I sat down 30 minutes before, since I didn’t want something unfortunate to happen. For example, if a Windows update starts, that would ruin everything. If you don’t show up for the exam, you must forfeit the fees.</p><p>Next, I logged into the Kryterion website, and I was given instructions to take 2 selfies via my webcam with good light, confirm my identity, and, lastly, to launch the software they made me install the night before that blocks you from using your computer, except when answering questions and allows the proctor to see everything happening on the screen.</p><p>The test started, and about 10 minutes in, my screen suddenly went blank, and I saw the proctor chatting with me on the computer, while watching me still through the camera:</p><p>“Hello, please show me your pencil and paper.”</p><p>“I don’t have a pencil and paper,” I said, confused, since the rules forbade their use.</p><p>“OK, you may bring pencil and paper to the desk, if you want,” they replied.</p><p>I was surprised since, again, those were forbidden! Then I suspected that the proctor was probably trying to make me do something illegal to make me fail my test, so I refused the pencil and paper, and the test was resumed. (After the exam ended, I realized I might have overreacted, but I didn’t want to take any chances.)</p><figure><img alt="Various pencils on top of a piece of paper." src="https://cdn-images-1.medium.com/max/1024/1*_77H_J2pvXzpEurCqxbH5A.jpeg" /><figcaption>I still don’t know why I was allowed a pencil and a paper during the exam.</figcaption></figure><p><strong>Suddenly, I realized I had made a horrible mistake. I didn’t ask my husband to take the day off! </strong>We both work from home, but he works as an insurance adjuster, so he speaks to clients all day. I could hear him perfectly through the wall separating us. Of course, that wouldn’t have been an issue if we were allowed to wear noise canceling headphones.</p><p>I tried to ignore my husband, but it was impossible, especially since the questions were mostly “What is the best way to do X?” which required a lot of deep thinking. However, I could hear him trying to help someone file an insurance claim. I started crying, thinking I would fail, which surprisingly didn’t bother the proctors at all. So whispering and looking around are big no-nos, but crying is okay. Makes perfect sense.</p><p>Another thing that was super stressful was that the screen froze a few times, saying it had trouble connecting to the Internet. I was afraid of missing my exam potentially due to an electricity and/or power outage. I had previously asked the IAAP folks what would happen to my exam, and they assured me I’d be able to reschedule. Thankfully, I scheduled my exam on the week of the 6 weeks window, but if I had scheduled it for the final week, then I’d have to wait a month to take it again.</p><p>There were also other sounds, like a lawn mower, delivery people knocking at the door, and kids yelling outside. Just some of the many reasons why you shouldn’t take exams at home.</p><p>I didn’t experience any other problems, other than having to go to the bathroom but being too afraid to ask for permission; the exam finished, and after about 45 days, I got the certificate. The test is usually 2 hours, but I was given 3 hours, since English is my second language. I finished it in 70 minutes.</p><h3>Tips for a better experience taking the home proctored exam</h3><p>Although I recommend taking the exam at a testing center, doing so isn’t always possible, since you might live in a rural area, need assistive technology, or like me, can’t drive. So here are some tips to take the experience from “super awful” to just “awful”:</p><ol><li>Schedule the exam at the beginning of the exam period, just in case you get sick or the computer/Internet malfunctions. That way, you’d have time to reschedule it as soon as possible. For example, the exam period for me was July 20 — August 24, 2022, and I scheduled my CPACC on July 21, 2022, and my <a href="https://www.accessibilityassociation.org/s/wascertification">Web Accessibility Specialist</a> exam on August 10, 2022.</li><li><strong>If you live with a roommate and/or a partner, ask them to take the day off from work, or to leave the house for the duration of the exam, which is usually 2 or 3 hours.</strong></li><li>Prepare your home office and desk for the exam on the day before.</li><li>Schedule the exam at the time of day you feel the most energized and razor sharp. I am a morning person, so I scheduled it early in the morning.</li><li>Be at the computer ready to press the “Start Exam” button at least 30 minutes before your official start time in case the PC needs to update or another surprising thing happens.</li><li>Delete the tracking software Kryterion forced you to install immediately after the exam ends.</li><li>Since the proctors can ask you to show them your room with the webcam at any time during the exam, make sure you remove all your Blackpink dolls too.</li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6d44afb453ca" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>