SlideShare a Scribd company logo
1 of 47
Improving Accessibility Through
Process, Style Guide and Pattern
Library
March 21, 2018
Mark Stimson, Ph.D.
Digital Accessibility Manager
Digital Experience Center
Mark.X.Stimson@kp.org
Vita Zavoli
Lead Digital Accessibility Specialist
Digital Experience Center
Vita.Zavoli@kp.org
2
Eric Yeh
Front End Developer
Digital Experience Center
Eric.B.Yeh@kp.org
Nancy Crandall
Front End Developer
Digital Experience Center
Nancy.S.Crandall@kp.org
Authors
Speakers
Mark Stimson, Ph.D.
Digital Accessibility Manager
Kaiser Permanente
Digital Experience Center
Mark.X.Stimson@kp.org
3
Vita Zavoli
Lead Digital Accessibility Specialist
Kaiser Permanente
Digital Experience Center
Vita.Zavoli@kp.org
Nancy Crandall
Front End Developer
Digital Experience Center
Nancy.S.Crandall@kp.org
Agenda
● Objective
● Introduction
● Background on Kaiser
Permanente
● Style Guide and Pattern
Library Summary
● Accessibility Process
● Examples
4
Objective
Shared lessons learned
from evolving
accessibility process with
Style Guide Designers
and Developers
5
Introduction
Kaiser Permanente has attempted to solve the problem of demand on
accessibility testing and development with an accessible Style Guide and
Pattern Library which fits into the Adobe Experience Manager (AEM)
framework, and a process for ensuring updates and changes are accessible.
6
Our Story
Kaiser Permanente’s Long Journey to Success
7
Kaiser Permanente is…
• Largest care & coverage health care organization
Non-profit offering lowest cost with best care
• 12 million members in 8 states
• Providing health care for more than
75 years
• 82 Hospitals
• 300 million website visits
per year
KP’s Digital Experience…
History
• Began in 1996
• Integrated into first large-scale EMR
• Care integrated digitally (appointments, visits,
Rx, labs, records, preventions, etc.)
Now
• 70% of members now registered on kp.org
• Half-million visits/day
• Majority from mobile
9
KP’s Digital Inclusion…
10
KP Style Guide and Pattern
Library Summary
11
About Style Guide and Pattern’s
library
• The Style Guide and Pattern
Library are building blocks
• Style Guide is a NPM package
HTML/CSS for simple elements:
o buttons
o colors
o headings, etc..
• The Pattern library is a collection
of complex patterns as
standalone plugins:
o Accordions
o carousels
o modals etc
12
Style Guide and Pattern library process
• The Style Guide is developed using an
Agile process.
1. The design team provides the
screen markup/composition to the
development team.
2. FED then creates a story and
determines how many hours that
pattern will take to build. It includes
information needed for making the
component accessible.
3. The story is given a sizing number
to indicate the complexity of the
task, then placed into JIRA to
manage the workflow.
13
The Accessibility Process
14
Accessibility process
• Accessibility team meets with UX design once a week to review comps.
Comps are distributed to the Accessibility team before the meeting
occurs. At least two team members attend these meetings.
• Style Guide / Pattern library grooming session
• Accessibility team meets with FED for a working session once a week or as
needed. These meetings also have several Accessibility team members
present depending on specialty.
• The component then goes through a testing process using a testing grid.
The aim is to make sure that no high-end severity defects are present.
• Accessibility SMEs across departments meet to review defects to suggest
changes for implementation such as ARIA code, role values, keyboard and
screen reader fixes, etc.
• Accessibility and FED meet and include others from different departments
as needed once a week to discuss corner cases and strategize regarding
website global issues that are being considered for the future.
15
Testing on a LARGE Scale
• Over: 90 combinations across 17 assistive technologies
16
Browsers Keyboard JAWS NVDA
Voice
Over
Chrome
Dev Tool
Color
Contrast
Visual
ARIA
AMP
Browser
Magnify
(200%)
Talkback
Android
Magnifier
iOS
Zoom
iOS
Assistive
Touch
iOS
Inverse
Colors
iOS
Switch
Control
Dragon
High
Contrast
Mode
JAWS
2018
MAGic ZoomText
System
Access
Window
Eyes
Narrator
Win On-
Screen
Keyboard
Chrome (Win
Desktop)
TEST TEST TEST N/A TEST TEST TEST TEST TEST N/A N/A N/A N/A N/A N/A
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of Scope
Safari
(iPhone)
Out of
Scope
N/A N/A TEST N/A
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
N/A N/A N/A N/A N/A N/A
Out of
Scope
N/A N/A N/A N/A N/A N/A N/A N/A
Internet
Explorer
TEST TEST
Out of
Scope
N/A N/A
Out of
Scope
Out of
Scope
Out of
Scope
TEST N/A N/A N/A N/A N/A N/A
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of Scope
Firefox TEST
Out of
Scope
TEST N/A N/A
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
N/A N/A N/A N/A N/A N/A
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of Scope
Safari (Mac
OSX)
Out of
Scope
N/A N/A
Out of
Scope
N/A
Out of
Scope
N/A
Out of
Scope
Out of
Scope
N/A N/A
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
N/A N/A N/A
Out of
Scope
N/A N/A N/A N/A
Chrome
(Android)
Out of
Scope
N/A N/A N/A N/A
Out of
Scope
N/A
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
N/A N/A N/A N/A
Out of
Scope
Out of
Scope
N/A N/A N/A N/A N/A N/A N/A
Edge
Out of
Scope
Out of
Scope
Out of
Scope
N/A N/A
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
N/A N/A N/A N/A N/A N/A
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of
Scope
Out of Scope
7 Browsers
17 Assistive
Technologies
91 Possible
Test/Use Cases
14 (15%)
Planned
Test/Use Cases
17
Text Area
styleguide-location/forms.html
jira task number
LEGEND
TEST GRID Defect
Browsers Keyboard JAWS NVDA Voice Over Chrome Dev Tool
ARIA Code
Review
AMP
Browser Magnify
(200%)
Color Contrast Passed
Chrome (Win Desktop) PASSED #2 PASSED N/A #1 PASSED PASSED Inconclusive
Safari (iPhone) Out of Scope N/A N/A PASSED N/A Out of Scope Out of Scope Out of Scope Out of Scope
Internet Explorer PASSED #2 Out of Scope N/A N/A Out of Scope Out of Scope PASSED Out of Scope
Firefox PASSED Out of Scope #2 N/A N/A Out of Scope Out of Scope Out of Scope Out of Scope
PERSON RESPONSIBLE Tester (WIN7)
Tester (WIN7,
WIN10)
Tester (WIN7,
WIN10)
Tester (iOS11) Tester (WIN 10) Tester(WIN 10) Tester (WIN7) Tester (WIN7) Tester (WIN7)
SUMMARY OF WCAG
DEFECTS
Summary Severity Details Recommendation Comments
#1) Labels are not associated
with <textarea />
S1
These textarea elements do not have a mechanism that allows an
accessible name value to be calculated
1. <textarea placeholder="Please explain." name="field2"
maxlength="255" id="field2" data-show-lines="5" class="text-
area_word-count -inky -book" aria-
describedby="textarea_count2"></textarea>
BP: Provide a valid label for form fields
AMP Report: http://ampreportlocation
When on-screen label is available,
use <label />. The value of <label /> is
then explicitly associated with
<textarea /> using the "for" and "id"
atttributes.
When on-screen label is not available,
you can use the following option to
provide the label:
1. "title" attribute
2. "aria-label" attribute
3. "aria-labelledby" attribute
The "placeholder" attribute does
represent a label or hint. However when
it is used, the label or hint may not be
detected by assistive technologies.
Therefore, an offscreen text for <label />
or a title attribute should be used
instead.
Also, users will not have the text label
available for reference at the same time
as filling in a field. This is a problem for
user with memory impairments.
#1) Aria-live region read
twice.
S3
JAWS with Chrome
Example 1
Actual Behavior: "Please explain. Edit, use JAWS key + Alt + R to read
descriptive text, 255 of 255 characters left, type in text, 255 of 255
characters left" (defect, reads aria-live region twice)
JAWS with Internet Explorer
Example 1
Actual Behavior: "tab panel, Please explain. Edit, use JAWS key + Alt +
R to read descriptive text, 255 of 255 characters left, type in text, 255
of 255 characters left" (defect, reads aria-live region twice)
NVDA with Firefox
Testing on a Realistic Scale
• 14 combinations across 5 assistive technologies
Testing on a Realistic Scale (continued)
• 14 combinations across 5 assistive technologies
Text Area
styleguide-location/forms.html
jira task number
DEFECTS BY TEST METHOD (details for accessibility team)
Reviewer:Tester 1
Browsers JAWS (ver 18.0.4534) Issues Severity Recommendation
Chrome 64.0.3282.186 (64-bit)
(WIN7 and WIN10 Desktop)
Example 1
Actual Behavior: "Please explain. Edit, use JAWS key + Alt + R to read descriptive text, 255 of 255 characters left, type in
text, 255 of 255 characters left" (defect, reads aria-live region twice)
Example 2
Same, but with 590 characters.
S3
Internet Explorer
11.0.9600.18920CO
(WIN7 and WIN10 Desktop)
Example 1
Actual Behavior: "tab panel, Please explain. Edit, use JAWS key + Alt + R to read descriptive text, 255 of 255 characters
left, type in text, 255 of 255 characters left" (defect, reads aria-live region twice)
Example 2
Same, but with 590 characters.
S3
Reviewer:Tester 1
Browsers NVDA (ver 2018.1) Issues Severity Recommendation
Chrome 64.0.3282.186 (64-bit)
(WIN7 Desktop)
Working as expected
N/A
Firefox 58.0.2 (64-bit)
(WIN10 Desktop)
Example 1
Actual Behavior: "255 of 255 characters left, Please explain. edit multi line, 255 of 255 characters left" (defect, reads aria-
live region twice)
Example 2
Same, but with 590 characters.
S3
Tester 1 (iphone 6)
Browsers Voice Over Issues
Severity /
Priority
Recommendation
Safari
(iPhone 6, iOS 11.2)
Working as expected
N/A
ACCESSIBLE CODE
19
Reasons for accessible code and
documentation
20
Issue Solution
Consuming team
developers Style
Guide/pattern code
have limited
accessibility
experience
• Accessible HTML markup
examples
• Offer accessible JavaScript/NPM
plugins and templates that meet
Accessibility requirements
• And clear documentation
Solving Common Accessibility Implementatio
Issues
21
Issue Solution
Copy and Pasting
code
• Offer Reusable code
• NPM registry to have packages
of code
• Clear documentation
• Communication
• Office hours and pair
programming sessions to help
teams with implementation
Examples
22
What is accessible code?
• Aria-label
• Aria-labelledby
• Aria-describedby
• Aria hidden
• tablist
• Role
• And so much more!
23
<nav role=’navigation’ > learn more </nav>
<ul role=‘navigation’>learn more </ul >
<nav class=‘side_navigation’> learn more </nav>
Accessible JS Events
• Mouse Dependent
o onMouseOver,
o onMouseOut
• Keyboard Dependent
o onKeyDown
o onKeyUp
• Device independent:
o onFocus
o onBlur
o onSelect
o onChange
o onClick (ENTER will only work with link or form elements, will
not work with non-link and non-control elements, such as plain
text, table cells, or <div> elements)
24
Key Event KeyCode cheat sheet
developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
25
Key Code
tab 9
enter 13
shift 16
ctrl 17
escape 27
(space) 32
home 36
left arrow 37
(Continued )
up arrow 38
right arrow 39
down arrow 40
page up 33
page down 34
Example 1 – Expand/Collapse (accordion)
26
Example 1 – Expand/Collapse (accordion)
Expected Screenreader Behavior
• Screen reader reads the accordion toggles state
• When a panel is open state changes and is read to screen reader
• Closed state is hidden from screen reader
27
Example 1 – Expand/Collapse (accordion)
Expected Keyboard Behavior
• Enter or Space open closes the focused accordion panel
• Down/Up Arrow moves focus to the next or previous accordion panel.
• Home moves focus to the first accordion header.
• End moves focus to the last accordion header.
28
Keyboard controls to move from
accordion panels(sample)
29
function keyboardAccessibility(e) {
...
else if (which === 13 || which === 32) { //space and enter
OpenAccordion();
}
else if (which === 38) { //down arrow key
if (!accordionActive(target)) {
if (FirstAccordionitem(target)) {
var toggle = CloseAccordion();
toggle.focus();
} else {
var prevAccordionPanel =
nextPanel(target,"prev");
if (AccordionPanel) {
prevAccordionPanel.focus();
}
}
}
}
...
}
Keyboard controls to move from
accordion panels(sample)
30
Example 2 - Carousel:
31
Example 2 - Carousel:
32
Expected Screenreader Behavior
• Screen reader must announce as a carousel
• Changes to carousel state must be communicated to screen reader
users
• All Controls must be read and clear
• Allowing the screen reader user to utilize the keyboard to navigate
text within the carousel.
• Pausing the slides so that the user has control of the speed of viewing
and minimize distraction.
Example 2 - Carousel:
33
Expected Keyboard Behavior
• Left/Right Arrow to navigate with the dots
• Press TAB and SHIFT+TAB to navigate between arrowed buttons, and
press ENTER to activate
Using Arrow keys to change focus of the navigation (sample)
if (key == 13 || key == 32) {
$carouselSlide.trigger(this, 'click’);
}
if (key === 38) {//left key
if (!dotIndex)
dotIndex = dotList.length - 1;
else
dotIndex--;
} else if (key === 40){ //right key
if (dotIndex >= dotList.length - 1)
dotIndex = 0;
else
dotIndex++;
}
$carouselObj.query(dotList, function(j, elem) {
$ carouselObj.setAttr(elem, 'tabindex', '-1');
});
$carouselObj.setAttr(dotList[dotIndex],
'tabindex', '0').focus();
}
...
<li role="button" tabindex="0" title=“Title 2“ aria-label="Title 2 of
5 slides" data-index="2" aria-current="true" class="active-
slide"><span aria-hidden="true">2</span></li>
Using Arrow keys to change focus of the navigation (sample)
Example 3 - Modal:
36
Example 3 - Modal:
Expected Screenreader Behavior
• Screen reader reads modal trigger
• When modal opens, contents and role are announced by screen
reader
• Does not read, or select, anything outside of the contents of the
dialog
37
Example 3 - Modal:
Expected Keyboard Behavior
• SPACE or ENTER opens modal
• TAB or SHIFT+TAB to goes through keyboard trapping
• ESC closes the modal
• When modal is opened, keyboard focus goes to first focused
element
• When modal closes focus goes to modal trigger
38
Keyboard trapping by using an array of focusable
items (sample)
$modalOpen.on('keydown', modalKeyboardTrap);
var $focusableElementsString = $modal.find('button, a, input');
var $focusableElements = $(‘modalOpen’).find($focusableElementsString);
var $firstTabStop = $focusableElements[0];
var $lastTabStop = $focusableElements[$focusableElements.length - 1];
function modalKeyboardTrap(e) {
if (e.keyCode === 9) { //Tab Key
if (e.shiftKey) {
if (document.activeElement === $firstTabStop) {
$lastTabStop.focus();
}
}
else {
if (document.activeElement === $lastTabStop) {
$firstTabStop.focus();
}
}
}
if (e.keyCode === 27) { // escape Key
closeFullScreenModal();}
}
Keyboard trapping by using an array of focusable
items (sample)
40
Benefits for developers
• Meets all Requirements
• Saves development time
• Beginner accessibility developers
can leverage compliant code
examples
• Extendable code packages saves
time, and defects
• Positive user experience
41
Summary
● Style Guide and Pattern Library
can:
– saves development time coding
interactive web elements from
scratch
– improve accessibility and decrease
the defects found during the
product life cycle
– Allows for a UX standard as well as
accessibility standard.
– Meet all requirements
42
Break for Questions
43
thank you
44
www.linkedin.com/in/drmarkstimson
www.linkedin.com/in/vita-zavoli-7a3b0a4/
www.linkedin.com/in/nancycrandall/
Appendix
45
Additional Example 1 - Color:
Color contrast passes Accessibility requirements
Give clear guidelines to use colors for specific elements
46
Color Standard Made Simple
.link_element:hover {
background-color:$interactive-hover-color;
}
47

