Learn how your company can add automated testing for accessibility on all platforms. This presentation covers what Intuit has learned while working towards this goal
4. INTRODUCTION
• 30+ products
• Accessibility is a top priority.
• All customers are EQUAL.
• Manual Evaluations
• Multi Platform
• Efficiency and Efficacy
5. WorldSpace - Deque
• Hosted Testing Server
• Scheduled scans
• Public Facing Sites
• Timeline of Compliance, not Errors
• Sophisticated rules
6. FireEyes Plugin for WorldSpace
• Plugs into Firebug
• Manual scan of any page
• Build automation scripts
• Sync with WorldSpace
7. QuickBase and Worldspace Scores
• Collaborative database for small
businesses
• Testing Tool + Product
Implementation
• Track error score and monthly
change
8. Martini Test Library
• Intuit’s Custom UI Test Automation
Library
• Selenium based framework
• C.I. / C.D.
• Low false errors
12. Customer Feedback
• Everything at Intuit includes user
testing
• Product QE was our customer
• TurboTax was an early adopter
• Easy to integrate
• Performance Improvements
• Need Mobile Version
13. Performance Increase
• One of the things observed was increase
in the performance
• Automation helped bump up these
numbers
• Time to run the tests was decreased from
9 minutes to 28.5 seconds.
15. • API-based testing product
• Sophisticated tests
• Easy to integrate with other tools
• Requires passing code to external
server
• Internal hosting is possible
19. UI Automation - Android
• Appium at Intuit
• Google Test Frameworks
–Espresso
–Robolectric
• AccessibilityChecks
20. INTEGRATING ACCESSIBILITY CHECKS
WITH APPIUM
• 2 Key Options
– AccessibilityChecks logic + Appium
– AccessibilityChecks as a service
Service Solution
• Easier integration
• Google Updates
21. Android Lint
• Static Code Analysis
• Built Into Android Studio and Eclipse
• Easy to Use
• Provides solutions and information
• Pre-build checking
22.
23. Accessibility Automation - iOS
• Appium is standard UI Test
Framework
• Build Standard Tests for Appium
• Instruments – Apple Framework
25. Accessibility Automation - Mac
OSX
• Still in Research Phase
• PyAtom: Python based UI
• Frankk: Cucumber
26. Accessibility Automation: Windows
• No consistency between products
• Largely manual testing
• Accessibility = Automated testing
• C++ and .Net
27. Refactoring Layers
• QBForms – Custom objects
• QBForms built on C++
• Code refactoring in C# and .Net
• Hope to make life easy!!
28. Results
• Long Tail Monitoring
• Reduced Barrier of Entry
• Greater Awareness
• Lower Costs
Editor's Notes
It shares the progress Intuit has made to incorporate automated testing across all platforms, where there have been problems, and goals for the future. Also shares a journey of transition of manual testing to Automation testing for accessibility.
This presentation is for other companies that are working towards automated testing.
While this presentation provides information on 3rd party testing tools, it is not an endorsement or critique of any product. It reflects our experience as we’ve researched and implemented testing strategies.
Photo: cup of robots by hobvias sudoneighm https://www.flickr.com/photos/striatic/1276095/
Coop Intern at Intuit with the TurboTax team and partly did a project with Ted Drake who introduced me to this amazing field.
Later came back as an intern for the Live Community which is like help support Team and made their product accessible.
Joined as a full time Employee in 2015 to drive accessibility automation initiative.
Ted leads Intuit’s accessibility initiatives via education, training, and working with product managers.
The hand represents Intuit’s Special Needs and Ability Network for employees and their family members
HTML components
WorldSpace
Accessibility library with Martini
Tenon/PayPal packages
Android components
Lint Architecture
Google accessibility checks
IOS component
Xcode plugin
Intuit is software company that develops financial and tax preparation software and related services for small business, Accountants and Individuals. One of the main product of Intuit is Turbotax. Since turbotax supports 1000+ plus forms, it is very difficult to evaluate accessibility for each form manually.
Thus decided to automate compliance testing for accessibility.
Worldspace is external server which tests web based products for accessibility compliance. It crawls through webesites and test for all possible web pages.
Intuit has used WorldSpace for several years to do automated testing of our production web sites.
It could be installed on internal server, which provides access to non-production servers and JIRA integration
WorldSpace tracks compliance. A single error makes a page non-compliant, so timelines are not useful for tracking progress.
http://www.deque.com/products/worldspace/
If you want to test QA server or preprod server, fireeyes comes to rescue.
FireEyes plugin allows manual scans and building automation scripts
Takes input as a link to the product and QA server can access worldSpace with the help of this bridge.
Basically fireyes acts like a bridge if you want to test QA or preprod server on Worldspace. Fireeyes upload all the results after the scan on Worldspace. So that developers can still go to Worldspace and see all the errors on QA or preprod server
QuickBase (http://quickbase.intuit.com/) Easy to use database for building custom projects.
– within the organization keeps a tab on the status of all the products and their status on accessibility against latest rules
Keeps a record of the stockholder’s name, all the scores from Worldspace, the last date of scoring.
Worldspace scores is no of critical errors/no of pages scaned.
Also we use a system similar to a Credit score where depending on how well the scores are, they are indicated by different colored zones.
The colors used are something like in a traffic signal - where green means all is good to go, Yellow indicates that we need to be cautious and watchful, things might become red soon which is a big STOP or danger that which means we need to stop and revisit the accessibility standards for that particular product.
Martini is an internal tool for UI Test Automation
This includes a common set of tests that are shared across Intuit teams
The Accessibility Library was built to focus on most common errors, while triggering minimal false errors
The initial library was built by the Intuit.com team and has been improved with customer feedback
Photo: Martini by Tory Barratt Crane https://www.flickr.com/photos/torimbc/4040067721/
Incorporating the accessibility library requires minimum effort.
The tests will open a page, parse the dom, and begin searching for elements based on xpaths.
The tests are run against these elements, such as checking all images for alt attribute.
If there is a violation, errors are generated and reported to a text file for QE integration.
We needed a stable set of pages to run our tests against. Acme Widgets includes good and bad versions of basic HTML pages. If our tests were solid, the good pages would throw 0 errors or warnings. The bad pages should throw lots of different errors.
Access the test site: http://fyvr.net/acme/
Download the code: https://github.com/7mary4/a11y-control-test
Screenshot test results: tenon.
Important step was to be able to deliver to a customer and gain feedback.
Fuego Web Player Team (CTG) – internal team has successfully incorporated this into their automation framework.
FEEDBACK – Library helped identify issues like alt text missing on the player.
Customer empathy sessions were conducted which helped gain deeper insight.
As customers started using this library, it helped us to get lot of feedback such as when the page structure is complex test takes more time to run. Thus it motivates us to improve performance.
Since now there is no manual evaluation, product releases were faster and less pain to QE/Developer and catches any issues before we go live.
Since this library is using by all products we should go and see how all products doing in terms of accessibility.
Tenon.io is a new product that is API based. The team passes code to the Tenon server, which returns test results in JSON. These results can be easily manipulated to work with multiple bug tracking systems, automation tools, and CI/CD tools.
http://tenon.io
The tests are more sophisticated than our Martini library
Tests provide guidance on error importance and solutions
Intuit’s security team was worried about passing our non-production code to an external server. This can be done securely, but is still a concern.
This could be solved by installing Tenon on an internal server, which is something we are still investigating.
Pricing is reasonable. Support is great.
https://github.com/paypal/nemo-accessibility
Nemo is a node.js based automation framework for browser automation.
Nemo creates a Node-JS server to run your favorite accessibility automation library
Easily integrates HTML Code Sniffer, Chrome Accessibility Library, or Deque’s aXe library
This is something we are evaluating as an alternative to Tenon.
For mobile applications, the accessibility API is used to find elements for automated testing.
The majority of documentation about mobile automation is about how to use these elements within the accessibility API to run automated tests.
However, there is little information or libraries for checking if the app is actually accessible.
Photo: iphone by Claudio Schwarz https://www.flickr.com/photos/purzlbaum/367889445/
https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UIAutomation.html
http://developer.android.com/training/testing/ui-testing/index.html
http://appium.io/
Appium is an open source tool for automating native, mobile web and hybrid applications on IOS and Android platforms. Also Appium is cross platform. It allows you to write tests against multiple platforms such as IOS and Android using same API.
An equivalent to martini for the web is Appium for Android devices (Google platform).
Appium is an open source automation framework which makes things more easily available for integration.
Google suggests test frameworks like Espresso and Robolectric.
Google Accessibility provides checkers like Espresso and Roboelectric in order to test the accessibility amongst Android devices.
https://google.github.io/android-testing-support-library/
https://google.github.io/android-testing-support-library/docs/espresso/
http://robolectric.org/
AccessibilityChecks: automated accessibility tests: http://developer.android.com/reference/android/support/test/espresso/contrib/AccessibilityChecks.html
Intuit Mobile testing standard framework
Work to integration google a11y checks with appium
Decided to make it as CI/CD service
Service will run behind the scenes!. So teams who will on board to CI/CD will load there project and we will run that service for all mobile apps. Thus we will let them know of possible accessibility errors in their project.
Android Lint is a static code analysis tool built into Eclipse and Android Studio.
Each problem detected is reported with a description message and a severity level, thus easy to prioritize.
As you can see here source files for app and .xml needs to parse to the lint tool. And when we build and run the tool we get the output in the form of issue category such as correctness usability, Security, performance, internationalization and accessibility.
Video on YouTube: https://www.youtube.com/watch?v=jMnWwz6ZFwU
Interestingly, Appium is available on iOS too.
Would be interesting to see how integration with that would serve both platforms (Android and iOS).
https://developer.apple.com/library/tvos/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UIAutomation.html
https://www.youtube.com/watch?v=euEsfNR5Zw4
Xcode is the development environment for any iOS product.
As a part of the same, they provide a Xcode plugin that helps identify a11y errors.
Is integrated as a part of the build process of the application and like the other warnings/errors in Xcode, we get the one’s related to A11y too.
Very less overhead and simple installation by just connecting to the worldspace server through the project.
Deprecated due to fragility with new xcode builds
For the OSX platform, development for the Mac, we are still in the very preliminary stages of researching on how this integration could be done.
There are no obvious potential choices for integration into libraries too for this platform.
Current automation products
PyAtom is first python based library which fully enables GUI testing for mac applications via the apple accessibility API. It has direct access to the API.
Frankk allows you to write structured text tests or requirements using cucumber and have them execute against your Mac OS application
https://github.com/pyatom/pyatom
http://www.testingwithfrank.com/mac.html
https://developer.apple.com/videos/play/wwdc2015/406/
https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/01-introduction.html
Windows is a challenge considering every product is massively different.
Tests are created per product.
Strategies around accessibility are simplifying our testing strategies.
Windows Desktop product is built using C++.
Since quickbooks desktop is both for mac and Windows there is common layer we use known as QbForms. Now since QBForms was also built using C++ there is very little chance of making it accessible. Thus now effort is to refactor the codebase with C# and .net to make it accessible.
Long Tail Monitoring: You can’t give everything equal attention, especially within a large company. Automated testing provides awareness for the long tail, those products that often get ignored. For instance, we had a product update their wordpress theme and the error rate skyrocketed. We were able to quickly evaluate the product, provide guidance, and they fixed many of the issues the same day. This wouldn’t have been discovered as quickly without automated testing. https://en.wikipedia.org/wiki/Long_tail
Implementing accessibility testing has become significantly easier after incorporating this from a centralized resource.
Automated testing forces engineers, QE, and product teams to recognize accessibility errors. This is something they may not have realized prior to the testing. Good testing also provides context and solutions.
Testing at the continuous integration stage greatly reduces the cost for fixing accessibility issues.