SlideShare a Scribd company logo
1 of 13
Download to read offline
Accessibility Testing using Axe
Accessibility Testing using Axe
© RapidValue Solutions 2
How to Achieve Accessibility Testing using Axe
You can achieve Accessibility Testing with the help of the following methods/approaches, using
Accessibility Testing engine Axe,
 Axe Browser Extension
 Axe Command Line
 Axe Core Library
Axe Browser Extension
This approach is a pretty straight-forward to perform the Accessibility Testing. Using the Axe browser
extension, you can directly analyse and see the violation details per web page. The Axe browser extension is
available for Google Chrome, Firefox and Edge browser. Following are the direct links to get the browser
extension based on your browser type,
 Google Chrome: https://chrome.google.com/webstore/detail/axe-web-accessibility-
tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US
 Firefox: https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/
 Edge: https://microsoftedge.microsoft.com/addons/detail/axe-web-accessibility-
t/kcenlimkmjjkdfcaleembgmldmnnlfkn
Here, the Accessibility Testing approach using Firefox browser has been shared for you. When you load the
above Axe browser extension in Firefox, you will get a page like this below,
Accessibility Testing using Axe
© RapidValue Solutions 3
You can add this extension and restart Firefox browser. In the next step, you can load the website that you
need to perform the Accessibility Testing and open the developer tool in the browser (press F12). Go to the
Axe tab and you can see below screen,
Click on the ANALYZE button to begin the test. After few seconds, you will get the result that includes
violation details, issue description, issue information, issue tags. You need to manually go through each and
every violation and share the details with development team to improve the accessibility of your website.
Accessibility Testing using Axe
© RapidValue Solutions 4
Axe Command Line
Axe Command Line approach is another way to test the accessibility and identify the violations. This can be
achieved with support of NodeJS and node package manager (npm). You must install NodeJS in your
system prior to start this way of accessibility testing. Once NodeJS is installed, one can install Axe-core by
the following command:
npm install axe-cli –g
This installs Axe globally and can be accessed from any folder in the file system. Once installed, to test your
web page, use the following command,
Axe web-page-url --timeout=120 --save results.json --tags wcag2a
The above command will test the page at the specific URL and save the results in a file called results.json.
The value of the time out can be changed. The tags option specifies the rules to be run. There are several
tags supported out of the box by Axe framework. For the above example, you are running the WCAG2.0
rules at level A. You can use the same website that used during Axe browser extension and see the output.
Axe www.rapidvaluesolutions.com --timeout=120 --save results.json --tags wcag2a
Accessibility Testing using Axe
© RapidValue Solutions 5
A detailed report is saved in file results.json (available in your system user folder). Open this file in a JSON
editor. Drill down to the violations attribute. The details of the Accessibility violations along with
suggestions for fixes will be seen.
Accessibility Testing using Axe
© RapidValue Solutions 6
Axe Core Library
This is one of the advanced approaches to perform the accessibility testing and identify the violations. In this
approach, you can use Axe core library and automate the accessibility testing in between your functional
regression automation. In the approach, you are using the Selenium dependency of com.deque.html.axe-
core, and analyse method of AxeBuilder class. Once you create Accessibility Testing suite, you can
configure in CI/CD pipelines for continuous testing.
Pre-requisites:
Following are the prerequisites to start Accessibility Testing,
 Install Java SDK 8 and above.
 Install Eclipse or IntelliJ IDEA IDEs.
 Following maven dependencies:
o testng
o selenium-java
o selenium-server
o selenium from the group com.deque.html.axe-core
o jackson-databind
o jackson-dataformat-csv
o poi-ooxml-schemas
o poi-ooxml
o poi
Accessibility Testing using Axe
© RapidValue Solutions 7
Step-by-step Approach:
Step 1: Create a maven project and add the above dependencies in pom.xml of the project.
Step 2: Create a Java class AccessibilityTestHelper to keep the logic to track violations. Implement
following methods:
 trackViolations – This is a public method that can be used in your test classes to track
