accessibility-8.x-1.x-dev/modules/accessibility_testswarm/js/accessibility_testswarm.js
modules/accessibility_testswarm/js/accessibility_testswarm.js
(function ($) { Drupal.behaviors.accessibility_testswarm = { guideline : [], tests : {}, alreadyRun : false, failedItems : { }, attach: function (context) { if(this.alreadyRun) { return; } this.alreadyRun = true; var that = this; that.guideline = []; $.ajax({ url : Drupal.settings.basePath + 'js/accessibility/tests.json', async : false, dataType : 'json', success : function(data) { that.guideline = data.guideline; that.tests = data.tests; } }); $('body').quail({ accessibilityTests : that.tests, guideline : that.guideline, jsonPath : Drupal.settings.basePath + Drupal.settings.accessibility_testswarm.quail_path + '/resources', complete : function(event) { $.each(event.results, function(testName, items) { if(items.length) { for(var i = 0; i < items.length; i++) { if((items[i].attr('id') && items[i].attr('id').search('qunit-') === 0) || items[i].hasClass('-a11y-testswarm')) { items.splice(i, 1); i--; } } } test(that.tests[testName].readableName, function() { expect(1); if(items.length) { that.failedItems[testName] = items; } equal(0, items.length, testName); }); }); }}); } }; Drupal.behaviors.testswarm.attach = function() { var currentTest; var mySettings = drupalSettings.testswarm; $.extend(QUnit.config, { reorder: false, // Never ever re-order tests! altertitle: false, // Don't change the title autostart: false }); var logger = {log: {}, info: {}, tests: []}; var currentModule = 'default'; QUnit.moduleStart = function(module) { currentModule = module.name; if (!logger.log[currentModule]) { logger.log[currentModule] = {}; } }; QUnit.testStart = function(test) { currentTest = test.name; }; QUnit.testDone = function(test) { logger.tests.push(test); }; QUnit.done = function(data) { logger.info = data; logger.caller = mySettings.caller; logger.theme = mySettings.theme; logger.token = mySettings.token; logger.karma = mySettings.karma; logger.module = mySettings.module; logger.description = mySettings.description; $.each(logger.log.default, function(index, log) { $.each(log, function(logIndex, item) { if(item.result) { item.message = Drupal.t('No errors found'); } else { item.accessibility_testswarm = []; $.each(Drupal.behaviors.accessibility_testswarm.failedItems[item.message], function(e, element) { var theme = (element.parents('.-a11y-testswarm').length) ? Drupal.settings.accessibility_testswarm_theme[element.parents('.-a11y-testswarm').first().data('theme-key')] : '<none>'; item.accessibility_testswarm.push({ element : $('<div>').append(element.clone().empty()).html(), theme : theme}); }); } }); }); // Write back to server var url = Drupal.url('testswarm-test-done'); jQuery.ajax({ type: "POST", url: url, timeout: 10000, data: logger, error: function(response) { window.alert(Drupal.t('Ajax error at @url', { '@url': url })); }, success: function(){ window.setTimeout(function() { if (!mySettings.debug || mySettings.debug !== 'on') { if (mySettings.destination) { window.location = mySettings.destination; } else { window.location = '/testswarm-browser-tests'; } } }, 500); } }); }; QUnit.log = function(data) { if (!logger.log[currentModule]) { logger.log[currentModule] = {}; } if (!logger.log[currentModule][currentTest]) { logger.log[currentModule][currentTest] = []; } logger.log[currentModule][currentTest].push(data); }; }; })(jQuery);