1
0
Fork 0
mirror of https://git.sr.ht/~seirdy/seirdy.one synced 2024-12-05 01:12:11 +00:00
seirdy.one/scripts/bin/check-whole-site
Rohan Kumar 21dc952eb2
Internal: speed-up/fix check-whole-site
- Run webhint in parallel with other site checks, right after the
  deployment finishes
- Fix webhint perf budget (it warns when within 0.5 sec so give it a
  0.5 sec buffer)
- Throttle LH a bit more
2022-08-08 21:34:58 -07:00

70 lines
1.8 KiB
Bash
Executable file

#!/usr/bin/env dash
set -e -u
# the name of this program
progname="$(basename "${0}")"
help_text="Usage: $progname [OPTIONS...] [BASEURL]
Validate the site's markup, CSS, and accessibility.
Uses xmllint to to check well-formedness and the Nu HTML Checker to
check (X)HTML5 and CSS validity on every markup file (inc. HTML, XHTML,
SVG). (xmllint is only relevant if you're using XML syntax).
Lints source CSS files with stylelint.
Uses both axe-core and the IBM Equal Access Checker to test
accessibility on every page in the sitemap.
Options:
-h Print this help and exit
-j Max parallel jobs. Default: 2
"
# TODO: add the following:
# - validate JSON schema (web app manifest, webfinger)
usage() {
printf '%s' "${help_text}"
}
# when the user passess bad args, send a msg to stderr and exit
# usage: bad_option <option> <reason>
bad_option() {
echo "${progname}: option ${1}: ${2}" >&2
usage >&2
exit 1
}
jobs='2'
while getopts "hj" flags; do
case ${flags} in
h)
usage
exit 0
;;
j)
jobs="$1"
shift
;;
*)
bad_option "${flags}" 'invalid option'
exit 1
;;
esac
done
base_url="${1-http://localhost:8089}"
# HTML validation is already parallelized, so run that single-threaded.
make -j1 HUGO_FLAGS=-DF HUGO_BASEURL="$base_url" clean hugo xhtmlize validate-html
make -j "$jobs" -f Makefile.online HUGO_BASEURL="$base_url" all-extra URLS="$(curl -sSL "$base_url/sitemap.xml" | htmlq loc -t | rg -v '/search/$' | tr '\n' ' ')" &
make deploy-staging RSYNCFLAGS_EXTRA=-q
make -f Makefile.online hint-online URLS="$(curl -sSL --compressed https://staging.seirdy.one/sitemap.xml | htmlq loc -t | rg -v '/(?:search|wcag-is-a-starting-point)/$' | sort | tr '\n' ' ')"
wait
# TODO: run lighthouse on every page in the sitemap.
# vi:ft=sh