More Related Content

What's hot

Testing for Inclusive Web: Accessibility
Testing for Inclusive Web: AccessibilityTesting for Inclusive Web: Accessibility
Testing for Inclusive Web: AccessibilityManoj Kumar Kumar
 
Awesome Test Automation Made Simple w/ Dave Haeffner
Awesome Test Automation Made Simple w/ Dave HaeffnerAwesome Test Automation Made Simple w/ Dave Haeffner
Awesome Test Automation Made Simple w/ Dave HaeffnerSauce Labs
 
How to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance ToolbeltHow to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance ToolbeltBrett Tramposh
 
Accessibility Testing Tools for Developers - Gerard K. Cohen - CSUN 2016
Accessibility Testing Tools for Developers - Gerard K. Cohen - CSUN 2016Accessibility Testing Tools for Developers - Gerard K. Cohen - CSUN 2016
Accessibility Testing Tools for Developers - Gerard K. Cohen - CSUN 2016gerardkcohen
 
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...TEST Huddle
 
Best practices for writing good automated tests
Best practices for writing good automated testsBest practices for writing good automated tests
Best practices for writing good automated testsFelipe Lima
 
Real Devices or Emulators: Wen to use What for Automated Testing
Real Devices or Emulators: Wen to use What for Automated TestingReal Devices or Emulators: Wen to use What for Automated Testing
Real Devices or Emulators: Wen to use What for Automated TestingSauce Labs
 
