UNPKG

nemo-accessibility

Version:

nemo-accessibility is a nemo plugin aimed to run accessibility scans during nemo tests. nemo-accessibility plugin uses axe-core, htmlcode smiffer and chrome engines to run accessibility scans on a given page or on a given element on a page.

58 lines (53 loc) 1.98 kB
'use strict'; var debug = require("debug"), fs = require('fs'), log = debug("nemo-accessibility:log"), error = debug("nemo-accessibility:error"), path = require('path'); var jsonOp = {}; function getAxeResults(argObj, nemo, callback){ return new Promise(function(resolve, reject) { var retStr =''; var filePath = path.join(__dirname, '../lib/engines/axe/axe.js'); var scriptSource = fs.readFileSync(filePath, 'utf8'); var driver = nemo.driver; driver.executeScript(scriptSource) .then(function(){ driver.switchTo().defaultContent(); driver.executeAsyncScript(function() { var callback = arguments[arguments.length - 1]; window.axe.run(document, function(err, results) { callback(results); }); }).then(function(msg) { // console.log(msg); var violations = msg.violations for (var i=violations.length;i--;){ delete violations[i].helpUrl; delete violations[i].tags; delete violations[i].nodes; } retStr = processResultsAxe(violations ,'Axe Accessibility Plugin'); resolve(retStr); }) }) }) //end return promise } function processResultsAxe(arr){ var msg, resultArr = []; if (arr.length === 0) { resultArr.push({'message':'No violations found'}); } for (var key in arr) { msg = arr[key]; var temp_obj = {}; temp_obj["id"] = msg.id; temp_obj["description"] = msg.description; temp_obj["help"] = msg.help; temp_obj["impact"] = msg.impact; resultArr.push(temp_obj); } jsonOp["results"] = resultArr; return JSON.stringify(jsonOp); } module.exports.getAxeResults = getAxeResults;