the violations. In this method, you use analyze method of AxeBuilder class to identify
the violations. After that, create an excel file if not exist with help of createExcelFile
method. Once the file gets created, writing the violation details (violation id, description,
impact, help, help URL, and WCAG tags) into the file using writeToExcel method. Also,
there is logic to track violations in JSON and text files. The actual implementations are
below:
/**
* Method to track the violations using AxeBuilder support
*
* @author sanojs
* @param driver
* @param pageName
*/
public void trackViolations(WebDriver driver, String pageName) {
Results violationResults;
try {
violationResults = new AxeBuilder().analyze(driver);
if (!new File(System.getProperty("user.dir") +
"Results").exists()) {
(new File(System.getProperty("user.dir") +
"Results")).mkdir();
}
int j = 2;
String filePath = System.getProperty("user.dir") +
"ResultsAccessibilityTestReport.xlsx";
createExcelFile(filePath);
for (int i = 0; i < violationResults.getViolations().size();
i++) {
writeToExcel(filePath, pageName, 1, j,
violationResults.getViolations().get(i).getId());
writeToExcel(filePath, pageName, 2, j,
violationResults.getViolations().get(i).getDescription());
writeToExcel(filePath, pageName, 3, j,
violationResults.getViolations().get(i).getImpact());
writeToExcel(filePath, pageName, 4, j,
violationResults.getViolations().get(i).getHelp());
writeToExcel(filePath, pageName, 5, j,
violationResults.getViolations().get(i).getHelpUrl());
writeToExcel(filePath, pageName, 6, j,
violationResults.getViolations().get(i).getTags().toString());
j++;
}
AxeReporter.writeResultsToJsonFile(
System.getProperty("user.dir") + "Results" +
pageName + "_" + getCurrentDateAndTime(),
violationResults);
Accessibility Testing using Axe
© RapidValue Solutions 8
AxeReporter.writeResultsToTextFile(
System.getProperty("user.dir") + "Results" +
pageName + "_" + getCurrentDateAndTime(),
violationResults.getViolations());
} catch (Exception e) {
e.printStackTrace();
}
}
 createExcelFile – this is a private method that helps to create an excel file if not exists.