Selenium + Specflow
Selenium + SpecflowSelenium + Specflow
Selenium + Specflowcromwellryan
 
Introduction to SoapUI day 1
Introduction to SoapUI day 1Introduction to SoapUI day 1
Introduction to SoapUI day 1Qualitest
 
ATDD And BDD The Great Beat Down…or…Debate
ATDD And BDD The Great Beat Down…or…DebateATDD And BDD The Great Beat Down…or…Debate
ATDD And BDD The Great Beat Down…or…DebateTEST Huddle
 
[webinar] Best of Breed: Successful Test Automation Practices from Innovative...
[webinar] Best of Breed: Successful Test Automation Practices from Innovative...[webinar] Best of Breed: Successful Test Automation Practices from Innovative...
[webinar] Best of Breed: Successful Test Automation Practices from Innovative...Applitools
 
Elements of a Test Framework
Elements of a Test FrameworkElements of a Test Framework
Elements of a Test FrameworkSmartBear
 
How Spotify Does Test Automation - Kristian Karl
How Spotify Does Test Automation - Kristian KarlHow Spotify Does Test Automation - Kristian Karl
How Spotify Does Test Automation - Kristian KarlSmartBear
 
Hey You Got Your TDD in my SQL DB by Jeff McKenzie
Hey You Got Your TDD in my SQL DB by Jeff McKenzieHey You Got Your TDD in my SQL DB by Jeff McKenzie
Hey You Got Your TDD in my SQL DB by Jeff McKenzieQA or the Highway
 
Adam carmi
Adam carmiAdam carmi
Adam carmiCodeFest
 
Best Practices for a Repeatable Shift-Left Commitment
Best Practices for a Repeatable Shift-Left CommitmentBest Practices for a Repeatable Shift-Left Commitment
Best Practices for a Repeatable Shift-Left CommitmentApplause
 

What's hot (20)

