Skip to content
This repository has been archived by the owner on Jul 20, 2020. It is now read-only.

Commit

Permalink
Adapt to Nemo4
Browse files Browse the repository at this point in the history
  • Loading branch information
mpnkhan committed Feb 18, 2019
1 parent 92aceca commit ad62644
Show file tree
Hide file tree
Showing 9 changed files with 91 additions and 1,778 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
## Installation

`npm install nemo-accessibility --save-dev`
`DEBUG=nemo* node example/usingNemoAccessibility.js`

## Configuration

Expand Down
8 changes: 3 additions & 5 deletions example/config/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@
"module": "path:../",
"arguments": [
{
// "accessibilityApiUrl":"http://127.0.0.1:80/evaluate"
"accessibilityApiUrl": ""
, "engine":"axe"
// , "engine":"chrome"
// , "engine":"htmlcs"
"engine":"axe"
// "engine":"chrome"
// "engine":"htmlcs"
}
]
},
Expand Down
42 changes: 23 additions & 19 deletions example/usingNemoAccessibility.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,25 @@
var Nemo = require('nemo');
var fs = require('fs');
var nemo = Nemo(process.cwd()+'/example',function(err){
if(!err) {
nemo.driver.get('http://www.paypal.com');
console.log('Nemo initialized successfully');
nemo.accessibility.scan().then(function (result) {
console.log('result', result);
var file = process.cwd() + '/example/report/accessibility.json';
fs.writeFile(file, result, function (err) {
if (err) {
throw err;
}
console.log('Successfully wrote the file ' + file);
});
});
nemo.driver.quit();
} else {
console.log(err);
const Nemo = require('nemo-core');

const nemo = Nemo(process.cwd()+'/example', function(err){
if (err) {
console.log('Error during Nemo setup', err);
}
nemo.driver.get('http://www.paypal.com');
nemo.driver.getCapabilities().then((cap) => {
console.info('Nemo successfully launched:', cap.get('browserName'));
}) .catch((error) => {
console.log(error);
})

const options = {
'page': 'HomePage'
}

nemo.accessibility.scan(options).then(function (result) {
console.log('Result :' + result);
}).catch((error) => {
console.log(error);
})

nemo.driver.quit();
});
117 changes: 30 additions & 87 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,111 +1,54 @@
'use strict';
var request = require("request"),
debug = require("debug"),
fs = require('fs'),
log = debug("nemo-accessibility:log"),
error = debug("nemo-accessibility:error"),
path = require('path');

var jsonOp = {};
var resultArr = [];
var retStr ='';
var axeResults = require('./src/axe');
var htmlcsResults = require('./src/htmlcs');
var chromeResults = require('./src/chrome');

module.exports = {
"results":"",
"setup": function (argObj, nemo, callback) {
var returnObj = nemo;

returnObj.accessibility = {
'scan': function (options) {
var d = nemo.wd.promise.defer();
// var driver = options && options.element ? options.element : nemo.driver;
var driver = nemo.driver,
const request = require("request"),
debug = require("debug"),
fs = require('fs'),
log = debug("nemo-accessibility:log"),
error = debug("nemo-accessibility:error"),
path = require('path');

let jsonOp = {};
let resultArr = [];
let retStr ='';
const axeResults = require('./src/axe');
const htmlcsResults = require('./src/htmlcs');
const chromeResults = require('./src/chrome');


function setup (argObj, nemo, callback) {
nemo.accessibility = {
'scan': async function (options) {
// const driver = options && options.element ? options.element : nemo.driver;
const driver = nemo.driver,
scanElement = options && options.element ? options.element : driver.findElement(nemo.wd.By.tagName('html')),
project = options && options.project || '',
page = options && options.page || '' ,
errLevel = options && options.errLevel || '1',
level = options && options.level || 'WCAG2AA';

log('api url', argObj.accessibilityApiUrl);
log('engine', argObj.engine);

if (argObj.accessibilityApiUrl) {
var engine = options && options.engine ? options.engine : '',
output = options && options.output ? options.output : '',
accessibilityApiUrl = argObj.accessibilityApiUrl;

scanElement.getAttribute('innerHTML').then(function (source) {

log('Now scanning with error level ', errLevel);
log('API engine', engine);
log('Accessibility url ', accessibilityApiUrl);

var body = {
'source': source,
'errLevel': errLevel,
'level' : level,
'engine' : engine,
'output': output,
'page' : page,
'project': project
},
options = {
'headers': {
'Content-Type': 'application/json'
},
'url': accessibilityApiUrl,
'method': 'POST',
'body': body,
'json': true,
'rejectUnauthorized': false
};

request(options, function (err, response, responseBody) {
if (err) {
error(err);
d.reject(err);
}
if (err || response.statusCode !== 200) {
d.reject('Error is ' + err + ' Response code is ' + (response && response.statusCode));
}
d.fulfill(responseBody);
});
}); //scanElement.getAttribute
} else {
// console.log('Standalone: ', project, page, argObj.engine);

jsonOp["project"] = project;
jsonOp["page"] = page;
let results='';

switch(argObj.engine) {
case 'htmlcs':
htmlcsResults.getHtmlcsResults(argObj, nemo, callback)
.then(function(results){
d.fulfill(results);
})
results = await htmlcsResults.getHtmlcsResults(argObj, nemo, callback)
break;
case 'chrome':
chromeResults.getChromeResults(argObj, nemo, callback)
.then(function(results){
d.fulfill(results);
})
results = await chromeResults.getChromeResults(argObj, nemo, callback)
break;
case 'axe':
default:
axeResults.getAxeResults(argObj, nemo, callback)
.then(function(results){
d.fulfill(results);
})
results = await axeResults.getAxeResults(argObj, nemo, callback)
//
} //end switch
} // end else

return d;
return results
} //scan function
} //returnObj
} //nemo.accessibility
callback(null);
} //setup function
}; //module.export

module.exports = {
"setup": setup
}
Loading

0 comments on commit ad62644

Please sign in to comment.