UNPKG

rgaav3aas

Version:

Module pour valider la conformité d'un contenu au RGAA V3.

2,389 lines (1,907 loc) 66.9 kB
'use strict' var fs = require('fs'); var rule = require('./rule'); var config = require('config'); var markers = config.get('markers'); var messages = config.get('messages'); var validdoctypes = config.get('validdoctypes'); var bcp47 = require('bcp47'); var util = require('util'); var tags = require('language-tags') var repository = {}; var getResult = function(success, test) { if (!success) { return { "success": false, "messages": [messages[test]] }; } else { return { "success": true } } }; /******************************************************************** * 1 - Images ********************************************************************/ /******************************************************************** /* 1.1 - Chaque image a-t-elle une alternative textuelle ? ********************************************************************/ /** * */ repository["1.1.1"] = function($, content) { return rule('1.1.1', $).select("img:not([alt])").noelement().addplaceholders(['src']).trigger().result; } /** * */ repository["1.1.2"] = function($, content) { return rule('1.1.2', $).select("area:not([alt])").noelement().addplaceholders(['src']).trigger().result; } /** * */ repository["1.1.3"] = function($, content) { return rule('1.1.3', $).select("input[type=image]:not([alt])").noelement().addplaceholders(['src']).trigger().result; } /** * */ repository["1.1.4"] = function($, content) { return rule('1.1.4', $).select("img[ismap]:not([usemap])").noelement().addplaceholders(['src']).trigger().result; } /******************************************************************** /* 1.2 - Pour chaque image de décoration ayant une alternative textuelle, cette alternative est-elle vide ? ********************************************************************/ /** * */ repository["1.2.1"] = function($, content) { return rule('1.2.1', $).select("area[href]").notundefinedattribute('alt', undefined).notnullattribute('href').addplaceholders(['href']).trigger().result; } /** * */ repository["1.2.2"] = function($, content) { return null; } /** * */ repository["1.2.3"] = function($, content) { return null; } /** * */ repository["1.2.4"] = function($, content) { return null; } /** * */ repository["1.2.5"] = function($, content) { return null; } /******************************************************************** /* 1.3 - Pour chaque image porteuse d&#39;information ayant une alternative textuelle, cette alternative est-elle pertinente (hors cas particuliers) ? ********************************************************************/ /** * */ repository["1.3.1"] = function($, content) { return null; } /** * */ repository["1.3.2"] = function($, content) { return null; } /** * */ repository["1.3.3"] = function($, content) { return null; } /** * */ repository["1.3.4"] = function($, content) { return null; } /** * */ repository["1.3.5"] = function($, content) { return null; } /** * */ repository["1.3.6"] = function($, content) { return null; } /** * */ repository["1.3.7"] = function($, content) { return null; } /** * */ repository["1.3.8"] = function($, content) { return null; } /** * */ repository["1.3.9"] = function($, content) { return null; } /** * */ repository["1.3.10"] = function($, content) { return null; } /******************************************************************** /* 1.4 - Pour chaque image utilisée comme CAPTCHA ou comme image-test, ayant une alternative textuelle, cette alternative permet-elle d&#39;identifier la nature et la fonction de l&#39;image ? ********************************************************************/ /** * */ repository["1.4.1"] = function($, content) { return null; } /** * */ repository["1.4.2"] = function($, content) { return null; } /** * */ repository["1.4.3"] = function($, content) { return null; } /** * */ repository["1.4.4"] = function($, content) { return null; } /** * */ repository["1.4.5"] = function($, content) { return null; } /** * */ repository["1.4.6"] = function($, content) { return null; } /** * */ repository["1.4.7"] = function($, content) { return null; } /** * */ repository["1.4.8"] = function($, content) { return null; } /** * */ repository["1.4.9"] = function($, content) { return null; } /******************************************************************** /* 1.5 - Pour chaque image utilisée comme CAPTCHA, une solution d&#39;accès alternatif au contenu ou à la fonction du CAPTCHA est-elle présente ? ********************************************************************/ /** * */ repository["1.5.1"] = function($, content) { return null; } /** * */ repository["1.5.2"] = function($, content) { return null; } /******************************************************************** /* 1.6 - Chaque image porteuse d&#39;information a-t-elle, si nécessaire, une description détaillée ? ********************************************************************/ /** * */ repository["1.6.1"] = function($, content) { return null; } /** * */ repository["1.6.2"] = function($, content) { return null; } /** * */ repository["1.6.3"] = function($, content) { return null; } /** * */ repository["1.6.4"] = function($, content) { return null; } /** * */ repository["1.6.5"] = function($, content) { return null; } /** * */ repository["1.6.6"] = function($, content) { return null; } /** * */ repository["1.6.7"] = function($, content) { return null; } /** * */ repository["1.6.8"] = function($, content) { return null; } /******************************************************************** /* 1.7 - Pour chaque image porteuse d&#39;information ayant une description détaillée, cette description est-elle pertinente ? ********************************************************************/ /** * */ repository["1.7.1"] = function($, content) { return null; } /** * */ repository["1.7.2"] = function($, content) { return null; } /** * */ repository["1.7.3"] = function($, content) { return null; } /** * */ repository["1.7.4"] = function($, content) { return null; } /** * */ repository["1.7.5"] = function($, content) { return null; } /** * */ repository["1.7.6"] = function($, content) { return null; } /** * */ repository["1.7.7"] = function($, content) { return null; } /******************************************************************** /* 1.8 - Chaque image texte porteuse d&#39;information, en l&#39;absence d&#39;un mécanisme de remplacement, doit si possible être remplacée par du texte stylé. Cette règle est-elle respectée (hors cas particuliers) ? ********************************************************************/ /** * */ repository["1.8.1"] = function($, content) { return null; } /** * */ repository["1.8.2"] = function($, content) { return null; } /** * */ repository["1.8.3"] = function($, content) { return null; } /** * */ repository["1.8.4"] = function($, content) { return null; } /** * */ repository["1.8.5"] = function($, content) { return null; } /** * */ repository["1.8.6"] = function($, content) { return null; } /******************************************************************** /* 1.9 - Chaque image texte porteuse d&#39;information, doit si possible être remplacée par du texte stylé. Cette règle est-elle respectée (hors cas particuliers) ? ********************************************************************/ /** * */ repository["1.9.1"] = function($, content) { return null; } /** * */ repository["1.9.2"] = function($, content) { return null; } /** * */ repository["1.9.3"] = function($, content) { return null; } /** * */ repository["1.9.4"] = function($, content) { return null; } /** * */ repository["1.9.5"] = function($, content) { return null; } /** * */ repository["1.9.6"] = function($, content) { return null; } /******************************************************************** /* 1.10 - Chaque légende d&#39;image est-elle, si nécessaire, correctement reliée à l&#39;image correspondante ? ********************************************************************/ /** * */ repository["1.10.1"] = function($, content) { return null; } /** * */ repository["1.10.2"] = function($, content) { return null; } /** * */ repository["1.10.3"] = function($, content) { return null; } /** * */ repository["1.10.4"] = function($, content) { return null; } /** * */ repository["1.10.5"] = function($, content) { return null; } /******************************************************************** * 2 - Cadres ********************************************************************/ /******************************************************************** /* 2.1 - Chaque cadre en ligne a-t-il un titre de cadre ? ********************************************************************/ /** * Chaque cadre en ligne (balise iframe) a-t-il un attribut title ? */ repository["2.1.1"] = function($, content) { return rule('2.1.1', $).select("iframe:not([title])").noelement().addplaceholders(['src']).trigger().result; } /******************************************************************** /* 2.2 - Pour chaque cadre en ligne ayant un titre de cadre, ce titre de cadre est-il pertinent ? ********************************************************************/ /** * */ repository["2.2.1"] = function($, content) { return null; } /******************************************************************** * 3 - Couleurs ********************************************************************/ /******************************************************************** /* 3.1 - Dans chaque page Web, l&#39;information ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ? ********************************************************************/ /** * */ repository["3.1.1"] = function($, content) { return null; } /** * */ repository["3.1.2"] = function($, content) { return null; } /** * */ repository["3.1.3"] = function($, content) { return null; } /** * */ repository["3.1.4"] = function($, content) { return null; } /** * */ repository["3.1.5"] = function($, content) { return null; } /** * */ repository["3.1.6"] = function($, content) { return null; } /******************************************************************** /* 3.2 - Dans chaque page Web, l&#39;information ne doit pas être donnée uniquement par la couleur. Cette règle est-elle implémentée de façon pertinente ? ********************************************************************/ /** * */ repository["3.2.1"] = function($, content) { return null; } /** * */ repository["3.2.2"] = function($, content) { return null; } /** * */ repository["3.2.3"] = function($, content) { return null; } /** * */ repository["3.2.4"] = function($, content) { return null; } /** * */ repository["3.2.5"] = function($, content) { return null; } /** * */ repository["3.2.6"] = function($, content) { return null; } /******************************************************************** /* 3.3 - Dans chaque page Web, le contraste entre la couleur du texte et la couleur de son arrière-plan est-il suffisamment élevé (hors cas particuliers) ? ********************************************************************/ /** * */ repository["3.3.1"] = function($, content) { return null; } /** * */ repository["3.3.2"] = function($, content) { return null; } /** * */ repository["3.3.3"] = function($, content) { return null; } /** * */ repository["3.3.4"] = function($, content) { return null; } /******************************************************************** /* 3.4 - Dans chaque page Web, le contraste entre la couleur du texte et la couleur de son arrière-plan est-il amélioré (hors cas particuliers) ? ********************************************************************/ /** * */ repository["3.4.1"] = function($, content) { return null; } /** * */ repository["3.4.2"] = function($, content) { return null; } /** * */ repository["3.4.3"] = function($, content) { return null; } /** * */ repository["3.4.4"] = function($, content) { return null; } /******************************************************************** * 4 - Multimédia ********************************************************************/ /******************************************************************** /* 4.1 - Chaque média temporel pré-enregistré a-t-il, si nécessaire, une transcription textuelle ou une audio-description (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.1.1"] = function($, content) { return null; } /** * */ repository["4.1.2"] = function($, content) { return null; } /** * */ repository["4.1.3"] = function($, content) { return null; } /******************************************************************** /* 4.2 - Pour chaque média temporel pré-enregistré ayant une transcription textuelle ou une audio-description synchronisée, celles-ci sont-elles pertinentes (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.2.1"] = function($, content) { return null; } /** * */ repository["4.2.2"] = function($, content) { return null; } /** * */ repository["4.2.3"] = function($, content) { return null; } /******************************************************************** /* 4.3 - Chaque média temporel synchronisé pré-enregistré a-t-il, si nécessaire, des sous-titres synchronisés (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.3.1"] = function($, content) { return null; } /** * */ repository["4.3.2"] = function($, content) { return null; } /******************************************************************** /* 4.4 - Pour chaque média temporel synchronisé pré-enregistré ayant des sous-titres synchronisés, ces sous-titres sont-ils pertinents ? ********************************************************************/ /** * */ repository["4.4.1"] = function($, content) { return null; } /******************************************************************** /* 4.5 - Chaque média temporel en direct a-t-il, si nécessaire, des sous-titres synchronisés ou une transcription textuelle (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.5.1"] = function($, content) { return null; } /** * */ repository["4.5.2"] = function($, content) { return null; } /******************************************************************** /* 4.6 - Pour chaque média temporel en direct ayant des sous-titres synchronisés ou une transcription textuelle, ceux-ci sont-ils pertinents ? ********************************************************************/ /** * */ repository["4.6.1"] = function($, content) { return null; } /** * */ repository["4.6.2"] = function($, content) { return null; } /******************************************************************** /* 4.7 - Chaque média temporel pré-enregistré a-t-il, si nécessaire, une audio-description synchronisée (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.7.1"] = function($, content) { return null; } /** * */ repository["4.7.2"] = function($, content) { return null; } /******************************************************************** /* 4.8 - Pour chaque média temporel pré-enregistré ayant une audio-description synchronisée, celle-ci est-elle pertinente ? ********************************************************************/ /** * */ repository["4.8.1"] = function($, content) { return null; } /** * */ repository["4.8.2"] = function($, content) { return null; } /******************************************************************** /* 4.9 - Chaque média temporel pré-enregistré a-t-il, si nécessaire, une interprétation en langue des signes (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.9.1"] = function($, content) { return null; } /** * */ repository["4.9.2"] = function($, content) { return null; } /******************************************************************** /* 4.10 - Pour chaque média temporel pré-enregistré ayant une interprétation en langue des signes, celle-ci est-elle pertinente ? ********************************************************************/ /** * */ repository["4.10.1"] = function($, content) { return null; } /** * */ repository["4.10.2"] = function($, content) { return null; } /******************************************************************** /* 4.11 - Chaque média temporel pré-enregistré a-t-il, si nécessaire, une audio-description étendue synchronisée (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.11.1"] = function($, content) { return null; } /** * */ repository["4.11.2"] = function($, content) { return null; } /******************************************************************** /* 4.12 - Pour chaque média temporel pré-enregistré ayant une audio-description étendue synchronisée, celle-ci est-elle pertinente ? ********************************************************************/ /** * */ repository["4.12.1"] = function($, content) { return null; } /** * */ repository["4.12.2"] = function($, content) { return null; } /******************************************************************** /* 4.13 - Chaque média temporel synchronisé ou seulement vidéo a-t-il, si nécessaire, une transcription textuelle (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.13.1"] = function($, content) { return null; } /** * */ repository["4.13.2"] = function($, content) { return null; } /******************************************************************** /* 4.14 - Pour chaque média temporel synchronisé ou seulement vidéo, ayant une transcription textuelle, celle-ci est-elle pertinente ? ********************************************************************/ /** * */ repository["4.14.1"] = function($, content) { return null; } /** * */ repository["4.14.2"] = function($, content) { return null; } /******************************************************************** /* 4.15 - Chaque média temporel est-il clairement identifiable (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.15.1"] = function($, content) { return null; } /** * */ repository["4.15.2"] = function($, content) { return null; } /******************************************************************** /* 4.16 - Chaque média non temporel a-t-il, si nécessaire, une alternative (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.16.1"] = function($, content) { return null; } /** * */ repository["4.16.2"] = function($, content) { return null; } /******************************************************************** /* 4.17 - Pour chaque média non temporel ayant une alternative, cette alternative est-elle pertinente ? ********************************************************************/ /** * */ repository["4.17.1"] = function($, content) { return null; } /******************************************************************** /* 4.18 - Chaque son déclenché automatiquement est-il contrôlable par l&#39;utilisateur ? ********************************************************************/ /** * */ repository["4.18.1"] = function($, content) { return null; } /******************************************************************** /* 4.19 - Pour chaque média temporel seulement audio pré-enregistré, les dialogues sont-ils suffisamment audibles (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.19.1"] = function($, content) { return null; } /******************************************************************** /* 4.20 - La consultation de chaque média temporel est-elle, si nécessaire, contrôlable par le clavier et la souris ? ********************************************************************/ /** * */ repository["4.20.1"] = function($, content) { return null; } /** * */ repository["4.20.2"] = function($, content) { return null; } /** * */ repository["4.20.3"] = function($, content) { return null; } /******************************************************************** /* 4.21 - La consultation de chaque média non temporel est-elle contrôlable par le clavier et la souris ? ********************************************************************/ /** * */ repository["4.21.1"] = function($, content) { return null; } /** * */ repository["4.21.2"] = function($, content) { return null; } /******************************************************************** /* 4.22 - Chaque média temporel et non temporel est-il compatible avec les technologies d&#39;assistance (hors cas particuliers) ? ********************************************************************/ /** * */ repository["4.22.1"] = function($, content) { return null; } /** * */ repository["4.22.2"] = function($, content) { return null; } /******************************************************************** * 5 - Tableaux ********************************************************************/ /******************************************************************** /* 5.1 - Chaque tableau de données complexe a-t-il un résumé ? ********************************************************************/ /** * */ repository["5.1.1"] = function($, content) { return null; } /******************************************************************** /* 5.2 - Pour chaque tableau de données complexe ayant un résumé, celui-ci est-il pertinent ? ********************************************************************/ /** * */ repository["5.2.1"] = function($, content) { return null; } /******************************************************************** /* 5.3 - Pour chaque tableau de mise en forme, le contenu linéarisé reste-t-il compréhensible ? ********************************************************************/ /** * */ repository["5.3.1"] = function($, content) { return null; } /******************************************************************** /* 5.4 - Chaque tableau de données a-t-il un titre ? ********************************************************************/ /******************************************************************** /* 5.5 - Pour chaque tableau de données ayant un titre, celui-ci est-il pertinent ? ********************************************************************/ /** * */ repository["5.5.1"] = function($, content) { return null; } /******************************************************************** /* 5.6 - Pour chaque tableau de données, chaque en-tête de colonnes et chaque en-tête de lignes sont-ils correctement déclarés ? ********************************************************************/ /** * */ repository["5.6.1"] = function($, content) { return null; } /** * */ repository["5.6.2"] = function($, content) { return null; } /******************************************************************** /* 5.7 - Pour chaque tableau de données, la technique appropriée permettant d&#39;associer chaque cellule avec ses en-têtes est-elle utilisée ? ********************************************************************/ /** * */ repository["5.7.1"] = function($, content) { return null; } /** * */ repository["5.7.2"] = function($, content) { return null; } /** * */ repository["5.7.3"] = function($, content) { return null; } /** * */ repository["5.7.4"] = function($, content) { return null; } /******************************************************************** /* 5.8 - Chaque tableau de mise en forme ne doit pas utiliser d&#39;éléments propres aux tableaux de données. Cette règle est-elle respectée ? ********************************************************************/ /** * Test 5.8.1 : Chaque tableau de mise en forme (balise table) vérifie-t-il ces conditions ? * Le tableau de mise en forme (balise table) ne possède pas de balises caption, th, thead, tfoot ; * Les cellules du tableau de mise en forme (balise td) ne possèdent pas d’attributs scope, headers, colgroup, axis */ repository["5.8.1"] = function($, content) { return rule('5.8.1', $).select("table." + markers['layout-table-class']).addnochildren(['caption', 'th', 'thead', 'tfoot'], '5.8.1.1').addnochildwithattributes('td', ['scope', 'headers', 'colgroup', 'axis'], '5.8.1.2').trigger().result; } /******************************************************************** * 6 - Liens ********************************************************************/ /******************************************************************** /* 6.1 - Chaque lien est-il explicite (hors cas particuliers) ? ********************************************************************/ /** * */ repository["6.1.1"] = function($, content) { return null; } /** * */ repository["6.1.2"] = function($, content) { return null; } /** * */ repository["6.1.3"] = function($, content) { return null; } /** * */ repository["6.1.4"] = function($, content) { return null; } /** * */ repository["6.1.5"] = function($, content) { return null; } /******************************************************************** /* 6.2 - Pour chaque lien ayant un titre de lien, celui-ci est-il pertinent ? ********************************************************************/ /** * */ repository["6.2.1"] = function($, content) { return null; } /** * */ repository["6.2.2"] = function($, content) { return null; } /** * */ repository["6.2.3"] = function($, content) { return null; } /** * */ repository["6.2.4"] = function($, content) { return null; } /** * */ repository["6.2.5"] = function($, content) { return null; } /******************************************************************** /* 6.3 - Chaque intitulé de lien seul est-il explicite hors contexte (hors cas particuliers) ? ********************************************************************/ /** * */ repository["6.3.1"] = function($, content) { return null; } /** * */ repository["6.3.2"] = function($, content) { return null; } /** * */ repository["6.3.3"] = function($, content) { return null; } /** * */ repository["6.3.4"] = function($, content) { return null; } /** * */ repository["6.3.5"] = function($, content) { return null; } /******************************************************************** /* 6.4 - Pour chaque page web, chaque lien identique a-t-il les mêmes fonction et destination ? ********************************************************************/ /** * */ repository["6.4.1"] = function($, content) { return null; } /** * */ repository["6.4.2"] = function($, content) { return null; } /** * */ repository["6.4.3"] = function($, content) { return null; } /** * */ repository["6.4.4"] = function($, content) { return null; } /** * */ repository["6.4.5"] = function($, content) { return null; } /******************************************************************** /* 6.5 - Dans chaque page Web, chaque lien, à l&#39;exception des ancres, a-t-il un intitulé ? ********************************************************************/ /** * */ repository[""] = function($, content) { return null; } /******************************************************************** * 7 - Scripts ********************************************************************/ /******************************************************************** /* 7.1 - Chaque script est-il, si nécessaire, compatible avec les technologies d&#39;assistance ? ********************************************************************/ /** * */ repository["7.1.1"] = function($, content) { return null; } /** * */ repository["7.1.2"] = function($, content) { return null; } /** * */ repository["7.1.3"] = function($, content) { return null; } /** * */ repository["7.1.4"] = function($, content) { return null; } /** * */ repository["7.1.5"] = function($, content) { return null; } /** * */ repository["7.1.6"] = function($, content) { return null; } /******************************************************************** /* 7.2 - Pour chaque script ayant une alternative, cette alternative est-elle pertinente ? ********************************************************************/ /** * */ repository["7.2.1"] = function($, content) { return null; } /** * */ repository["7.2.2"] = function($, content) { return null; } /******************************************************************** /* 7.3 - Chaque script est-il contrôlable par le clavier et la souris (hors cas particuliers) ? ********************************************************************/ /** * */ repository["7.3.1"] = function($, content) { return null; } /** * */ repository["7.3.2"] = function($, content) { return null; } /** * */ repository["7.3.3"] = function($, content) { return null; } /** * */ repository["7.3.4"] = function($, content) { return null; } /******************************************************************** /* 7.4 - Pour chaque script qui initie un changement de contexte, l&#39;utilisateur est-il averti ou en a-t-il le contrôle ? ********************************************************************/ /** * */ repository["7.4.1"] = function($, content) { return null; } /******************************************************************** /* 7.5 - Chaque script qui provoque une alerte non sollicitée est-il contrôlable par l&#39;utilisateur (hors cas particuliers) ? ********************************************************************/ /** * */ repository["7.5.1"] = function($, content) { return null; } /******************************************************************** * 8 - Éléments Obligatoires ********************************************************************/ /******************************************************************** /* 8.1 - Chaque page Web est-elle définie par un type de document ? ********************************************************************/ /** * */ repository["8.1.1"] = function($, content) { var jsdom = require("node-jsdom").jsdom; var document = jsdom(content); var window = document.defaultView; return getResult(window.document.doctype !== null, '8.1.1'); } /** * */ repository["8.1.2"] = function($, content) { var jsdom = require("node-jsdom").jsdom; var document = jsdom(content); var window = document.defaultView; if (window.document.doctype == null) { return getResult(false, '8.1.1'); } else { return getResult(validdoctypes.indexOf(window.document.doctype.publicId) !== -1, '8.1.2'); } }; /** * */ repository["8.1.3"] = function($, content) { var jsdom = require("node-jsdom").jsdom; var document = jsdom(content); var window = document.defaultView; if (window.document.doctype === null && content.indexOf("<!DOCTYPE") !== -1) { return getResult(false, '8.1.3'); } if (window.document.doctype === null) { return getResult(false, '8.1.1'); } if (validdoctypes.indexOf(window.document.doctype.publicId) === -1) { return getResult(false, '8.1.2'); } return { "success": true }; }; /******************************************************************** /* 8.2 - Pour chaque page Web, le code source est-il valide selon le type de document spécifié hors cas particuliers ? ********************************************************************/ /** * */ repository["8.2.1"] = function($, content) { return null; } /** * */ repository["8.2.2"] = function($, content) { return null; } /******************************************************************** /* 8.3 - Dans chaque page Web, la langue par défaut est-elle présente ? ********************************************************************/ /** * Test 8.3.1 : Pour chaque page Web, l’indication de langue par défaut vérifie-t-elle une de ces conditions ? * L’indication de la langue de la page (attribut lang et/ou xml:lang) est donnée pour l’élément html ; * L’indication de la langue de la page (attribut lang et/ou xml:lang) est donnée sur chaque élément de texte ou sur l’un des éléments parents. */ repository["8.3.1"] = function($, content) { return getResult($('html[xml\\:lang]').length + ($("html[lang]")).length > 0, '8.3.1'); } /******************************************************************** /* 8.4 - Pour chaque page Web ayant une langue par défaut, le code de langue est-il pertinent ? ********************************************************************/ /** * */ repository["8.4.1"] = function($, content) { if ($('html[xml\\:lang]').length + ($("html[lang]")).length === 0) { return getResult(false, '8.3.1'); } var valid = true; if ($('html').attr('lang') !== null) { valid = tags.check($('html').attr('lang')); } if ($('html').attr('xml:lang') !== null) { valid = valid && tags.check($('html').attr('xml:lang')); } return getResult(valid, '8.4.1'); } /******************************************************************** /* 8.5 - Chaque page Web a-t-elle un titre de page ? ********************************************************************/ /** * Test 8.5.1 : Chaque page Web a-t-elle un titre de page (balise title) ? */ repository["8.5.1"] = function($, content) { return rule("8.5.1", $).select("head:not(:has(>title))").noelement().trigger().result; } /******************************************************************** /* 8.6 - Pour chaque page Web ayant un titre de page, ce titre est-il pertinent ? ********************************************************************/ /** * */ repository["8.6.1"] = function($, content) { return null; } /******************************************************************** /* 8.7 - Dans chaque page Web, chaque changement de langue est-il indiqué dans le code source (hors cas particuliers) ? ********************************************************************/ /** * */ repository["8.7.1"] = function($, content) { return null; } /******************************************************************** /* 8.8 - Dans chaque page Web, chaque changement de langue est-il pertinent ? ********************************************************************/ /** * */ repository["8.8.1"] = function($, content) { return null; } /** * */ repository["8.8.2"] = function($, content) { return null; } /******************************************************************** /* 8.9 - Dans chaque page Web, les balises ne doivent pas être utilisées uniquement à des fins de présentation. Cette règle est-elle respectée ? ********************************************************************/ /** * */ repository["8.9.1"] = function($, content) { return null; } /******************************************************************** /* 8.10 - Dans chaque page Web, les changements du sens de lecture sont-ils signalés ? ********************************************************************/ /** * */ repository["8.10.1"] = function($, content) { return null; } /******************************************************************** * 9 - Structuration de l&#39;information ********************************************************************/ /******************************************************************** /* 9.1 - Dans chaque page Web, l&#39;information est-elle structurée par l&#39;utilisation appropriée de titres ? ********************************************************************/ /** * */ repository["9.1.1"] = function($, content) { return null; } /** * */ repository["9.1.2"] = function($, content) { return null; } /** * */ repository["9.1.3"] = function($, content) { return null; } /** * */ repository["9.1.4"] = function($, content) { return null; } /******************************************************************** /* 9.2 - Dans chaque page Web, la structure du document est-elle cohérente ? ********************************************************************/ /** * */ repository["9.2.1"] = function($, content) { return null; } /** * */ repository["9.2.2"] = function($, content) { return null; } /******************************************************************** /* 9.3 - Dans chaque page Web, chaque liste est-elle correctement structurée ? ********************************************************************/ /** * */ repository["9.3.1"] = function($, content) { return null; } /** * */ repository["9.3.2"] = function($, content) { return null; } /** * */ repository["9.3.3"] = function($, content) { return null; } /******************************************************************** /* 9.4 - Dans chaque page Web, la première occurrence de chaque abréviation permet-elle d&#39;en connaître la signification ? ********************************************************************/ /** * */ repository["9.4.1"] = function($, content) { return null; } /******************************************************************** /* 9.5 - Dans chaque page Web, la signification de chaque abréviation est-elle pertinente ? ********************************************************************/ /** * */ repository["9.5.1"] = function($, content) { return null; } /******************************************************************** /* 9.6 - Dans chaque page Web, chaque citation est-elle correctement indiquée ? ********************************************************************/ /** * */ repository["9.6.1"] = function($, content) { return null; } /** * */ repository["9.6.2"] = function($, content) { return null; } /******************************************************************** * 10 - Présentation de l&#39;information ********************************************************************/ /******************************************************************** /* 10.1 - Dans le site Web, des feuilles de styles sont-elles utilisées pour contrôler la présentation de l&#39;information ? ********************************************************************/ /** * */ repository["10.1.1"] = function($, content) { return null; } /** * */ repository["10.1.2"] = function($, content) { return null; } /** * */ repository["10.1.3"] = function($, content) { return null; } /******************************************************************** /* 10.2 - Dans chaque page Web, le contenu visible reste-t-il présent lorsque les feuilles de styles sont désactivées ? ********************************************************************/ /** * */ repository["10.2.1"] = function($, content) { return null; } /******************************************************************** /* 10.3 - Dans chaque page Web, l&#39;information reste-t-elle compréhensible lorsque les feuilles de styles sont désactivées ? ********************************************************************/ /** * */ repository["10.3.1"] = function($, content) { return null; } /******************************************************************** /* 10.4 - Dans chaque page Web, le texte reste-t-il lisible lorsque la taille des caractères est augmentée jusqu&#39;à 200%, au moins ? ********************************************************************/ /** * */ repository["10.4.1"] = function($, content) { return null; } /** * */ repository["10.4.2"] = function($, content) { return null; } /** * */ repository["10.4.3"] = function($, content) { return null; } /******************************************************************** /* 10.5 - Dans chaque page Web, les déclarations CSS de couleurs de fond d&#39;élément et de police sont-elles correctement utilisées ? ********************************************************************/ /** * */ repository["10.5.1"] = function($, content) { return null; } /** * */ repository["10.5.2"] = function($, content) { return null; } /** * */ repository["10.5.3"] = function($, content) { return null; } /******************************************************************** /* 10.6 - Dans chaque page Web, chaque lien dont la nature n&#39;est pas évidente est-il visible par rapport au texte environnant ? ********************************************************************/ /** * */ repository["10.6.1"] = function($, content) { return null; } /******************************************************************** /* 10.7 - Dans chaque page Web, pour chaque élément recevant le focus, la prise de focus est-elle visible ? ********************************************************************/ /** * */ repository["10.7.1"] = function($, content) { return null; } /** * */ repository["10.7.2"] = function($, content) { return null; } /** * */ repository["10.7.3"] = function($, content) { return null; } /******************************************************************** /* 10.8 - Dans chaque page Web, le choix de la couleur de fond et de police du texte est-il contrôlable par l&#39;utilisateur ? ********************************************************************/ /** * */ repository["10.8.1"] = function($, content) { return null; } /** * */ repository["10.8.2"] = function($, content) { return null; } /** * */ repository["10.8.3"] = function($, content) { return null; } /** * */ repository["10.8.4"] = function($, content) { return null; } /******************************************************************** /* 10.9 - Pour chaque page Web, le texte ne doit pas être justifié. Cette règle est-elle respectée ? ********************************************************************/ /** * */ repository["10.9.1"] = function($, content) { return null; } /******************************************************************** /* 10.10 - Pour chaque page Web, en affichage plein écran et avec une taille de police à 200%, chaque bloc de texte reste-t-il lisible sans l&#39;utilisation de la barre de défilement horizontal ? ********************************************************************/ /** * */ repository["10.10.1"] = function($, content) { return null; } /******************************************************************** /* 10.11 - Pour chaque page Web, les blocs de texte ont-ils une largeur inférieure ou égale à 80 caractères (hors cas particuliers) ? ********************************************************************/ /** * */ repository["10.11.1"] = function($, content) { return null; } /******************************************************************** /* 10.12 - Pour chaque page Web, l&#39;espace entre les lignes et les paragraphes est-il suffisant ? ********************************************************************/ /** * */ repository["10.12.1"] = function($, content) { return null; } /** * */ repository["10.12.2"] = function($, content) { return null; } /******************************************************************** /* 10.13 - Pour chaque page Web, les textes cachés sont-ils correctement affichés pour être restitués par les technologies d&#39;assistance ? ********************************************************************/ /** * */ repository["10.13.1"] = function($, content) { return null; } /** * */ repository["10.13.2"] = function($, content) { return null; } /** * */ repository["10.13.3"] = function($, content) { return null; } /******************************************************************** /* 10.14 - Dans chaque page Web, l&#39;information ne doit pas être donnée uniquement par la forme, taille ou position. Cette règle est-elle respectée ? ********************************************************************/ /** * */ repository["10.14.1"] = function($, content) { return null; } /** * */ repository["10.14.2"] = function($, content) { return null; } /** * */ repository["10.14.3"] = function($, content) { return null; } /** * */ repository["10.14.4"] = function($, content) { return null; } /******************************************************************** /* 10.15 - Dans chaque page Web, l&#39;information ne doit pas être donnée par la forme, taille ou position uniquement. Cette règle est-elle implémentée de façon pertinente ? ********************************************************************/ /** * */ repository["10.15.1"] = function($, content) { return null; } /** * */ repository["10.15.2"] = function($, content) { return null; } /** * */ repository["10.15.3"] = function($, content) { return null; } /** * */ repository["10.15.4"] = function($, content) { return null; } /******************************************************************** * 11 - Formulaires ********************************************************************/ /******************************************************************** /* 11.1 - Chaque champ de formulaire a-t-il une étiquette ? ********************************************************************/ /** * */ repository["11.1.1"] = function($, content) { return null; } /** * */ repository["11.1.2"] = function($, content) { return null; } /** * */ repository["11.1.3"] = function($, content) { return null; } /******************************************************************** /* 11.2 - Chaque étiquette associée à un champ de formulaire est-elle pertinente ? ********************************************************************/ /** * */ repository["11.2.1"] = function($, content) { return null; } /** * */ repository["11.2.2"] = function($, content) { return null; } /** * */ repository["11.2.3"] = function($, content) { return null; } /** * */ repository["11.2.4"] = function($, content) { return null; } /******************************************************************** /* 11.3 - Dans chaque formulaire, chaque étiquette associée à un champ de formulaire ayant la même fonction et répétée plusieurs fois dans une même page ou dans un ensemble de pages est-elle cohérente ? ********************************************************************/ /** * */ repository["11.3.1"] = function($, content) { return null; } /** * */ repository["11.3.2"] = function($, content) { return null; } /******************************************************************** /* 11.4 - Dans chaque formulaire, chaque étiquette de champ et son champ associé sont-ils accolés ? ********************************************************************/ /** * */ repository["11.4.1"] = function($, content) { return null; } /******************************************************************** /* 11.5 - Dans chaque formulaire, les informations de même nature sont-elles regroupées, si nécessaire ? ********************************************************************/ /** * */ repository["11.5.1"] = function($, content) { return null; } /******************************************************************** /* 11.6 - Dans chaque formulaire, chaque regroupement de champs de formulaire a-t-il une légende ? ********************************************************************/ /** * */ repository["11.6.1"] = function($, content) { return null; } /******************************************************************** /* 11.7 - Dans chaque formulaire, chaque légende associée à un groupement de champs de formulaire est-elle pertinente ? ********************************************************************/ /** * */ repository["11.7.1"] = function($, content) { return null; } /******************************************************************** /* 11.8 - Dans chaque formulaire, chaque liste de choix est-elle structurée de manière pertinente ? ********************************************************************/ /** * */ repository["11.8.1"] = function($, content) { return null; } /** * */ repository["11.8.2"] = function($, content) { return null; } /** * */ repository["11.8.3"] = function($, content) { return null; } /******************************************************************** /* 11.9 - Dans chaque formulaire, l&#39;intitulé de chaque bouton est-il pertinent ? ********************************************************************/ /** * */ repository["11.9.1"] = function($, content) { return null; } /** * */ repository["11.9.2"] = function($, content) { return null; } /******************************************************************** /* 11.10 - Dans chaque formulaire, le contrôle de saisie est-il utilisé de manière pertinente ? ********************************************************************/ /** * */ repository["11.10.1"] = function($, content) {