Testing for Inclusive Web: Accessibility
Testing for Inclusive Web: AccessibilityTesting for Inclusive Web: Accessibility
Testing for Inclusive Web: Accessibility
 
Awesome Test Automation Made Simple w/ Dave Haeffner
Awesome Test Automation Made Simple w/ Dave HaeffnerAwesome Test Automation Made Simple w/ Dave Haeffner
Awesome Test Automation Made Simple w/ Dave Haeffner
 
Eclipse UI automation
Eclipse UI automationEclipse UI automation
Eclipse UI automation
 
How to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance ToolbeltHow to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance Toolbelt
 
Accessibility Testing Tools for Developers - Gerard K. Cohen - CSUN 2016
Accessibility Testing Tools for Developers - Gerard K. Cohen - CSUN 2016Accessibility Testing Tools for Developers - Gerard K. Cohen - CSUN 2016
Accessibility Testing Tools for Developers - Gerard K. Cohen - CSUN 2016
 
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...
 
Tec314f
Tec314fTec314f
Tec314f
 
Best practices for writing good automated tests
Best practices for writing good automated testsBest practices for writing good automated tests
Best practices for writing good automated tests
 
Real Devices or Emulators: Wen to use What for Automated Testing
Real Devices or Emulators: Wen to use What for Automated TestingReal Devices or Emulators: Wen to use What for Automated Testing
Real Devices or Emulators: Wen to use What for Automated Testing
 
Selenium + Specflow
Selenium + SpecflowSelenium + Specflow
Selenium + Specflow
 
10 Benefits of Automated Testing
10 Benefits of Automated Testing10 Benefits of Automated Testing
10 Benefits of Automated Testing
 
Introduction to SoapUI day 1
Introduction to SoapUI day 1Introduction to SoapUI day 1
Introduction to SoapUI day 1
 
ATDD And BDD The Great Beat Down…or…Debate
ATDD And BDD The Great Beat Down…or…DebateATDD And BDD The Great Beat Down…or…Debate
ATDD And BDD The Great Beat Down…or…Debate
 
[webinar] Best of Breed: Successful Test Automation Practices from Innovative...
[webinar] Best of Breed: Successful Test Automation Practices from Innovative...[webinar] Best of Breed: Successful Test Automation Practices from Innovative...
[webinar] Best of Breed: Successful Test Automation Practices from Innovative...
 
Elements of a Test Framework
Elements of a Test FrameworkElements of a Test Framework
Elements of a Test Framework
 
How Spotify Does Test Automation - Kristian Karl
How Spotify Does Test Automation - Kristian KarlHow Spotify Does Test Automation - Kristian Karl
How Spotify Does Test Automation - Kristian Karl
 
Hey You Got Your TDD in my SQL DB by Jeff McKenzie
Hey You Got Your TDD in my SQL DB by Jeff McKenzieHey You Got Your TDD in my SQL DB by Jeff McKenzie
Hey You Got Your TDD in my SQL DB by Jeff McKenzie
 
Code Review for iOS
Code Review for iOSCode Review for iOS
Code Review for iOS
 
Adam carmi
Adam carmiAdam carmi
Adam carmi
 
Best Practices for a Repeatable Shift-Left Commitment
Best Practices for a Repeatable Shift-Left CommitmentBest Practices for a Repeatable Shift-Left Commitment
Best Practices for a Repeatable Shift-Left Commitment
 

Similar to Improving Digital Accessibility Through Process, Style Guide and Pattern Library

Create an architecture for web test automation
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automationElias Nogueira
 
Solving the 3 Biggest Questions in Continuous Testing
Solving the 3 Biggest Questions in Continuous TestingSolving the 3 Biggest Questions in Continuous Testing
Solving the 3 Biggest Questions in Continuous TestingPerfecto by Perforce
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Applitools
 
Selenium-online-training
Selenium-online-trainingSelenium-online-training
Selenium-online-trainingRaghav Arora
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Niels Frydenholm
 
Online gas booking project in java
Online gas booking project in javaOnline gas booking project in java
Online gas booking project in javas4al_com
 
Creating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran KinsbrunerCreating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran KinsbrunerQA or the Highway
 
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)Christian Catalan
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)CIVEL Benoit
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1CIVEL Benoit
 
Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Edureka!
 
Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Edureka!
 
Priyanka Singh_testing_resume
Priyanka Singh_testing_resumePriyanka Singh_testing_resume
Priyanka Singh_testing_resumePriyanka Singh
 
Keeping Your Continuous Test Automation Suites Continuously Valuable in DevOps
Keeping Your Continuous Test Automation Suites Continuously Valuable in DevOpsKeeping Your Continuous Test Automation Suites Continuously Valuable in DevOps
Keeping Your Continuous Test Automation Suites Continuously Valuable in DevOpsPerfecto by Perforce
 
Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)Sergio Navarro Pino
 

Similar to Improving Digital Accessibility Through Process, Style Guide and Pattern Library (20)

Petri for kyiv.pptx
Petri for kyiv.pptxPetri for kyiv.pptx
Petri for kyiv.pptx
 
Create an architecture for web test automation
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automation
 
Solving the 3 Biggest Questions in Continuous Testing
Solving the 3 Biggest Questions in Continuous TestingSolving the 3 Biggest Questions in Continuous Testing
Solving the 3 Biggest Questions in Continuous Testing
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
 
Selenium-online-training
Selenium-online-trainingSelenium-online-training
Selenium-online-training
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...
 
Online gas booking project in java
Online gas booking project in javaOnline gas booking project in java
Online gas booking project in java
 
Neha_Maggu
Neha_MagguNeha_Maggu
Neha_Maggu
 
Creating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran KinsbrunerCreating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran Kinsbruner
 
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
 
Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!
 
Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!
 
soa
soasoa
soa
 
RR2 CV
RR2 CVRR2 CV
RR2 CV
 
Prakasha_Resume
Prakasha_ResumePrakasha_Resume
Prakasha_Resume
 
Priyanka Singh_testing_resume
Priyanka Singh_testing_resumePriyanka Singh_testing_resume
Priyanka Singh_testing_resume
 
Keeping Your Continuous Test Automation Suites Continuously Valuable in DevOps
Keeping Your Continuous Test Automation Suites Continuously Valuable in DevOpsKeeping Your Continuous Test Automation Suites Continuously Valuable in DevOps
Keeping Your Continuous Test Automation Suites Continuously Valuable in DevOps
 
Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)
 

Recently uploaded

