<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Gabi O'Connor</title>
    <description>The latest articles on Forem by Gabi O'Connor (@gabioc).</description>
    <link>https://forem.com/gabioc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F224052%2F68e953fe-0bfc-40c3-8d3c-74339849812b.jpg</url>
      <title>Forem: Gabi O'Connor</title>
      <link>https://forem.com/gabioc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/gabioc"/>
    <language>en</language>
    <item>
      <title>Making Accessibility FUN: Practical Tips for Building &amp; QA'ing Accessible Websites, Pt. 1</title>
      <dc:creator>Gabi O'Connor</dc:creator>
      <pubDate>Sat, 07 Sep 2019 21:02:47 +0000</pubDate>
      <link>https://forem.com/gabioc/making-accessibility-fun-practical-tips-for-building-qa-ing-accessible-websites-pt-1-jei</link>
      <guid>https://forem.com/gabioc/making-accessibility-fun-practical-tips-for-building-qa-ing-accessible-websites-pt-1-jei</guid>
      <description>&lt;p&gt;Hi! This is my first post here at dev.to and I'm excited to start off by sharing something near and dear to my heart: accessibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A little about me&lt;/strong&gt;: I'm no expert in accessibility but I have some experience and feel strongly about making technology more inclusive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this post is about&lt;/strong&gt;: I think that accessibility can sometimes feel overwhelming (just take a look at the &lt;a href="https://www.w3.org/TR/WCAG20/" rel="noopener noreferrer"&gt;official guidelines&lt;/a&gt; 😵) and like there are a lot of grey areas. This post is geared towards folks who want some practical and memorable tips to make it easier to build and QA accessible applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what is accessibility?
&lt;/h2&gt;

&lt;p&gt;Accessibility is making your site as usable as possible to the greatest number of people, including folks with any range of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual impairments&lt;/li&gt;
&lt;li&gt;Hearing impairments&lt;/li&gt;
&lt;li&gt;Mobility impairments&lt;/li&gt;
&lt;li&gt;Cognitive impairments&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why should we care about accessibility?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Don't Get Sued
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/1itJnruGIqwg9qGdK9/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/1itJnruGIqwg9qGdK9/giphy.gif" alt="Gif of man saying "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Accessibility is a compliance issue. Websites and mobile applications are &lt;a href="https://www.w3.org/WAI/policies/" rel="noopener noreferrer"&gt;legally required in many countries&lt;/a&gt; to adhere to certain accessibility standards. Failure to do so can and does result in lawsuits. 😬&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Be a More Rigorous Engineer
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/ZvLUtG6BZkBi0/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/ZvLUtG6BZkBi0/giphy.gif" alt="Gif of Penn Badgley typing on a computer with a very satisfied face"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paying attention to the accessibility of your site helps uncover bugs in your markup and edge cases that real users will likely come across.&lt;/p&gt;

&lt;p&gt;But another big reason we should care about accessibility is because we should want to...&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Be Good Humans
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/120ebsuRqHsuYM/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/120ebsuRqHsuYM/giphy.gif" alt="Gif of Bobby Moynihan as Guy Fieri on SNL"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;AKA don't be like this guy (just kidding, apparently Guy Fieri is v nice!)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Just because someone is differently abled doesn't mean that they should have a worse experience on your site.&lt;/p&gt;

&lt;p&gt;After all, &lt;strong&gt;if it's not usable by everyone, it's not usable&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  So how do you build and QA Accessibility UIs?
&lt;/h2&gt;

&lt;p&gt;When I think about whether something I'm building is accessible or not, I think of 3 main criteria. Is it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functional&lt;/li&gt;
&lt;li&gt;Understandable&lt;/li&gt;
&lt;li&gt;Navigable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or if acronyms help you with memorization, is it FUN?&lt;/p&gt;

&lt;p&gt;Let's dive into what each of these means and some tips around them.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Functional 🔧
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Can the user take the same actions as a user without a visual/hearing/etc. impairment?&lt;/li&gt;
&lt;li&gt;Are they able to have the same experience?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tips
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;If you're working on a user story with acceptance criteria, go through each acceptance criteria with a screenreader and keyboard navigation.