The file will be created at the project level. The actual implementations are below:
/**
* Method to create a new excel file
*
* @author sanojs
* @param filePath
* @return
*/
private XSSFWorkbook createExcelFile(String filePath) {
XSSFWorkbook workbook = null;
try {
File fileName;
FileOutputStream fos = null;
File file = new File(filePath);
if (!file.exists()) {
fileName = new File(filePath);
fos = new FileOutputStream(fileName);
workbook = new XSSFWorkbook();
workbook.createSheet("Instructions");
XSSFSheet sheet = workbook.getSheetAt(0);
Row header = sheet.createRow(0);
header.createCell(0).setCellValue("Accessibility
Testing Report");
XSSFCellStyle style = workbook.createCellStyle();
style.setBorderTop((short) 6);
style.setBorderBottom((short) 2);
style.setBorderRight((short) 2);
XSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) 15);
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
style.setFont(font);
header.getCell(0).setCellStyle(style);
Row row = sheet.getRow(0);
sheet.autoSizeColumn(0);
sheet.autoSizeColumn(1);
row = sheet.getRow(1);
if (row == null)
row = sheet.createRow(1);
Cell cell = row.getCell(0);
if (cell == null)
cell = row.createCell(0);
cell.setCellValue("Please go through following tabs to
know the violations");
workbook.write(fos);
fos.flush();
Accessibility Testing using Axe
© RapidValue Solutions 9
fos.close();
workbook.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return workbook;
}
 writeToExcel – this is a private method that helps to write the violations into the created
excel file. The actual implementations are below:
/**
* Method to write the violations in a excel report
*
* @author sanojs
* @param sheetName
* @param columnIndex
* @param rowNum
* @param data
* @return
*/
private boolean writeToExcel(String filePath, String sheetName, int
columnIndex, int rowNum, String data) {
InputStream in = null;
XSSFWorkbook wb = null;
Sheet newSheet = null;
FileOutputStream fileOutStream = null;
try {
if (filePath == null || filePath.trim().equals(""))
throw (new Exception());
if (filePath.endsWith(".xlsx") || filePath.endsWith(".xls")) {
in = new FileInputStream(filePath);
wb = new XSSFWorkbook(in);
} else {
throw (new Exception());
}
if (rowNum <= 0)
throw (new Exception());
try {
newSheet = wb.getSheet(sheetName);
if (newSheet != null) {
throw new Exception("Sheet Already exist...");
}
newSheet = wb.createSheet(sheetName);
} catch (Exception e) {
}
int index = wb.getSheetIndex(newSheet);
if (index == -1)
throw (new Exception());
XSSFCellStyle style = wb.createCellStyle();
style.setBorderTop((short) 6);
style.setBorderBottom((short) 1);
XSSFFont font = wb.createFont();
font.setFontHeightInPoints((short) 15);
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
style.setFont(font);
XSSFSheet sheet = wb.getSheetAt(index);
Accessibility Testing using Axe
© RapidValue Solutions 10
Row header = sheet.createRow(0);
header.createCell(0).setCellValue("Violation ID");
header.createCell(1).setCellValue("Violation Description");
header.createCell(2).setCellValue("Violation Impact");
header.createCell(3).setCellValue("Violation Help");
header.createCell(4).setCellValue("Violation Help URL");
header.createCell(5).setCellValue("Violation Issue Tags");
for (int j = 0; j <= 5; j++)
header.getCell(j).setCellStyle(style);
Row row = sheet.getRow(0);
if (columnIndex < 1)
throw (new Exception());
sheet.autoSizeColumn(columnIndex - 1);
row = sheet.getRow(rowNum - 1);
if (row == null)
row = sheet.createRow(rowNum - 1);
Cell cell = row.getCell(columnIndex - 1);
if (cell == null)
cell = row.createCell(columnIndex - 1);
cell.setCellValue(data);
XSSFFormulaEvaluator.evaluateAllFormulaCells(wb);
fileOutStream = new FileOutputStream(filePath);
wb.write(fileOutStream);
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
try {
wb.close();
fileOutStream.close();
in.close();
} catch (Exception e) {
}
}
return true;
}
 getCurrentDateAndTime – This is a private method that helps to generate current
timestamp that used suffix to the JSON and text files. The actual implementations are
below:
/**
* Method to get the current date and time
*
* @author sanojs
* @return
*/
private String getCurrentDateAndTime() {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
DateFormat timeFormat = new SimpleDateFormat("HH-mm-ss");
Date date = new Date();
String currdate = dateFormat.format(date);
String currtime = timeFormat.format(date);
return currdate + "_" + currtime;
}
Accessibility Testing using Axe
© RapidValue Solutions 11
Step 3: Create a TestNG class SampleAccessibilityTest with logic to start the driver session and
create a test case, let’s say accessibilityTesting. In the test case, you just need to load the browser
that you need to perform the Accessibility Testing and after that call the method trackViolations.
The actual implementations are below:
@BeforeClass
public void setUp() throws InterruptedException {
try {
ChromeDriverService chromeservices = new ChromeDriverService.Builder()
.usingDriverExecutable(new File("path to your driver
executable")).usingAnyFreePort().build();
driver = new ChromeDriver(chromeservices);
} catch (WebDriverException e) {
e.printStackTrace();
}
}
@Test
public void accessibilityTesting() {
try {
driver.get("https://www.rapidvaluesolutions.com/");
new AccessibilityTestHelper().trackViolations(driver, "Home Page");
} catch (Exception e) {
e.printStackTrace();
}
}
Step 4: Execute above test case and see the reports in the format of excel, JSON and text files. These
reports will be generated in Results folder of the project structure. Based on the above
trackViolations method, a sheet Home Page will be created in the excel report to track all the
violations. If you are using trackViolations method for different pages of your web application, it
will create new sheets to track the violations of your different pages. Below is the project structure:
Accessibility Testing using Axe
© RapidValue Solutions 12
Conclusion
Accessibility Testing is one of the important types of testing that add value to your business and deliver
user friendly applications. Axe Core is a very powerful framework that can help the team to build web
products that are inclusive.
In this article, different ways to test the Accessibility and the automation part have been discussed in full
length. Hope this throws some light on the concept of testing the Accessibility and the implementations.
Please try to utilize this while carrying out and utilizing Accessibility Testing.
By,
Sanoj S
Test Architect
Accessibility Testing using Axe
© RapidValue Solutions 13
About RapidValue
RapidValue is a global leader in digital product engineering solutions including mobility, omni-channel, IoT, AI, RPA
and cloud to enterprises worldwide. RapidValue offers its digital services to the world’s top brands, Fortune 1000
companies and innovative emerging start-ups. With offices in the United States, the United Kingdom, Germany and
India and operations spread across the Middle-East, Europe and Canada, RapidValue delivers enterprise services
and solutions across various industry verticals.
Disclaimer: This document contains information that is confidential and proprietary to RapidValue Solutions Inc. No
part of it may be used, circulated, quoted, or reproduced for distribution outside RapidValue. If you are not the
intended recipient of this report, you are hereby notified that the use, circulation, quoting, or reproducing of this report
is strictly prohibited and may be unlawful.
www.rapidvaluesolutions.com/blog
www.rapidvaluesolutions.com
+1 877.643.1850 contactus@rapidvaluesolutions.com
Disclaimer: This document contains information that
is confidential and proprietary to RapidValue
Solutions Inc. No part of it may be used, circulated,
quoted, or reproduced for distribution outside
RapidValue. If you are not the intended recipient of
this report, you are hereby notified that the use,
circulation, quoting, or reproducing of this report is
strictly prohibited and may be unlawful.

More Related Content

What's hot

Introduction To Web Accessibility
Introduction To Web AccessibilityIntroduction To Web Accessibility
Introduction To Web Accessibility
Steven Swafford
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page Application
KMS Technology
 

What's hot (20)

Introduction To Web Accessibility
Introduction To Web AccessibilityIntroduction To Web Accessibility
Introduction To Web Accessibility
 
Accessibilitytesting public
Accessibilitytesting publicAccessibilitytesting public
Accessibilitytesting public
 
Website Accessibility
Website AccessibilityWebsite Accessibility
Website Accessibility
 
Web Accessibility
Web AccessibilityWeb Accessibility
Web Accessibility
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page Application
 
Understanding and Supporting Web Accessibility
Understanding and Supporting Web AccessibilityUnderstanding and Supporting Web Accessibility
Understanding and Supporting Web Accessibility
 
Mobile Automation with Appium
Mobile Automation with AppiumMobile Automation with Appium
Mobile Automation with Appium
 
web development.pptx
web development.pptxweb development.pptx
web development.pptx
 
Automating Accessibility Tests: Web is for Everyone (by Manoj Kumar)
Automating Accessibility Tests: Web is for Everyone (by Manoj Kumar)Automating Accessibility Tests: Web is for Everyone (by Manoj Kumar)
Automating Accessibility Tests: Web is for Everyone (by Manoj Kumar)
 
Angular tutorial
Angular tutorialAngular tutorial
Angular tutorial
 
Angular directives and pipes
Angular directives and pipesAngular directives and pipes
Angular directives and pipes
 
How to go about testing in React?
How to go about testing in React? How to go about testing in React?
How to go about testing in React?
 
Getting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App TestingGetting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App Testing
 
Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...
Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...
Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...
 
Session on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaSession on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh Gundecha
 
QSpiders - Automation using Selenium
QSpiders - Automation using SeleniumQSpiders - Automation using Selenium
QSpiders - Automation using Selenium
 
What is WebElement in Selenium | Web Elements & Element Locators | Edureka
What is WebElement in Selenium | Web Elements & Element Locators | EdurekaWhat is WebElement in Selenium | Web Elements & Element Locators | Edureka
What is WebElement in Selenium | Web Elements & Element Locators | Edureka
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
 
User Testing for Accessibility
User Testing for AccessibilityUser Testing for Accessibility
User Testing for Accessibility
 
An Intro into webpack
An Intro into webpackAn Intro into webpack
An Intro into webpack
 

Similar to Accessibility Testing using Axe

Compatibility Detector Tool of Chrome extensions
Compatibility Detector Tool of Chrome extensionsCompatibility Detector Tool of Chrome extensions
Compatibility Detector Tool of Chrome extensions
Kai Cui
 

Similar to Accessibility Testing using Axe (20)

Qa process
Qa processQa process
Qa process
 
Nodejs.meetup
Nodejs.meetupNodejs.meetup
Nodejs.meetup
 
Webpack
Webpack Webpack
Webpack
 
Building Web Sites that Work Everywhere
Building Web Sites that Work EverywhereBuilding Web Sites that Work Everywhere
Building Web Sites that Work Everywhere
 
Qa process
Qa processQa process
Qa process
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Testing Ajax Web Applications
Testing Ajax Web ApplicationsTesting Ajax Web Applications
Testing Ajax Web Applications
 
C sharp and asp.net interview questions
C sharp and asp.net interview questionsC sharp and asp.net interview questions
C sharp and asp.net interview questions
 
Pragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScriptPragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScript
 
jQuery Tips Tricks Trivia
jQuery Tips Tricks TriviajQuery Tips Tricks Trivia
jQuery Tips Tricks Trivia
 
Selenium RC: Automated Testing of Modern Web Applications
Selenium RC: Automated Testing of Modern Web ApplicationsSelenium RC: Automated Testing of Modern Web Applications
Selenium RC: Automated Testing of Modern Web Applications
 
Protractor framework architecture with example
Protractor framework architecture with exampleProtractor framework architecture with example
Protractor framework architecture with example
 
Serverless 프레임워크로 Nuxt 앱 배포하기
Serverless 프레임워크로 Nuxt 앱 배포하기Serverless 프레임워크로 Nuxt 앱 배포하기
Serverless 프레임워크로 Nuxt 앱 배포하기
 
Ajax toolkit framework
Ajax toolkit frameworkAjax toolkit framework
Ajax toolkit framework
 
Selenium.pptx
Selenium.pptxSelenium.pptx
Selenium.pptx
 
Javascript-heavy Salesforce Applications
Javascript-heavy Salesforce ApplicationsJavascript-heavy Salesforce Applications
Javascript-heavy Salesforce Applications
 
Webdriver.io
Webdriver.io Webdriver.io
Webdriver.io
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
 
Compatibility Detector Tool of Chrome extensions
Compatibility Detector Tool of Chrome extensionsCompatibility Detector Tool of Chrome extensions
Compatibility Detector Tool of Chrome extensions
 
Cm5 secure code_training_1day_system configuration
Cm5 secure code_training_1day_system configurationCm5 secure code_training_1day_system configuration
Cm5 secure code_training_1day_system configuration
 

More from RapidValue

The Definitive Guide to Implementing Shift Left Testing in QA
The Definitive Guide to Implementing Shift Left Testing in QAThe Definitive Guide to Implementing Shift Left Testing in QA
The Definitive Guide to Implementing Shift Left Testing in QA
RapidValue
 

More from RapidValue (20)

How to Build a Micro-Application using Single-Spa
How to Build a Micro-Application using Single-SpaHow to Build a Micro-Application using Single-Spa
How to Build a Micro-Application using Single-Spa
 
Play with Jenkins Pipeline
Play with Jenkins PipelinePlay with Jenkins Pipeline
Play with Jenkins Pipeline
 
Guide to Generate Extent Report in Kotlin
Guide to Generate Extent Report in KotlinGuide to Generate Extent Report in Kotlin
Guide to Generate Extent Report in Kotlin
 
Automation in Digital Cloud Labs
Automation in Digital Cloud LabsAutomation in Digital Cloud Labs
Automation in Digital Cloud Labs
 
Microservices Architecture - Top Trends & Key Business Benefits
Microservices Architecture -  Top Trends & Key Business BenefitsMicroservices Architecture -  Top Trends & Key Business Benefits
Microservices Architecture - Top Trends & Key Business Benefits
 
Uploading Data Using Oracle Web ADI
Uploading Data Using Oracle Web ADIUploading Data Using Oracle Web ADI
Uploading Data Using Oracle Web ADI
 
Appium Automation with Kotlin
Appium Automation with KotlinAppium Automation with Kotlin
Appium Automation with Kotlin
 
Build UI of the Future with React 360
Build UI of the Future with React 360Build UI of the Future with React 360
Build UI of the Future with React 360
 
Python Google Cloud Function with CORS
Python Google Cloud Function with CORSPython Google Cloud Function with CORS
Python Google Cloud Function with CORS
 
Real-time Automation Result in Slack Channel
Real-time Automation Result in Slack ChannelReal-time Automation Result in Slack Channel
Real-time Automation Result in Slack Channel
 
Automation Testing with KATALON Cucumber BDD
Automation Testing with KATALON Cucumber BDDAutomation Testing with KATALON Cucumber BDD
Automation Testing with KATALON Cucumber BDD
 
How to Implement Micro Frontend Architecture using Angular Framework
How to Implement Micro Frontend Architecture using Angular FrameworkHow to Implement Micro Frontend Architecture using Angular Framework
How to Implement Micro Frontend Architecture using Angular Framework
 
Video Recording of Selenium Automation Flows
Video Recording of Selenium Automation FlowsVideo Recording of Selenium Automation Flows
Video Recording of Selenium Automation Flows
 
JMeter JMX Script Creation via BlazeMeter
JMeter JMX Script Creation via BlazeMeterJMeter JMX Script Creation via BlazeMeter
JMeter JMX Script Creation via BlazeMeter
 
Migration to Extent Report 4
Migration to Extent Report 4Migration to Extent Report 4
Migration to Extent Report 4
 
The Definitive Guide to Implementing Shift Left Testing in QA
The Definitive Guide to Implementing Shift Left Testing in QAThe Definitive Guide to Implementing Shift Left Testing in QA
The Definitive Guide to Implementing Shift Left Testing in QA
 
Data Seeding via Parameterized API Requests
Data Seeding via Parameterized API RequestsData Seeding via Parameterized API Requests
Data Seeding via Parameterized API Requests
 
Test Case Creation in Katalon Studio
Test Case Creation in Katalon StudioTest Case Creation in Katalon Studio
Test Case Creation in Katalon Studio
 
How to Perform Memory Leak Test Using Valgrind
How to Perform Memory Leak Test Using ValgrindHow to Perform Memory Leak Test Using Valgrind
How to Perform Memory Leak Test Using Valgrind
 
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueDevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
 

Recently uploaded

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 

Recently uploaded (20)

Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 

Accessibility Testing using Axe

  • 2. Accessibility Testing using Axe © RapidValue Solutions 2 How to Achieve Accessibility Testing using Axe You can achieve Accessibility Testing with the help of the following methods/approaches, using Accessibility Testing engine Axe,  Axe Browser Extension  Axe Command Line  Axe Core Library Axe Browser Extension This approach is a pretty straight-forward to perform the Accessibility Testing. Using the Axe browser extension, you can directly analyse and see the violation details per web page. The Axe browser extension is available for Google Chrome, Firefox and Edge browser. Following are the direct links to get the browser extension based on your browser type,  Google Chrome: https://chrome.google.com/webstore/detail/axe-web-accessibility- tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US  Firefox: https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/  Edge: https://microsoftedge.microsoft.com/addons/detail/axe-web-accessibility- t/kcenlimkmjjkdfcaleembgmldmnnlfkn Here, the Accessibility Testing approach using Firefox browser has been shared for you. When you load the above Axe browser extension in Firefox, you will get a page like this below,
  • 3. Accessibility Testing using Axe © RapidValue Solutions 3 You can add this extension and restart Firefox browser. In the next step, you can load the website that you need to perform the Accessibility Testing and open the developer tool in the browser (press F12). Go to the Axe tab and you can see below screen, Click on the ANALYZE button to begin the test. After few seconds, you will get the result that includes violation details, issue description, issue information, issue tags. You need to manually go through each and every violation and share the details with development team to improve the accessibility of your website.
  • 4. Accessibility Testing using Axe © RapidValue Solutions 4 Axe Command Line Axe Command Line approach is another way to test the accessibility and identify the violations. This can be achieved with support of NodeJS and node package manager (npm). You must install NodeJS in your system prior to start this way of accessibility testing. Once NodeJS is installed, one can install Axe-core by the following command: npm install axe-cli –g This installs Axe globally and can be accessed from any folder in the file system. Once installed, to test your web page, use the following command, Axe web-page-url --timeout=120 --save results.json --tags wcag2a The above command will test the page at the specific URL and save the results in a file called results.json. The value of the time out can be changed. The tags option specifies the rules to be run. There are several tags supported out of the box by Axe framework. For the above example, you are running the WCAG2.0 rules at level A. You can use the same website that used during Axe browser extension and see the output. Axe www.rapidvaluesolutions.com --timeout=120 --save results.json --tags wcag2a
  • 5. Accessibility Testing using Axe © RapidValue Solutions 5 A detailed report is saved in file results.json (available in your system user folder). Open this file in a JSON editor. Drill down to the violations attribute. The details of the Accessibility violations along with suggestions for fixes will be seen.
  • 6. Accessibility Testing using Axe © RapidValue Solutions 6 Axe Core Library This is one of the advanced approaches to perform the accessibility testing and identify the violations. In this approach, you can use Axe core library and automate the accessibility testing in between your functional regression automation. In the approach, you are using the Selenium dependency of com.deque.html.axe- core, and analyse method of AxeBuilder class. Once you create Accessibility Testing suite, you can configure in CI/CD pipelines for continuous testing. Pre-requisites: Following are the prerequisites to start Accessibility Testing,  Install Java SDK 8 and above.  Install Eclipse or IntelliJ IDEA IDEs.  Following maven dependencies: o testng o selenium-java o selenium-server o selenium from the group com.deque.html.axe-core o jackson-databind o jackson-dataformat-csv o poi-ooxml-schemas o poi-ooxml o poi
  • 7. Accessibility Testing using Axe © RapidValue Solutions 7 Step-by-step Approach: Step 1: Create a maven project and add the above dependencies in pom.xml of the project. Step 2: Create a Java class AccessibilityTestHelper to keep the logic to track violations. Implement following methods:  trackViolations – This is a public method that can be used in your test classes to track the violations. In this method, you use analyze method of AxeBuilder class to identify the violations. After that, create an excel file if not exist with help of createExcelFile method. Once the file gets created, writing the violation details (violation id, description, impact, help, help URL, and WCAG tags) into the file using writeToExcel method. Also, there is logic to track violations in JSON and text files. The actual implementations are below: /** * Method to track the violations using AxeBuilder support * * @author sanojs * @param driver * @param pageName */ public void trackViolations(WebDriver driver, String pageName) { Results violationResults; try { violationResults = new AxeBuilder().analyze(driver); if (!new File(System.getProperty("user.dir") + "Results").exists()) { (new File(System.getProperty("user.dir") + "Results")).mkdir(); } int j = 2; String filePath = System.getProperty("user.dir") + "ResultsAccessibilityTestReport.xlsx"; createExcelFile(filePath); for (int i = 0; i < violationResults.getViolations().size(); i++) { writeToExcel(filePath, pageName, 1, j, violationResults.getViolations().get(i).getId()); writeToExcel(filePath, pageName, 2, j, violationResults.getViolations().get(i).getDescription()); writeToExcel(filePath, pageName, 3, j, violationResults.getViolations().get(i).getImpact()); writeToExcel(filePath, pageName, 4, j, violationResults.getViolations().get(i).getHelp()); writeToExcel(filePath, pageName, 5, j, violationResults.getViolations().get(i).getHelpUrl()); writeToExcel(filePath, pageName, 6, j, violationResults.getViolations().get(i).getTags().toString()); j++; } AxeReporter.writeResultsToJsonFile( System.getProperty("user.dir") + "Results" + pageName + "_" + getCurrentDateAndTime(), violationResults);
  • 8. Accessibility Testing using Axe © RapidValue Solutions 8 AxeReporter.writeResultsToTextFile( System.getProperty("user.dir") + "Results" + pageName + "_" + getCurrentDateAndTime(), violationResults.getViolations()); } catch (Exception e) { e.printStackTrace(); } }  createExcelFile – this is a private method that helps to create an excel file if not exists. The file will be created at the project level. The actual implementations are below: /** * Method to create a new excel file * * @author sanojs * @param filePath * @return */ private XSSFWorkbook createExcelFile(String filePath) { XSSFWorkbook workbook = null; try { File fileName; FileOutputStream fos = null; File file = new File(filePath); if (!file.exists()) { fileName = new File(filePath); fos = new FileOutputStream(fileName); workbook = new XSSFWorkbook(); workbook.createSheet("Instructions"); XSSFSheet sheet = workbook.getSheetAt(0); Row header = sheet.createRow(0); header.createCell(0).setCellValue("Accessibility Testing Report"); XSSFCellStyle style = workbook.createCellStyle(); style.setBorderTop((short) 6); style.setBorderBottom((short) 2); style.setBorderRight((short) 2); XSSFFont font = workbook.createFont(); font.setFontHeightInPoints((short) 15); font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); style.setFont(font); header.getCell(0).setCellStyle(style); Row row = sheet.getRow(0); sheet.autoSizeColumn(0); sheet.autoSizeColumn(1); row = sheet.getRow(1); if (row == null) row = sheet.createRow(1); Cell cell = row.getCell(0); if (cell == null) cell = row.createCell(0); cell.setCellValue("Please go through following tabs to know the violations"); workbook.write(fos); fos.flush();
  • 9. Accessibility Testing using Axe © RapidValue Solutions 9 fos.close(); workbook.close(); } } catch (Exception e) { e.printStackTrace(); } return workbook; }  writeToExcel – this is a private method that helps to write the violations into the created excel file. The actual implementations are below: /** * Method to write the violations in a excel report * * @author sanojs * @param sheetName * @param columnIndex * @param rowNum * @param data * @return */ private boolean writeToExcel(String filePath, String sheetName, int columnIndex, int rowNum, String data) { InputStream in = null; XSSFWorkbook wb = null; Sheet newSheet = null; FileOutputStream fileOutStream = null; try { if (filePath == null || filePath.trim().equals("")) throw (new Exception()); if (filePath.endsWith(".xlsx") || filePath.endsWith(".xls")) { in = new FileInputStream(filePath); wb = new XSSFWorkbook(in); } else { throw (new Exception()); } if (rowNum <= 0) throw (new Exception()); try { newSheet = wb.getSheet(sheetName); if (newSheet != null) { throw new Exception("Sheet Already exist..."); } newSheet = wb.createSheet(sheetName); } catch (Exception e) { } int index = wb.getSheetIndex(newSheet); if (index == -1) throw (new Exception()); XSSFCellStyle style = wb.createCellStyle(); style.setBorderTop((short) 6); style.setBorderBottom((short) 1); XSSFFont font = wb.createFont(); font.setFontHeightInPoints((short) 15); font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); style.setFont(font); XSSFSheet sheet = wb.getSheetAt(index);
  • 10. Accessibility Testing using Axe © RapidValue Solutions 10 Row header = sheet.createRow(0); header.createCell(0).setCellValue("Violation ID"); header.createCell(1).setCellValue("Violation Description"); header.createCell(2).setCellValue("Violation Impact"); header.createCell(3).setCellValue("Violation Help"); header.createCell(4).setCellValue("Violation Help URL"); header.createCell(5).setCellValue("Violation Issue Tags"); for (int j = 0; j <= 5; j++) header.getCell(j).setCellStyle(style); Row row = sheet.getRow(0); if (columnIndex < 1) throw (new Exception()); sheet.autoSizeColumn(columnIndex - 1); row = sheet.getRow(rowNum - 1); if (row == null) row = sheet.createRow(rowNum - 1); Cell cell = row.getCell(columnIndex - 1); if (cell == null) cell = row.createCell(columnIndex - 1); cell.setCellValue(data); XSSFFormulaEvaluator.evaluateAllFormulaCells(wb); fileOutStream = new FileOutputStream(filePath); wb.write(fileOutStream); } catch (Exception e) { e.printStackTrace(); return false; } finally { try { wb.close(); fileOutStream.close(); in.close(); } catch (Exception e) { } } return true; }  getCurrentDateAndTime – This is a private method that helps to generate current timestamp that used suffix to the JSON and text files. The actual implementations are below: /** * Method to get the current date and time * * @author sanojs * @return */ private String getCurrentDateAndTime() { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); DateFormat timeFormat = new SimpleDateFormat("HH-mm-ss"); Date date = new Date(); String currdate = dateFormat.format(date); String currtime = timeFormat.format(date); return currdate + "_" + currtime; }
  • 11. Accessibility Testing using Axe © RapidValue Solutions 11 Step 3: Create a TestNG class SampleAccessibilityTest with logic to start the driver session and create a test case, let’s say accessibilityTesting. In the test case, you just need to load the browser that you need to perform the Accessibility Testing and after that call the method trackViolations. The actual implementations are below: @BeforeClass public void setUp() throws InterruptedException { try { ChromeDriverService chromeservices = new ChromeDriverService.Builder() .usingDriverExecutable(new File("path to your driver executable")).usingAnyFreePort().build(); driver = new ChromeDriver(chromeservices); } catch (WebDriverException e) { e.printStackTrace(); } } @Test public void accessibilityTesting() { try { driver.get("https://www.rapidvaluesolutions.com/"); new AccessibilityTestHelper().trackViolations(driver, "Home Page"); } catch (Exception e) { e.printStackTrace(); } } Step 4: Execute above test case and see the reports in the format of excel, JSON and text files. These reports will be generated in Results folder of the project structure. Based on the above trackViolations method, a sheet Home Page will be created in the excel report to track all the violations. If you are using trackViolations method for different pages of your web application, it will create new sheets to track the violations of your different pages. Below is the project structure:
  • 12. Accessibility Testing using Axe © RapidValue Solutions 12 Conclusion Accessibility Testing is one of the important types of testing that add value to your business and deliver user friendly applications. Axe Core is a very powerful framework that can help the team to build web products that are inclusive. In this article, different ways to test the Accessibility and the automation part have been discussed in full length. Hope this throws some light on the concept of testing the Accessibility and the implementations. Please try to utilize this while carrying out and utilizing Accessibility Testing. By, Sanoj S Test Architect
  • 13. Accessibility Testing using Axe © RapidValue Solutions 13 About RapidValue RapidValue is a global leader in digital product engineering solutions including mobility, omni-channel, IoT, AI, RPA and cloud to enterprises worldwide. RapidValue offers its digital services to the world’s top brands, Fortune 1000 companies and innovative emerging start-ups. With offices in the United States, the United Kingdom, Germany and India and operations spread across the Middle-East, Europe and Canada, RapidValue delivers enterprise services and solutions across various industry verticals. Disclaimer: This document contains information that is confidential and proprietary to RapidValue Solutions Inc. No part of it may be used, circulated, quoted, or reproduced for distribution outside RapidValue. If you are not the intended recipient of this report, you are hereby notified that the use, circulation, quoting, or reproducing of this report is strictly prohibited and may be unlawful. www.rapidvaluesolutions.com/blog www.rapidvaluesolutions.com +1 877.643.1850 contactus@rapidvaluesolutions.com Disclaimer: This document contains information that is confidential and proprietary to RapidValue Solutions Inc. No part of it may be used, circulated, quoted, or reproduced for distribution outside RapidValue. If you are not the intended recipient of this report, you are hereby notified that the use, circulation, quoting, or reproducing of this report is strictly prohibited and may be unlawful.