Russian Call Girls Hyderabad Saloni 9907093804 Independent Escort Service Hyd...
Russian Call Girls Hyderabad Saloni 9907093804 Independent Escort Service Hyd...Russian Call Girls Hyderabad Saloni 9907093804 Independent Escort Service Hyd...
Russian Call Girls Hyderabad Saloni 9907093804 Independent Escort Service Hyd...delhimodelshub1
 
hyderabad call girl.pdfRussian Call Girls in Hyderabad Amrita 9907093804 Inde...
hyderabad call girl.pdfRussian Call Girls in Hyderabad Amrita 9907093804 Inde...hyderabad call girl.pdfRussian Call Girls in Hyderabad Amrita 9907093804 Inde...
hyderabad call girl.pdfRussian Call Girls in Hyderabad Amrita 9907093804 Inde...delhimodelshub1
 
Call Girls LB Nagar 7001305949 all area service COD available Any Time
Call Girls LB Nagar 7001305949 all area service COD available Any TimeCall Girls LB Nagar 7001305949 all area service COD available Any Time
Call Girls LB Nagar 7001305949 all area service COD available Any Timedelhimodelshub1
 
Chandigarh Call Girls 👙 7001035870 👙 Genuine WhatsApp Number for Real Meet
Chandigarh Call Girls 👙 7001035870 👙 Genuine WhatsApp Number for Real MeetChandigarh Call Girls 👙 7001035870 👙 Genuine WhatsApp Number for Real Meet
Chandigarh Call Girls 👙 7001035870 👙 Genuine WhatsApp Number for Real Meetpriyashah722354
 
💚😋Mumbai Escort Service Call Girls, ₹5000 To 25K With AC💚😋
💚😋Mumbai Escort Service Call Girls, ₹5000 To 25K With AC💚😋💚😋Mumbai Escort Service Call Girls, ₹5000 To 25K With AC💚😋
💚😋Mumbai Escort Service Call Girls, ₹5000 To 25K With AC💚😋Sheetaleventcompany
 
Call Girls Hyderabad Krisha 9907093804 Independent Escort Service Hyderabad
Call Girls Hyderabad Krisha 9907093804 Independent Escort Service HyderabadCall Girls Hyderabad Krisha 9907093804 Independent Escort Service Hyderabad
Call Girls Hyderabad Krisha 9907093804 Independent Escort Service Hyderabaddelhimodelshub1
 
Russian Call Girls Hyderabad Indira 9907093804 Independent Escort Service Hyd...
Russian Call Girls Hyderabad Indira 9907093804 Independent Escort Service Hyd...Russian Call Girls Hyderabad Indira 9907093804 Independent Escort Service Hyd...
Russian Call Girls Hyderabad Indira 9907093804 Independent Escort Service Hyd...delhimodelshub1
 
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service Gurgaon
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service GurgaonCall Girl Gurgaon Saloni 9711199012 Independent Escort Service Gurgaon
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service GurgaonCall Girls Service Gurgaon
 
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsi
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsiindian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsi
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana TulsiHigh Profile Call Girls Chandigarh Aarushi
 
Basics of Anatomy- Language of Anatomy.pptx
Basics of Anatomy- Language of Anatomy.pptxBasics of Anatomy- Language of Anatomy.pptx
Basics of Anatomy- Language of Anatomy.pptxAyush Gupta
 
VIP Call Girls Sector 67 Gurgaon Just Call Me 9711199012
VIP Call Girls Sector 67 Gurgaon Just Call Me 9711199012VIP Call Girls Sector 67 Gurgaon Just Call Me 9711199012
VIP Call Girls Sector 67 Gurgaon Just Call Me 9711199012Call Girls Service Gurgaon
 
Dehradun Call Girls Service 7017441440 Real Russian Girls Looking Models
Dehradun Call Girls Service 7017441440 Real Russian Girls Looking ModelsDehradun Call Girls Service 7017441440 Real Russian Girls Looking Models
Dehradun Call Girls Service 7017441440 Real Russian Girls Looking Modelsindiancallgirl4rent
 
Jalandhar Female Call Girls Contact Number 9053900678 💚Jalandhar Female Call...
Jalandhar  Female Call Girls Contact Number 9053900678 💚Jalandhar Female Call...Jalandhar  Female Call Girls Contact Number 9053900678 💚Jalandhar Female Call...
Jalandhar Female Call Girls Contact Number 9053900678 💚Jalandhar Female Call...Call Girls Service Chandigarh Ayushi
 
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabad
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service HyderabadVIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabad
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabaddelhimodelshub1
 

Recently uploaded (20)

College Call Girls Dehradun Kavya 🔝 7001305949 🔝 📍 Independent Escort Service...
College Call Girls Dehradun Kavya 🔝 7001305949 🔝 📍 Independent Escort Service...College Call Girls Dehradun Kavya 🔝 7001305949 🔝 📍 Independent Escort Service...
College Call Girls Dehradun Kavya 🔝 7001305949 🔝 📍 Independent Escort Service...
 
Model Call Girl in Subhash Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Subhash Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Subhash Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Subhash Nagar Delhi reach out to us at 🔝9953056974🔝
 
#9711199012# African Student Escorts in Delhi 😘 Call Girls Delhi
#9711199012# African Student Escorts in Delhi 😘 Call Girls Delhi#9711199012# African Student Escorts in Delhi 😘 Call Girls Delhi
#9711199012# African Student Escorts in Delhi 😘 Call Girls Delhi
 
Russian Call Girls Hyderabad Saloni 9907093804 Independent Escort Service Hyd...
Russian Call Girls Hyderabad Saloni 9907093804 Independent Escort Service Hyd...Russian Call Girls Hyderabad Saloni 9907093804 Independent Escort Service Hyd...
Russian Call Girls Hyderabad Saloni 9907093804 Independent Escort Service Hyd...
 
Call Girl Lucknow Gauri 🔝 8923113531 🔝 🎶 Independent Escort Service Lucknow
Call Girl Lucknow Gauri 🔝 8923113531  🔝 🎶 Independent Escort Service LucknowCall Girl Lucknow Gauri 🔝 8923113531  🔝 🎶 Independent Escort Service Lucknow
Call Girl Lucknow Gauri 🔝 8923113531 🔝 🎶 Independent Escort Service Lucknow
 
Call Girls in Lucknow Esha 🔝 8923113531 🔝 🎶 Independent Escort Service Lucknow
Call Girls in Lucknow Esha 🔝 8923113531  🔝 🎶 Independent Escort Service LucknowCall Girls in Lucknow Esha 🔝 8923113531  🔝 🎶 Independent Escort Service Lucknow
Call Girls in Lucknow Esha 🔝 8923113531 🔝 🎶 Independent Escort Service Lucknow
 