&lt;ul&gt;
&lt;li&gt;Can you achieve the same behavior via keyboard actions?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If you have a tirekick document that you use to QA across browsers and operating systems before a feature launch, add a column for an accessibility check.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fspc083x9u5ni5n9vtn3p.png" alt="A screenshot showing a QA document with example behavior to test across different platforms and browsers, including a column with Voiceover and keyboard as the platform and Safari as the browser"&gt;
&lt;/li&gt;
&lt;li&gt;Use semantic HTML

&lt;ul&gt;
&lt;li&gt;This provides a lot of functionality out of the box because it's telling the browser what this element is supposed to do.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. Understandable 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Can the user understand the information presented?&lt;/li&gt;
&lt;li&gt;Is there enough textual context for the user without requiring visual or auditory aids?&lt;/li&gt;
&lt;li&gt;Is the HTML structure purposeful or creating unnecessary noise?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tips
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Use human-readable aria-labels to provide more context

&lt;ul&gt;
&lt;li&gt;Ex. 'A close button in an overlay'&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Add descriptive alt tags to images or icons (unless it's redundant)&lt;/li&gt;
&lt;li&gt;Make sure &lt;a href="https://accessible-colors.com" rel="noopener noreferrer"&gt;text is legible for users with partial vision&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Use semantic HTML to minimize irrelevant noise

&lt;ul&gt;
&lt;li&gt;If you can't use the appropriate HTML for presentation reasons, ex. you need to use a &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt; instead of &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; for a list of items, apply a &lt;code&gt;role&lt;/code&gt; attribute with the value of 'presentation', which will allow the screenreader to ignore the underlying structure instead of reading it out.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. Navigable 📍
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Can a keyboard user navigate to each part of the page?&lt;/li&gt;
&lt;li&gt;Are they able to navigate in the correct order?&lt;/li&gt;
&lt;li&gt;When they hit enter on a link, are they redirected appropriately?&lt;/li&gt;
&lt;li&gt;Does the user know where they are on the page?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tips
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Focusable elements should show focus so partially sighted users will know where they are

&lt;ul&gt;
&lt;li&gt;Hint: Don't override the css-outline property with 'none'. This site gives me joy: &lt;a href="http://www.outlinenone.com" rel="noopener noreferrer"&gt;http://www.outlinenone.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Tab order should follow default content structure so the user isn't disoriented

&lt;ul&gt;
&lt;li&gt;Hint: Use the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex" rel="noopener noreferrer"&gt;tab-index&lt;/a&gt; attribute carefully or not at all. If you find yourself in a situation where you need to use &lt;code&gt;tab-index&lt;/code&gt; to make something tab-able, consider using a more semantic element that is natively tab-able (&lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;No keyboard traps so the user doesn't get lost

&lt;ul&gt;
&lt;li&gt;Ex. If the user is in an overlay they triggered by clicking a button, that button should regain focus once they close the overlay.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Use semantic HTML (are you sensing a theme here?)

&lt;ul&gt;
&lt;li&gt;Hint: Don't use an element like a &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; with a click handler instead of a &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; because it won't work with a keyboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Wrap Up
&lt;/h2&gt;

&lt;p&gt;That's it for now!&lt;/p&gt;

&lt;p&gt;This is definitely not an exhaustive list of tips or the only ways that you can increase the accessibility of your site, but it's a starting point. And hopefully these three themes — Functional, Understandable and Navigable — will make it easier to keep accessibility in mind while building and QA'ing your features.&lt;/p&gt;

&lt;p&gt;Stay tuned for part 2, where we'll explore how to use various tools to test the accessibility of sites and try it out ourselves!&lt;/p&gt;

&lt;p&gt;Thanks for reading ❤️&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>testing</category>
      <category>a11y</category>
      <category>html</category>
    </item>
  </channel>
</rss>
