code: function runAxe(context) {
  
    var deferred = q.defer();
  
    AxeBuilder(browser.driver).options(context.config.axe)
      .analyze(function(results) {
        deferred.resolve(results);
      });
  
    return deferred.promise.then(function(results) {
      return processAxeResults(results);
    });
  
    function processAxeResults(results) {
  
      var testHeader = 'aXe - '
  
      var numResults = results.violations.length;
  
      if (numResults === 0) {
        return context.addSuccess();
      }
  
      results.passes.forEach(function(result) {
        context.addSuccess({specName: testHeader + result.help});
      });
  
      return results.violations.forEach(function(result) {
        var label = result.nodes.length === 1 ? ' element ' : ' elements ';
        var msg = result.nodes.reduce(function(msg, node) {
          return msg + '\t\t' + node.html + '\n';
        }, '\n');
        msg = '\n\t\t' + result.nodes.length + label + 'failed:' + msg + '\n\n\t\t' + result.helpUrl
        context.addFailure(msg, {specName: testHeader + result.help});
      });
  
    }
  
  }
docs: Audits page source against aXe: https://github.com/dequelabs/axe-core
  
  @param {Object} context The plugin context object
  @return {q.Promise} A promise which resolves when the audit is finished
  @private