hyderabad call girl.pdfRussian Call Girls in Hyderabad Amrita 9907093804 Inde...
hyderabad call girl.pdfRussian Call Girls in Hyderabad Amrita 9907093804 Inde...hyderabad call girl.pdfRussian Call Girls in Hyderabad Amrita 9907093804 Inde...
hyderabad call girl.pdfRussian Call Girls in Hyderabad Amrita 9907093804 Inde...
 
Call Girls LB Nagar 7001305949 all area service COD available Any Time
Call Girls LB Nagar 7001305949 all area service COD available Any TimeCall Girls LB Nagar 7001305949 all area service COD available Any Time
Call Girls LB Nagar 7001305949 all area service COD available Any Time
 
Chandigarh Call Girls 👙 7001035870 👙 Genuine WhatsApp Number for Real Meet
Chandigarh Call Girls 👙 7001035870 👙 Genuine WhatsApp Number for Real MeetChandigarh Call Girls 👙 7001035870 👙 Genuine WhatsApp Number for Real Meet
Chandigarh Call Girls 👙 7001035870 👙 Genuine WhatsApp Number for Real Meet
 
💚😋Mumbai Escort Service Call Girls, ₹5000 To 25K With AC💚😋
💚😋Mumbai Escort Service Call Girls, ₹5000 To 25K With AC💚😋💚😋Mumbai Escort Service Call Girls, ₹5000 To 25K With AC💚😋
💚😋Mumbai Escort Service Call Girls, ₹5000 To 25K With AC💚😋
 
Call Girls Hyderabad Krisha 9907093804 Independent Escort Service Hyderabad
Call Girls Hyderabad Krisha 9907093804 Independent Escort Service HyderabadCall Girls Hyderabad Krisha 9907093804 Independent Escort Service Hyderabad
Call Girls Hyderabad Krisha 9907093804 Independent Escort Service Hyderabad
 
Russian Call Girls Hyderabad Indira 9907093804 Independent Escort Service Hyd...
Russian Call Girls Hyderabad Indira 9907093804 Independent Escort Service Hyd...Russian Call Girls Hyderabad Indira 9907093804 Independent Escort Service Hyd...
Russian Call Girls Hyderabad Indira 9907093804 Independent Escort Service Hyd...
 
Call Girl Guwahati Aashi 👉 7001305949 👈 🔝 Independent Escort Service Guwahati
Call Girl Guwahati Aashi 👉 7001305949 👈 🔝 Independent Escort Service GuwahatiCall Girl Guwahati Aashi 👉 7001305949 👈 🔝 Independent Escort Service Guwahati
Call Girl Guwahati Aashi 👉 7001305949 👈 🔝 Independent Escort Service Guwahati
 
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service Gurgaon
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service GurgaonCall Girl Gurgaon Saloni 9711199012 Independent Escort Service Gurgaon
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service Gurgaon
 
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsi
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsiindian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsi
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsi
 
Basics of Anatomy- Language of Anatomy.pptx
Basics of Anatomy- Language of Anatomy.pptxBasics of Anatomy- Language of Anatomy.pptx
Basics of Anatomy- Language of Anatomy.pptx
 
VIP Call Girls Sector 67 Gurgaon Just Call Me 9711199012
VIP Call Girls Sector 67 Gurgaon Just Call Me 9711199012VIP Call Girls Sector 67 Gurgaon Just Call Me 9711199012
VIP Call Girls Sector 67 Gurgaon Just Call Me 9711199012
 
Dehradun Call Girls Service 7017441440 Real Russian Girls Looking Models
Dehradun Call Girls Service 7017441440 Real Russian Girls Looking ModelsDehradun Call Girls Service 7017441440 Real Russian Girls Looking Models
Dehradun Call Girls Service 7017441440 Real Russian Girls Looking Models
 
Jalandhar Female Call Girls Contact Number 9053900678 💚Jalandhar Female Call...
Jalandhar  Female Call Girls Contact Number 9053900678 💚Jalandhar Female Call...Jalandhar  Female Call Girls Contact Number 9053900678 💚Jalandhar Female Call...
Jalandhar Female Call Girls Contact Number 9053900678 💚Jalandhar Female Call...
 
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabad
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service HyderabadVIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabad
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabad
 

