SlideShare une entreprise Scribd logo
Axe-matchers gem for
automated accessibility testing
Presented by Charlie Morris
Penn State University Libraries
Blacklight Virtual Summit hosted by Triangle Research Libraries Network
October 8, 2020
Worries list
• Performance
• User experience
• Test coverage
• Keeping hosting costs low
• Observability
• DevOps
• “Good data”
• Project management strategies
• You could probably add 10 or 20 more
(Surprisingly) Easy to lose in this shuffle
• Accessibility
(you know, the federal law and overall right-thing-to-do for your
users)
Existing options for accessibility (a11y) testing
• Site auditing tools for after-the-act scanning of your site (e.g.,
SiteImprove)
• Browser plugins for auditing pages on-the-fly one-by-one (e.g., WAVE)
• Expert evaluation (e.g., having a designated “accessibility expert” on
staff)
• Automated testing per build of your application: axe-matchers
Introducing the axe-matchers gem
• Maintained by Deque Labs
• Gem at https://github.com/dequelabs/axe-matchers
• Basically an a11y lint tool
• Tests for the following:
• WCAG 2.0 Level A & AA Rules
• WCAG 2.1 Level A & AA Rules
• “Best Practices Rules”
• ”Experimental Rules”
• See https://github.com/dequelabs/axe-core/blob/master/doc/rule-
descriptions.md
How it works (assuming Rails)
• Assuming:
• Ruby on Rails with rspec for testing
• Add and install the gem
• Require the gem in your spec_helper or rails_helper ruby files
• Add a be_accessible matcher to your test
See example of integrating to codebase
• Commit to myaccount repo
• Feature spec:
RSpec.describe 'Fines', type: :feature do
it 'is accessible', js: true do
visit fines_path
expect(page).to be_accessible
end
end
Failure reports
• Clear
• Short
• Link to more details
Violation report example
Found 4 accessibility violations:
1) color-contrast: Elements must have sufficient color contrast (serious)
https://dequeuniversity.com/rules/axe/3.5/color-contrast?application=axeAPI
The following 4 nodes violate this rule:
Selector: #bookmarks_nav
HTML: <a id="bookmarks_nav" class="nav-link" href="/bookmarks">Bookmarks<span
class="badge badge-secondary" data-role="bookmark-counter">0</span></a>
Fix any of the following:
- Element has insufficient color contrast of 3.74 (foreground color: #8fa1be, background
color: #1f427c, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1
Thanks for listening

Contenu connexe

Tendances

Tendances (16)

Api testing libraries using java script an overview
Api testing libraries using java script   an overviewApi testing libraries using java script   an overview
Api testing libraries using java script an overview
 
Laravel - The PHP Framework for Web Artisans
Laravel - The PHP Framework for Web ArtisansLaravel - The PHP Framework for Web Artisans
Laravel - The PHP Framework for Web Artisans
 
Gradle
GradleGradle
Gradle
 
RubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipelineRubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipeline
 
W4a achecker presentation
W4a achecker presentationW4a achecker presentation
W4a achecker presentation
 
Ch. 11 deploying
Ch. 11 deployingCh. 11 deploying
Ch. 11 deploying
 
Introduce flux & react in practice
Introduce flux & react in practiceIntroduce flux & react in practice
Introduce flux & react in practice
 
Sharing the pain using Protractor
Sharing the pain using ProtractorSharing the pain using Protractor
Sharing the pain using Protractor
 
How to Build Single Page HTML5 Apps that Scale
How to Build Single Page HTML5 Apps that ScaleHow to Build Single Page HTML5 Apps that Scale
How to Build Single Page HTML5 Apps that Scale
 
Mini-Training: Let's have a rest
Mini-Training: Let's have a restMini-Training: Let's have a rest
Mini-Training: Let's have a rest
 
XpDays - Automated testing of responsive design (GalenFramework)
XpDays - Automated testing of responsive design (GalenFramework)XpDays - Automated testing of responsive design (GalenFramework)
XpDays - Automated testing of responsive design (GalenFramework)
 
Better End-to-End Testing with Page Objects Model using Protractor
Better End-to-End Testing with Page Objects Model using ProtractorBetter End-to-End Testing with Page Objects Model using Protractor
Better End-to-End Testing with Page Objects Model using Protractor
 
Protractor training
Protractor trainingProtractor training
Protractor training
 
Building reliable web applications using Cypress
Building reliable web applications using CypressBuilding reliable web applications using Cypress
Building reliable web applications using Cypress
 
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
 
Rails review
Rails reviewRails review
Rails review
 

Similaire à Axe-matchers gem for automated accessibility testing

Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Nilesh Panchal
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
Avi Kedar
 
Innovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open InterfacesInnovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open Interfaces
Steve Speicher
 
Ruby on Rails : 簡介與入門
Ruby on Rails : 簡介與入門Ruby on Rails : 簡介與入門
Ruby on Rails : 簡介與入門
Wen-Tien Chang
 
Rapid API Development ArangoDB Foxx
Rapid API Development ArangoDB FoxxRapid API Development ArangoDB Foxx
Rapid API Development ArangoDB Foxx
Michael Hackstein
 

Similaire à Axe-matchers gem for automated accessibility testing (20)

Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
 
Demystifying Ruby on Rails
Demystifying Ruby on Rails Demystifying Ruby on Rails
Demystifying Ruby on Rails
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
 
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
 
EmberCLI Rails: An Integration Love Story.
EmberCLI Rails: An Integration Love Story.EmberCLI Rails: An Integration Love Story.
EmberCLI Rails: An Integration Love Story.
 
Tools. Techniques. Trouble?
Tools. Techniques. Trouble?Tools. Techniques. Trouble?
Tools. Techniques. Trouble?
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at Scale
 
Innovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open InterfacesInnovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open Interfaces
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Ruby on Rails : 簡介與入門
Ruby on Rails : 簡介與入門Ruby on Rails : 簡介與入門
Ruby on Rails : 簡介與入門
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3
 
Untying the Knots of Web Dev with Internet Explorer
Untying the Knots of Web Dev with Internet Explorer Untying the Knots of Web Dev with Internet Explorer
Untying the Knots of Web Dev with Internet Explorer
 
Enterprise Software Architecture styles
Enterprise Software Architecture stylesEnterprise Software Architecture styles
Enterprise Software Architecture styles
 
Frontend as a first class citizen
Frontend as a first class citizenFrontend as a first class citizen
Frontend as a first class citizen
 
Continuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CIContinuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CI
 
Ruby on Rails Penetration Testing
Ruby on Rails Penetration TestingRuby on Rails Penetration Testing
Ruby on Rails Penetration Testing
 
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
 
Enterprise WordPress - Performance, Scalability and Redundancy
Enterprise WordPress - Performance, Scalability and RedundancyEnterprise WordPress - Performance, Scalability and Redundancy
Enterprise WordPress - Performance, Scalability and Redundancy
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
 
Rapid API Development ArangoDB Foxx
Rapid API Development ArangoDB FoxxRapid API Development ArangoDB Foxx
Rapid API Development ArangoDB Foxx
 

Plus de Charlie Morris

Boiling a Frog: A Responsive Update
Boiling a Frog: A Responsive UpdateBoiling a Frog: A Responsive Update
Boiling a Frog: A Responsive Update
Charlie Morris
 
Google Analytics Basics for NCSU Libraries' Staff
Google Analytics Basics for NCSU Libraries' StaffGoogle Analytics Basics for NCSU Libraries' Staff
Google Analytics Basics for NCSU Libraries' Staff
Charlie Morris
 

Plus de Charlie Morris (12)

Dynamic sitemaps
Dynamic sitemapsDynamic sitemaps
Dynamic sitemaps
 
Content & Features Reno: Less Is More
Content & Features Reno: Less Is MoreContent & Features Reno: Less Is More
Content & Features Reno: Less Is More
 
Less is more: Getting Real About Content and Features
Less is more: Getting Real About Content and Features Less is more: Getting Real About Content and Features
Less is more: Getting Real About Content and Features
 
Drupal, git and sanity
Drupal, git and sanityDrupal, git and sanity
Drupal, git and sanity
 
With Drupal Your Website is an API
With Drupal Your Website is an APIWith Drupal Your Website is an API
With Drupal Your Website is an API
 
Responsive Approaches: Redesigning websites for Duke, NCSU & UNC Libraries
Responsive Approaches: Redesigning websites for Duke, NCSU & UNC LibrariesResponsive Approaches: Redesigning websites for Duke, NCSU & UNC Libraries
Responsive Approaches: Redesigning websites for Duke, NCSU & UNC Libraries
 
Boiling a Frog: A Responsive Update
Boiling a Frog: A Responsive UpdateBoiling a Frog: A Responsive Update
Boiling a Frog: A Responsive Update
 
Viral Outreach: Blending Online and Offline Social Networks
Viral Outreach: Blending Online and Offline Social NetworksViral Outreach: Blending Online and Offline Social Networks
Viral Outreach: Blending Online and Offline Social Networks
 
Creating the Hunt Partners App: Cross-Departmental Rapid Response
Creating the Hunt Partners App: Cross-Departmental Rapid ResponseCreating the Hunt Partners App: Cross-Departmental Rapid Response
Creating the Hunt Partners App: Cross-Departmental Rapid Response
 
Google Analytics Basics for NCSU Libraries' Staff
Google Analytics Basics for NCSU Libraries' StaffGoogle Analytics Basics for NCSU Libraries' Staff
Google Analytics Basics for NCSU Libraries' Staff
 
Exposing Tech Lending Device Availability Data
Exposing Tech Lending Device Availability DataExposing Tech Lending Device Availability Data
Exposing Tech Lending Device Availability Data
 
5 Ways to Make Use of Your Google Analytics
5 Ways to Make Use of Your Google Analytics5 Ways to Make Use of Your Google Analytics
5 Ways to Make Use of Your Google Analytics
 

Dernier

Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Dernier (20)

Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Transforming The New York Times: Empowering Evolution through UX
Transforming The New York Times: Empowering Evolution through UXTransforming The New York Times: Empowering Evolution through UX
Transforming The New York Times: Empowering Evolution through UX
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
The architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdfThe architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdf
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Server-Driven User Interface (SDUI) at Priceline
Server-Driven User Interface (SDUI) at PricelineServer-Driven User Interface (SDUI) at Priceline
Server-Driven User Interface (SDUI) at Priceline
 

Axe-matchers gem for automated accessibility testing

  • 1. Axe-matchers gem for automated accessibility testing Presented by Charlie Morris Penn State University Libraries Blacklight Virtual Summit hosted by Triangle Research Libraries Network October 8, 2020
  • 2. Worries list • Performance • User experience • Test coverage • Keeping hosting costs low • Observability • DevOps • “Good data” • Project management strategies • You could probably add 10 or 20 more
  • 3. (Surprisingly) Easy to lose in this shuffle • Accessibility (you know, the federal law and overall right-thing-to-do for your users)
  • 4. Existing options for accessibility (a11y) testing • Site auditing tools for after-the-act scanning of your site (e.g., SiteImprove) • Browser plugins for auditing pages on-the-fly one-by-one (e.g., WAVE) • Expert evaluation (e.g., having a designated “accessibility expert” on staff) • Automated testing per build of your application: axe-matchers
  • 5. Introducing the axe-matchers gem • Maintained by Deque Labs • Gem at https://github.com/dequelabs/axe-matchers • Basically an a11y lint tool • Tests for the following: • WCAG 2.0 Level A & AA Rules • WCAG 2.1 Level A & AA Rules • “Best Practices Rules” • ”Experimental Rules” • See https://github.com/dequelabs/axe-core/blob/master/doc/rule- descriptions.md
  • 6. How it works (assuming Rails) • Assuming: • Ruby on Rails with rspec for testing • Add and install the gem • Require the gem in your spec_helper or rails_helper ruby files • Add a be_accessible matcher to your test
  • 7. See example of integrating to codebase • Commit to myaccount repo • Feature spec: RSpec.describe 'Fines', type: :feature do it 'is accessible', js: true do visit fines_path expect(page).to be_accessible end end
  • 8. Failure reports • Clear • Short • Link to more details
  • 9. Violation report example Found 4 accessibility violations: 1) color-contrast: Elements must have sufficient color contrast (serious) https://dequeuniversity.com/rules/axe/3.5/color-contrast?application=axeAPI The following 4 nodes violate this rule: Selector: #bookmarks_nav HTML: <a id="bookmarks_nav" class="nav-link" href="/bookmarks">Bookmarks<span class="badge badge-secondary" data-role="bookmark-counter">0</span></a> Fix any of the following: - Element has insufficient color contrast of 3.74 (foreground color: #8fa1be, background color: #1f427c, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1