From 05c1aedef38aa5f9322edc94038d75b64fc0ffc7 Mon Sep 17 00:00:00 2001 From: Roni Laukkarinen Date: Mon, 29 Jan 2018 18:09:00 +0200 Subject: [PATCH] Add accessibility tests Ref: https://github.com/yargalot/gulp-accessibility/issues/21 --- .accessibilityrc | 3 +++ functions.php | 2 +- gulpfile.js | 50 ++++++++++++++++++++++++++++++++++++++++++------ package.json | 5 ++++- style.css | 4 ++-- wcag-test.js | 13 +++++++++++++ 6 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 .accessibilityrc create mode 100644 wcag-test.js diff --git a/.accessibilityrc b/.accessibilityrc new file mode 100644 index 00000000..bc5cdb9d --- /dev/null +++ b/.accessibilityrc @@ -0,0 +1,3 @@ +options: { + browser: true +} \ No newline at end of file diff --git a/functions.php b/functions.php index 20448854..d404290b 100644 --- a/functions.php +++ b/functions.php @@ -5,7 +5,7 @@ * @package air */ -define( 'AIR_VERSION', '3.4.3' ); +define( 'AIR_VERSION', '3.4.4' ); /** * Requires. diff --git a/gulpfile.js b/gulpfile.js index 561795ee..383bc422 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -18,6 +18,7 @@ var util = require('gulp-util'); var header = require('gulp-header'); var pixrem = require('gulp-pixrem'); var exec = require('child_process').exec; +var access = require('gulp-accessibility'); /* @@ -27,6 +28,7 @@ FILE PATHS var sassSrc = 'sass/**/*.{sass,scss}'; var sassFile = 'sass/base/global.scss'; +var phpSrc = '**/*.php'; var cssDest = 'css'; var customjs = 'js/scripts.js'; var jsSrc = 'js/src/**/*.js'; @@ -64,9 +66,9 @@ Notes: gulp.task('browsersync', function() { var files = [ - '**/*.php', + phpSrc, jsSrc - ]; + ]; browserSync.init(files, { proxy: "airdev.test", @@ -74,9 +76,37 @@ gulp.task('browsersync', function() { open: "external", notify: true }); +}); + +/* + +ACCESSIBILITY +============= +*/ +gulp.task('a11y', function() { + + // Use https://github.com/digitoimistodude/gulp-sitemap-generator + // Go to http://airdev.test/?show_sitemap to get list and paste here + //var files = ["http:\/\/airdev.test\/2013\/01\/07\/sticky\/","http:\/\/airdev.test\/2012\/01\/07\/template-sticky\/","http:\/\/airdev.test\/test-english-front-page\/","http:\/\/airdev.test\/2016\/08\/12\/uusi-podcast\/","http:\/\/airdev.test\/about\/page-with-a-title-so-long-you-havent-seen-a-title-this-long-before\/","http:\/\/airdev.test\/kauppa\/","http:\/\/airdev.test\/ostoskori\/","http:\/\/airdev.test\/kassa\/","http:\/\/airdev.test\/oma-tili\/","http:\/\/airdev.test\/2015\/12\/06\/moikka-maailma\/","http:\/\/airdev.test\/about-2\/","http:\/\/airdev.test\/about\/page-markup-and-formatting\/","http:\/\/airdev.test\/about\/page-image-alignment\/","http:\/\/airdev.test\/2013\/03\/15\/twitter-embeds\/","http:\/\/airdev.test\/2013\/03\/15\/featured-image-vertical\/","http:\/\/airdev.test\/2013\/03\/15\/featured-image-horizontal\/","http:\/\/airdev.test\/2013\/03\/15\/nested-and-mixed-lists\/","http:\/\/airdev.test\/2013\/03\/15\/more-tag\/","http:\/\/airdev.test\/2013\/03\/15\/excerpt\/","http:\/\/airdev.test\/2013\/01\/11\/markup-and-formatting\/","http:\/\/airdev.test\/2013\/01\/11\/markup-html-tags-and-formatting\/","http:\/\/airdev.test\/2013\/01\/10\/image-alignment\/","http:\/\/airdev.test\/2013\/01\/10\/markup-image-alignment\/","http:\/\/airdev.test\/2013\/01\/09\/text-alignment\/","http:\/\/airdev.test\/2013\/01\/09\/markup-text-alignment\/","http:\/\/airdev.test\/2013\/01\/08\/paginated\/","http:\/\/airdev.test\/2013\/01\/06\/no-content\/","http:\/\/airdev.test\/2013\/01\/05\/non-breaking-text\/","http:\/\/airdev.test\/2013\/01\/05\/title-with-special-characters-2\/","http:\/\/airdev.test\/2013\/01\/05\/title-with-special-characters\/","http:\/\/airdev.test\/2013\/01\/05\/title-with-markup\/","http:\/\/airdev.test\/2013\/01\/05\/markup-title-with-markup\/","http:\/\/airdev.test\/2013\/01\/05\/no-title\/","http:\/\/airdev.test\/2013\/01\/04\/password-protected\/","http:\/\/airdev.test\/2013\/01\/03\/comments\/","http:\/\/airdev.test\/2013\/01\/02\/comments-disabled\/","http:\/\/airdev.test\/2013\/01\/01\/pingbacks-an-trackbacks\/","http:\/\/airdev.test\/2012\/12\/11\/post-format-standard-2\/","http:\/\/airdev.test\/2012\/12\/10\/post-format-gallery-2\/","http:\/\/airdev.test\/2012\/12\/09\/post-format-aside-2\/","http:\/\/airdev.test\/2012\/12\/08\/post-format-chat-2\/","http:\/\/airdev.test\/2012\/12\/07\/post-format-link-2\/","http:\/\/airdev.test\/2012\/12\/06\/post-format-image-caption-2\/","http:\/\/airdev.test\/2012\/12\/05\/post-format-image-2\/","http:\/\/airdev.test\/2012\/12\/04\/post-format-quote-2\/","http:\/\/airdev.test\/2012\/12\/03\/post-format-status-2\/","http:\/\/airdev.test\/2012\/12\/02\/post-format-video-videopress-2\/","http:\/\/airdev.test\/2012\/12\/02\/post-format-video\/","http:\/\/airdev.test\/2012\/12\/01\/post-format-audio-2\/","http:\/\/airdev.test\/2012\/11\/02\/many-categories\/","http:\/\/airdev.test\/2012\/11\/01\/many-tags\/","http:\/\/airdev.test\/2012\/03\/15\/template-featured-image-vertical\/","http:\/\/airdev.test\/2012\/03\/15\/template-featured-image-horizontal\/","http:\/\/airdev.test\/2012\/03\/15\/template-more-tag\/","http:\/\/airdev.test\/2012\/03\/15\/template-excerpt-defined\/","http:\/\/airdev.test\/2012\/03\/14\/template-excerpt-generated\/","http:\/\/airdev.test\/2012\/01\/08\/template-paginated\/","http:\/\/airdev.test\/2012\/01\/04\/template-password-protected\/","http:\/\/airdev.test\/2012\/01\/03\/template-comments\/","http:\/\/airdev.test\/2012\/01\/02\/template-comments-disabled\/","http:\/\/airdev.test\/2012\/01\/01\/template-pingbacks-an-trackbacks\/","http:\/\/airdev.test\/level-1\/level-2\/level-3b\/","http:\/\/airdev.test\/level-1\/level-2\/level-3a\/","http:\/\/airdev.test\/level-1\/level-2b\/","http:\/\/airdev.test\/level-1\/level-2a\/","http:\/\/airdev.test\/page-b\/","http:\/\/airdev.test\/page-a\/","http:\/\/airdev.test\/blog\/","http:\/\/airdev.test\/","http:\/\/airdev.test\/2011\/03\/15\/media-twitter-embeds\/","http:\/\/airdev.test\/2010\/10\/05\/post-format-standard\/","http:\/\/airdev.test\/2010\/09\/10\/post-format-gallery\/","http:\/\/airdev.test\/2010\/09\/09\/post-format-gallery-tiled\/","http:\/\/airdev.test\/2010\/08\/08\/post-format-image\/","http:\/\/airdev.test\/2010\/08\/07\/post-format-image-caption\/","http:\/\/airdev.test\/2010\/08\/06\/post-format-image-linked\/","http:\/\/airdev.test\/about\/clearing-floats\/","http:\/\/airdev.test\/about\/","http:\/\/airdev.test\/2010\/07\/02\/post-format-audio\/","http:\/\/airdev.test\/2010\/06\/03\/post-format-video-wordpresstv\/","http:\/\/airdev.test\/2010\/06\/02\/post-format-video-videopress\/","http:\/\/airdev.test\/2010\/06\/02\/post-format-video-youtube\/","http:\/\/airdev.test\/2010\/05\/09\/post-format-aside\/","http:\/\/airdev.test\/2010\/04\/04\/post-format-status\/","http:\/\/airdev.test\/2010\/03\/07\/post-format-link\/","http:\/\/airdev.test\/2010\/02\/05\/post-format-quote\/","http:\/\/airdev.test\/2010\/01\/08\/post-format-chat\/","http:\/\/airdev.test\/2009\/10\/05\/title-should-not-overflow-the-content-area\/","http:\/\/airdev.test\/2009\/09\/05\/edge-case-no-title\/","http:\/\/airdev.test\/2009\/08\/06\/edge-case-no-content\/","http:\/\/airdev.test\/2009\/07\/02\/edge-case-many-categories\/","http:\/\/airdev.test\/2009\/06\/01\/edge-case-many-tags\/","http:\/\/airdev.test\/2009\/05\/15\/edge-case-nested-and-mixed-lists\/","http:\/\/airdev.test\/level-1\/","http:\/\/airdev.test\/level-1\/level-2\/","http:\/\/airdev.test\/level-1\/level-2\/level-3\/","http:\/\/airdev.test\/about\/page-with-comments-disabled\/","http:\/\/airdev.test\/about\/page-with-comments\/","http:\/\/airdev.test\/lorem-ipsum\/"] + + // Coming soon, see: https://github.com/yargalot/gulp-accessibility/issues/21 + + return gulp.src(files) + .pipe(access({ + accessibilityLevel: 'WCAG2AA', + browser: true, + reportType: 'json', + reportLevels: { + notice: false, + warning: false, + error: true + } + })) + .on('error', console.log) }); + /* STYLES @@ -160,11 +190,19 @@ WATCH */ -// Run the JS task followed by a reload -gulp.task('js-watch', ['js'], browserSync.reload); -gulp.task('watch', ['browsersync'], function() { +gulp.task('watch', ['browsersync'], () => { + gulp.watch(phpSrc, ['a11y'], browserSync ? browserSync.reload : {}); gulp.watch(sassSrc, ['styles']); - gulp.watch(jsSrc, ['js-watch']); + gulp.watch(jsSrc, ['js']); }); + +/* + +DEFAULT +===== + +*/ + +gulp.task('default', ['watch']); diff --git a/package.json b/package.json index 790b7ea8..603ef6b2 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,20 @@ { "name": "air", - "version": "3.4.3", + "version": "3.4.4", "description": "A minimalist WordPress starter theme.", "author": "Digitoimisto Dude Oy (moro@dude.fi)", "devDependencies": { + "access-sniff": "^3.1.0", "browser-sync": "^2.18.13", "gulp": "^3.9.1", + "gulp-accessibility": "^3.0.1", "gulp-autoprefixer": "4.0.0", "gulp-changed": "^3.1.1", "gulp-clean-css": "3.9.0", "gulp-concat": "2.6.1", "gulp-header": "1.8.9", "gulp-notify": "^3.0.0", + "gulp-php2html": "^0.3.2", "gulp-pixrem": "^1.0.0", "gulp-sass": "^3.1.0", "gulp-sourcemaps": "^2.6.1", diff --git a/style.css b/style.css index cc23c720..c16c5109 100644 --- a/style.css +++ b/style.css @@ -4,7 +4,7 @@ Theme URI: https://github.com/digitoimistodude/air Author: Digitoimisto Dude Oy Author URI: https://www.dude.fi Description: A minimalist WordPress starter theme. -Version: 3.4.3 +Version: 3.4.4 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: air @@ -20,5 +20,5 @@ Tags: one-column, accessibility-ready, translation-ready * * @author Roni Laukkarinen (https://github.com/ronilaukkarinen), Timi Wahalahti (https://github.com/timiwahalahti) * @version 25.01.2018 -* @since 28.01.2016 +* @since 29.01.2016 */ diff --git a/wcag-test.js b/wcag-test.js new file mode 100644 index 00000000..fd9b1e55 --- /dev/null +++ b/wcag-test.js @@ -0,0 +1,13 @@ +const accessSniff = require('access-sniff'); +const files = ["http:\/\/airdev.test\/2013\/01\/07\/sticky\/","http:\/\/airdev.test\/2012\/01\/07\/template-sticky\/","http:\/\/airdev.test\/test-english-front-page\/","http:\/\/airdev.test\/2016\/08\/12\/uusi-podcast\/","http:\/\/airdev.test\/about\/page-with-a-title-so-long-you-havent-seen-a-title-this-long-before\/","http:\/\/airdev.test\/kauppa\/","http:\/\/airdev.test\/ostoskori\/","http:\/\/airdev.test\/kassa\/","http:\/\/airdev.test\/oma-tili\/","http:\/\/airdev.test\/2015\/12\/06\/moikka-maailma\/","http:\/\/airdev.test\/about-2\/","http:\/\/airdev.test\/about\/page-markup-and-formatting\/","http:\/\/airdev.test\/about\/page-image-alignment\/","http:\/\/airdev.test\/2013\/03\/15\/twitter-embeds\/","http:\/\/airdev.test\/2013\/03\/15\/featured-image-vertical\/","http:\/\/airdev.test\/2013\/03\/15\/featured-image-horizontal\/","http:\/\/airdev.test\/2013\/03\/15\/nested-and-mixed-lists\/","http:\/\/airdev.test\/2013\/03\/15\/more-tag\/","http:\/\/airdev.test\/2013\/03\/15\/excerpt\/","http:\/\/airdev.test\/2013\/01\/11\/markup-and-formatting\/","http:\/\/airdev.test\/2013\/01\/11\/markup-html-tags-and-formatting\/","http:\/\/airdev.test\/2013\/01\/10\/image-alignment\/","http:\/\/airdev.test\/2013\/01\/10\/markup-image-alignment\/","http:\/\/airdev.test\/2013\/01\/09\/text-alignment\/","http:\/\/airdev.test\/2013\/01\/09\/markup-text-alignment\/","http:\/\/airdev.test\/2013\/01\/08\/paginated\/","http:\/\/airdev.test\/2013\/01\/06\/no-content\/","http:\/\/airdev.test\/2013\/01\/05\/non-breaking-text\/","http:\/\/airdev.test\/2013\/01\/05\/title-with-special-characters-2\/","http:\/\/airdev.test\/2013\/01\/05\/title-with-special-characters\/","http:\/\/airdev.test\/2013\/01\/05\/title-with-markup\/","http:\/\/airdev.test\/2013\/01\/05\/markup-title-with-markup\/","http:\/\/airdev.test\/2013\/01\/05\/no-title\/","http:\/\/airdev.test\/2013\/01\/04\/password-protected\/","http:\/\/airdev.test\/2013\/01\/03\/comments\/","http:\/\/airdev.test\/2013\/01\/02\/comments-disabled\/","http:\/\/airdev.test\/2013\/01\/01\/pingbacks-an-trackbacks\/","http:\/\/airdev.test\/2012\/12\/11\/post-format-standard-2\/","http:\/\/airdev.test\/2012\/12\/10\/post-format-gallery-2\/","http:\/\/airdev.test\/2012\/12\/09\/post-format-aside-2\/","http:\/\/airdev.test\/2012\/12\/08\/post-format-chat-2\/","http:\/\/airdev.test\/2012\/12\/07\/post-format-link-2\/","http:\/\/airdev.test\/2012\/12\/06\/post-format-image-caption-2\/","http:\/\/airdev.test\/2012\/12\/05\/post-format-image-2\/","http:\/\/airdev.test\/2012\/12\/04\/post-format-quote-2\/","http:\/\/airdev.test\/2012\/12\/03\/post-format-status-2\/","http:\/\/airdev.test\/2012\/12\/02\/post-format-video-videopress-2\/","http:\/\/airdev.test\/2012\/12\/02\/post-format-video\/","http:\/\/airdev.test\/2012\/12\/01\/post-format-audio-2\/","http:\/\/airdev.test\/2012\/11\/02\/many-categories\/","http:\/\/airdev.test\/2012\/11\/01\/many-tags\/","http:\/\/airdev.test\/2012\/03\/15\/template-featured-image-vertical\/","http:\/\/airdev.test\/2012\/03\/15\/template-featured-image-horizontal\/","http:\/\/airdev.test\/2012\/03\/15\/template-more-tag\/","http:\/\/airdev.test\/2012\/03\/15\/template-excerpt-defined\/","http:\/\/airdev.test\/2012\/03\/14\/template-excerpt-generated\/","http:\/\/airdev.test\/2012\/01\/08\/template-paginated\/","http:\/\/airdev.test\/2012\/01\/04\/template-password-protected\/","http:\/\/airdev.test\/2012\/01\/03\/template-comments\/","http:\/\/airdev.test\/2012\/01\/02\/template-comments-disabled\/","http:\/\/airdev.test\/2012\/01\/01\/template-pingbacks-an-trackbacks\/","http:\/\/airdev.test\/level-1\/level-2\/level-3b\/","http:\/\/airdev.test\/level-1\/level-2\/level-3a\/","http:\/\/airdev.test\/level-1\/level-2b\/","http:\/\/airdev.test\/level-1\/level-2a\/","http:\/\/airdev.test\/page-b\/","http:\/\/airdev.test\/page-a\/","http:\/\/airdev.test\/blog\/","http:\/\/airdev.test\/","http:\/\/airdev.test\/2011\/03\/15\/media-twitter-embeds\/","http:\/\/airdev.test\/2010\/10\/05\/post-format-standard\/","http:\/\/airdev.test\/2010\/09\/10\/post-format-gallery\/","http:\/\/airdev.test\/2010\/09\/09\/post-format-gallery-tiled\/","http:\/\/airdev.test\/2010\/08\/08\/post-format-image\/","http:\/\/airdev.test\/2010\/08\/07\/post-format-image-caption\/","http:\/\/airdev.test\/2010\/08\/06\/post-format-image-linked\/","http:\/\/airdev.test\/about\/clearing-floats\/","http:\/\/airdev.test\/about\/","http:\/\/airdev.test\/2010\/07\/02\/post-format-audio\/","http:\/\/airdev.test\/2010\/06\/03\/post-format-video-wordpresstv\/","http:\/\/airdev.test\/2010\/06\/02\/post-format-video-videopress\/","http:\/\/airdev.test\/2010\/06\/02\/post-format-video-youtube\/","http:\/\/airdev.test\/2010\/05\/09\/post-format-aside\/","http:\/\/airdev.test\/2010\/04\/04\/post-format-status\/","http:\/\/airdev.test\/2010\/03\/07\/post-format-link\/","http:\/\/airdev.test\/2010\/02\/05\/post-format-quote\/","http:\/\/airdev.test\/2010\/01\/08\/post-format-chat\/","http:\/\/airdev.test\/2009\/10\/05\/title-should-not-overflow-the-content-area\/","http:\/\/airdev.test\/2009\/09\/05\/edge-case-no-title\/","http:\/\/airdev.test\/2009\/08\/06\/edge-case-no-content\/","http:\/\/airdev.test\/2009\/07\/02\/edge-case-many-categories\/","http:\/\/airdev.test\/2009\/06\/01\/edge-case-many-tags\/","http:\/\/airdev.test\/2009\/05\/15\/edge-case-nested-and-mixed-lists\/","http:\/\/airdev.test\/level-1\/","http:\/\/airdev.test\/level-1\/level-2\/","http:\/\/airdev.test\/level-1\/level-2\/level-3\/","http:\/\/airdev.test\/about\/page-with-comments-disabled\/","http:\/\/airdev.test\/about\/page-with-comments\/","http:\/\/airdev.test\/lorem-ipsum\/"] +const options = { + accessibilityLevel: 'WCAG2AA', + reportType: 'json', + reportLevels: { + notice: false, + warning: false, + error: true + } +}; + +accessSniff.start(files, options); \ No newline at end of file