Improving Digital Accessibility Through Process, Style Guide and Pattern Library

  • 1. Improving Accessibility Through Process, Style Guide and Pattern Library March 21, 2018
  • 2. Mark Stimson, Ph.D. Digital Accessibility Manager Digital Experience Center Mark.X.Stimson@kp.org Vita Zavoli Lead Digital Accessibility Specialist Digital Experience Center Vita.Zavoli@kp.org 2 Eric Yeh Front End Developer Digital Experience Center Eric.B.Yeh@kp.org Nancy Crandall Front End Developer Digital Experience Center Nancy.S.Crandall@kp.org Authors
  • 3. Speakers Mark Stimson, Ph.D. Digital Accessibility Manager Kaiser Permanente Digital Experience Center Mark.X.Stimson@kp.org 3 Vita Zavoli Lead Digital Accessibility Specialist Kaiser Permanente Digital Experience Center Vita.Zavoli@kp.org Nancy Crandall Front End Developer Digital Experience Center Nancy.S.Crandall@kp.org
  • 4. Agenda ● Objective ● Introduction ● Background on Kaiser Permanente ● Style Guide and Pattern Library Summary ● Accessibility Process ● Examples 4
  • 5. Objective Shared lessons learned from evolving accessibility process with Style Guide Designers and Developers 5
  • 6. Introduction Kaiser Permanente has attempted to solve the problem of demand on accessibility testing and development with an accessible Style Guide and Pattern Library which fits into the Adobe Experience Manager (AEM) framework, and a process for ensuring updates and changes are accessible. 6
  • 7. Our Story Kaiser Permanente’s Long Journey to Success 7
  • 8. Kaiser Permanente is… • Largest care & coverage health care organization Non-profit offering lowest cost with best care • 12 million members in 8 states • Providing health care for more than 75 years • 82 Hospitals • 300 million website visits per year
  • 9. KP’s Digital Experience… History • Began in 1996 • Integrated into first large-scale EMR • Care integrated digitally (appointments, visits, Rx, labs, records, preventions, etc.) Now • 70% of members now registered on kp.org • Half-million visits/day • Majority from mobile 9
  • 11. KP Style Guide and Pattern Library Summary 11
  • 12. About Style Guide and Pattern’s library • The Style Guide and Pattern Library are building blocks • Style Guide is a NPM package HTML/CSS for simple elements: o buttons o colors o headings, etc.. • The Pattern library is a collection of complex patterns as standalone plugins: o Accordions o carousels o modals etc 12
  • 13. Style Guide and Pattern library process • The Style Guide is developed using an Agile process. 1. The design team provides the screen markup/composition to the development team. 2. FED then creates a story and determines how many hours that pattern will take to build. It includes information needed for making the component accessible. 3. The story is given a sizing number to indicate the complexity of the task, then placed into JIRA to manage the workflow. 13
  • 15. Accessibility process • Accessibility team meets with UX design once a week to review comps. Comps are distributed to the Accessibility team before the meeting occurs. At least two team members attend these meetings. • Style Guide / Pattern library grooming session • Accessibility team meets with FED for a working session once a week or as needed. These meetings also have several Accessibility team members present depending on specialty. • The component then goes through a testing process using a testing grid. The aim is to make sure that no high-end severity defects are present. • Accessibility SMEs across departments meet to review defects to suggest changes for implementation such as ARIA code, role values, keyboard and screen reader fixes, etc. • Accessibility and FED meet and include others from different departments as needed once a week to discuss corner cases and strategize regarding website global issues that are being considered for the future. 15
  • 16. Testing on a LARGE Scale • Over: 90 combinations across 17 assistive technologies 16 Browsers Keyboard JAWS NVDA Voice Over Chrome Dev Tool Color Contrast Visual ARIA AMP Browser Magnify (200%) Talkback Android Magnifier iOS Zoom iOS Assistive Touch iOS Inverse Colors iOS Switch Control Dragon High Contrast Mode JAWS 2018 MAGic ZoomText System Access Window Eyes Narrator Win On- Screen Keyboard Chrome (Win Desktop) TEST TEST TEST N/A TEST TEST TEST TEST TEST N/A N/A N/A N/A N/A N/A Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Safari (iPhone) Out of Scope N/A N/A TEST N/A Out of Scope Out of Scope Out of Scope Out of Scope N/A N/A N/A N/A N/A N/A Out of Scope N/A N/A N/A N/A N/A N/A N/A N/A Internet Explorer TEST TEST Out of Scope N/A N/A Out of Scope Out of Scope Out of Scope TEST N/A N/A N/A N/A N/A N/A Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Firefox TEST Out of Scope TEST N/A N/A Out of Scope Out of Scope Out of Scope Out of Scope N/A N/A N/A N/A N/A N/A Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Safari (Mac OSX) Out of Scope N/A N/A Out of Scope N/A Out of Scope N/A Out of Scope Out of Scope N/A N/A Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope N/A N/A N/A Out of Scope N/A N/A N/A N/A Chrome (Android) Out of Scope N/A N/A N/A N/A Out of Scope N/A Out of Scope Out of Scope Out of Scope Out of Scope N/A N/A N/A N/A Out of Scope Out of Scope N/A N/A N/A N/A N/A N/A N/A Edge Out of Scope Out of Scope Out of Scope N/A N/A Out of Scope Out of Scope Out of Scope Out of Scope N/A N/A N/A N/A N/A N/A Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope Out of Scope 7 Browsers 17 Assistive Technologies 91 Possible Test/Use Cases 14 (15%) Planned Test/Use Cases
  • 17. 17 Text Area styleguide-location/forms.html jira task number LEGEND TEST GRID Defect Browsers Keyboard JAWS NVDA Voice Over Chrome Dev Tool ARIA Code Review AMP Browser Magnify (200%) Color Contrast Passed Chrome (Win Desktop) PASSED #2 PASSED N/A #1 PASSED PASSED Inconclusive Safari (iPhone) Out of Scope N/A N/A PASSED N/A Out of Scope Out of Scope Out of Scope Out of Scope Internet Explorer PASSED #2 Out of Scope N/A N/A Out of Scope Out of Scope PASSED Out of Scope Firefox PASSED Out of Scope #2 N/A N/A Out of Scope Out of Scope Out of Scope Out of Scope PERSON RESPONSIBLE Tester (WIN7) Tester (WIN7, WIN10) Tester (WIN7, WIN10) Tester (iOS11) Tester (WIN 10) Tester(WIN 10) Tester (WIN7) Tester (WIN7) Tester (WIN7) SUMMARY OF WCAG DEFECTS Summary Severity Details Recommendation Comments #1) Labels are not associated with <textarea /> S1 These textarea elements do not have a mechanism that allows an accessible name value to be calculated 1. <textarea placeholder="Please explain." name="field2" maxlength="255" id="field2" data-show-lines="5" class="text- area_word-count -inky -book" aria- describedby="textarea_count2"></textarea> BP: Provide a valid label for form fields AMP Report: http://ampreportlocation When on-screen label is available, use <label />. The value of <label /> is then explicitly associated with <textarea /> using the "for" and "id" atttributes. When on-screen label is not available, you can use the following option to provide the label: 1. "title" attribute 2. "aria-label" attribute 3. "aria-labelledby" attribute The "placeholder" attribute does represent a label or hint. However when it is used, the label or hint may not be detected by assistive technologies. Therefore, an offscreen text for <label /> or a title attribute should be used instead. Also, users will not have the text label available for reference at the same time as filling in a field. This is a problem for user with memory impairments. #1) Aria-live region read twice. S3 JAWS with Chrome Example 1 Actual Behavior: "Please explain. Edit, use JAWS key + Alt + R to read descriptive text, 255 of 255 characters left, type in text, 255 of 255 characters left" (defect, reads aria-live region twice) JAWS with Internet Explorer Example 1 Actual Behavior: "tab panel, Please explain. Edit, use JAWS key + Alt + R to read descriptive text, 255 of 255 characters left, type in text, 255 of 255 characters left" (defect, reads aria-live region twice) NVDA with Firefox Testing on a Realistic Scale • 14 combinations across 5 assistive technologies
  • 18. Testing on a Realistic Scale (continued) • 14 combinations across 5 assistive technologies Text Area styleguide-location/forms.html jira task number DEFECTS BY TEST METHOD (details for accessibility team) Reviewer:Tester 1 Browsers JAWS (ver 18.0.4534) Issues Severity Recommendation Chrome 64.0.3282.186 (64-bit) (WIN7 and WIN10 Desktop) Example 1 Actual Behavior: "Please explain. Edit, use JAWS key + Alt + R to read descriptive text, 255 of 255 characters left, type in text, 255 of 255 characters left" (defect, reads aria-live region twice) Example 2 Same, but with 590 characters. S3 Internet Explorer 11.0.9600.18920CO (WIN7 and WIN10 Desktop) Example 1 Actual Behavior: "tab panel, Please explain. Edit, use JAWS key + Alt + R to read descriptive text, 255 of 255 characters left, type in text, 255 of 255 characters left" (defect, reads aria-live region twice) Example 2 Same, but with 590 characters. S3 Reviewer:Tester 1 Browsers NVDA (ver 2018.1) Issues Severity Recommendation Chrome 64.0.3282.186 (64-bit) (WIN7 Desktop) Working as expected N/A Firefox 58.0.2 (64-bit) (WIN10 Desktop) Example 1 Actual Behavior: "255 of 255 characters left, Please explain. edit multi line, 255 of 255 characters left" (defect, reads aria- live region twice) Example 2 Same, but with 590 characters. S3 Tester 1 (iphone 6) Browsers Voice Over Issues Severity / Priority Recommendation Safari (iPhone 6, iOS 11.2) Working as expected N/A
  • 20. Reasons for accessible code and documentation 20 Issue Solution Consuming team developers Style Guide/pattern code have limited accessibility experience • Accessible HTML markup examples • Offer accessible JavaScript/NPM plugins and templates that meet Accessibility requirements • And clear documentation
  • 21. Solving Common Accessibility Implementatio Issues 21 Issue Solution Copy and Pasting code • Offer Reusable code • NPM registry to have packages of code • Clear documentation • Communication • Office hours and pair programming sessions to help teams with implementation
  • 23. What is accessible code? • Aria-label • Aria-labelledby • Aria-describedby • Aria hidden • tablist • Role • And so much more! 23 <nav role=’navigation’ > learn more </nav> <ul role=‘navigation’>learn more </ul > <nav class=‘side_navigation’> learn more </nav>
  • 24. Accessible JS Events • Mouse Dependent o onMouseOver, o onMouseOut • Keyboard Dependent o onKeyDown o onKeyUp • Device independent: o onFocus o onBlur o onSelect o onChange o onClick (ENTER will only work with link or form elements, will not work with non-link and non-control elements, such as plain text, table cells, or <div> elements) 24
  • 25. Key Event KeyCode cheat sheet developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode 25 Key Code tab 9 enter 13 shift 16 ctrl 17 escape 27 (space) 32 home 36 left arrow 37 (Continued ) up arrow 38 right arrow 39 down arrow 40 page up 33 page down 34
  • 26. Example 1 – Expand/Collapse (accordion) 26
  • 27. Example 1 – Expand/Collapse (accordion) Expected Screenreader Behavior • Screen reader reads the accordion toggles state • When a panel is open state changes and is read to screen reader • Closed state is hidden from screen reader 27
  • 28. Example 1 – Expand/Collapse (accordion) Expected Keyboard Behavior • Enter or Space open closes the focused accordion panel • Down/Up Arrow moves focus to the next or previous accordion panel. • Home moves focus to the first accordion header. • End moves focus to the last accordion header. 28
  • 29. Keyboard controls to move from accordion panels(sample) 29 function keyboardAccessibility(e) { ... else if (which === 13 || which === 32) { //space and enter OpenAccordion(); } else if (which === 38) { //down arrow key if (!accordionActive(target)) { if (FirstAccordionitem(target)) { var toggle = CloseAccordion(); toggle.focus(); } else { var prevAccordionPanel = nextPanel(target,"prev"); if (AccordionPanel) { prevAccordionPanel.focus(); } } } } ... }
  • 30. Keyboard controls to move from accordion panels(sample) 30
  • 31. Example 2 - Carousel: 31
  • 32. Example 2 - Carousel: 32 Expected Screenreader Behavior • Screen reader must announce as a carousel • Changes to carousel state must be communicated to screen reader users • All Controls must be read and clear • Allowing the screen reader user to utilize the keyboard to navigate text within the carousel. • Pausing the slides so that the user has control of the speed of viewing and minimize distraction.
  • 33. Example 2 - Carousel: 33 Expected Keyboard Behavior • Left/Right Arrow to navigate with the dots • Press TAB and SHIFT+TAB to navigate between arrowed buttons, and press ENTER to activate
  • 34. Using Arrow keys to change focus of the navigation (sample) if (key == 13 || key == 32) { $carouselSlide.trigger(this, 'click’); } if (key === 38) {//left key if (!dotIndex) dotIndex = dotList.length - 1; else dotIndex--; } else if (key === 40){ //right key if (dotIndex >= dotList.length - 1) dotIndex = 0; else dotIndex++; } $carouselObj.query(dotList, function(j, elem) { $ carouselObj.setAttr(elem, 'tabindex', '-1'); }); $carouselObj.setAttr(dotList[dotIndex], 'tabindex', '0').focus(); } ... <li role="button" tabindex="0" title=“Title 2“ aria-label="Title 2 of 5 slides" data-index="2" aria-current="true" class="active- slide"><span aria-hidden="true">2</span></li>
  • 35. Using Arrow keys to change focus of the navigation (sample)
  • 36. Example 3 - Modal: 36
  • 37. Example 3 - Modal: Expected Screenreader Behavior • Screen reader reads modal trigger • When modal opens, contents and role are announced by screen reader • Does not read, or select, anything outside of the contents of the dialog 37
  • 38. Example 3 - Modal: Expected Keyboard Behavior • SPACE or ENTER opens modal • TAB or SHIFT+TAB to goes through keyboard trapping • ESC closes the modal • When modal is opened, keyboard focus goes to first focused element • When modal closes focus goes to modal trigger 38
  • 39. Keyboard trapping by using an array of focusable items (sample) $modalOpen.on('keydown', modalKeyboardTrap); var $focusableElementsString = $modal.find('button, a, input'); var $focusableElements = $(‘modalOpen’).find($focusableElementsString); var $firstTabStop = $focusableElements[0]; var $lastTabStop = $focusableElements[$focusableElements.length - 1]; function modalKeyboardTrap(e) { if (e.keyCode === 9) { //Tab Key if (e.shiftKey) { if (document.activeElement === $firstTabStop) { $lastTabStop.focus(); } } else { if (document.activeElement === $lastTabStop) { $firstTabStop.focus(); } } } if (e.keyCode === 27) { // escape Key closeFullScreenModal();} }
  • 40. Keyboard trapping by using an array of focusable items (sample) 40
  • 41. Benefits for developers • Meets all Requirements • Saves development time • Beginner accessibility developers can leverage compliant code examples • Extendable code packages saves time, and defects • Positive user experience 41
  • 42. Summary ● Style Guide and Pattern Library can: – saves development time coding interactive web elements from scratch – improve accessibility and decrease the defects found during the product life cycle – Allows for a UX standard as well as accessibility standard. – Meet all requirements 42
  • 46. Additional Example 1 - Color: Color contrast passes Accessibility requirements Give clear guidelines to use colors for specific elements 46
  • 47. Color Standard Made Simple .link_element:hover { background-color:$interactive-hover-color; } 47