htmltest

by wjdp

wjdp / htmltest

:white_check_mark: Test generated HTML for problems

155 Stars 27 Forks Last release: 3 months ago (v0.13.0) MIT License 225 Commits 28 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

:whitecheckmark: htmltest

Travis Build Status Go Report Card codecov GoDoc

If you generate HTML files, html-proofer might be the tool for you. If you can't be bothered with a Ruby environment or fancy something a bit faster, htmltest may be a better option.

:mag: htmltest runs your HTML output through a series of checks to ensure all your links, images, scripts references work, your alt tags are filled in, et cetera.

:horse_racing: Faster? Yep, quite a bit actually. On a site with over 2000 files htmlproofer took over three minutes, htmltest took 8.6 seconds. Both tools had full valid caches.

:confused: Why make another tool: A mix of frustration with using htmlproofer/Ruby on large sites and needing a good project to get to grips with Go.

:floppy_disk: Installation

:penguin: Linux / :green_apple: OSX / :iphone: Arm

System-wide Install

curl https://htmltest.wjdp.uk | sudo bash -s -- -b /usr/local/bin

You'll be prompted for your password. After simply do

htmltest
to run.

Into Current Directory

curl https://htmltest.wjdp.uk | bash

By default this will install

htmltest
into
./bin
of your current directory, to run do
bin/htmltest
. Rather suitable for CI environments.

win64 Windows

:arrow_down: Download the latest binary release and put it somewhere on your PATH.

:blowfish: OpenBSD

:arrow_down: Download the latest binary release and put it somewhere on your PATH.

You can also build from sources by cloning this repo and running

sh build.sh
, which puts the
htmltest
executable in the
./bin
dir. Use in place, or install to path such as
/usr/local/bin
.

:whale: Docker

docker run -v $(pwd):/test --rm wjdp/htmltest

Mount your directory with html files into the container and test them.

If you need more arguments to the test run it like this:

docker run -v $(pwd):/test --rm wjdp/htmltest -l 3 -s

Notes

We store temporary files in

tmp/.htmltest
by default. You probably want to ignore that in your version control system, and perhaps cache it in your CI system.

:computer: Usage

htmltest - Test generated HTML for problems
           https://github.com/wjdp/htmltest

Usage: htmltest [options] [] htmltest -v --version htmltest -h --help

Options: Path to directory or file to test, if omitted we attempt to read from .htmltest.yml. -c FILE, --conf FILE Custom path to config file. -h, --help Show this text. -l LEVEL, --log-level LEVEL Logging level, 0-3: debug, info, warning, error. -s, --skip-external Skip external link checks, may shorten execution time considerably. -v, --version Show version and build time.

:microscope: What's Tested?

Many options of the following tests can customised. Items marked :soon: are not checked yet, but will be soon.

  • a
    link
    img
    script
    : Whether internal links work / are valid.
  • a
    : Whether internal hashes work.
  • a
    link
    img
    script
    : Whether external links work.
  • a
    : :soon: Whether external hashes work.
  • a
    link
    : Whether external links use HTTPS.
  • img
    : Whether your images have valid alt attributes.
  • link
    : Whether pages have a valid favicon.
  • meta
    : Whether refresh tags are valid and the url works.
  • meta
    : :soon: Whether images and URLs in the OpenGraph metadata are valid.
  • meta
    title
    : :soon: Whether you've got the recommended tags in your head.
  • DOCTYPE
    : Whether a doctype is correctly specified.

What's Not

I'd like to test the following but won't be for a while.

  • Whether your HTML markup is valid. htmlproofer has the ruby library Nokogiri, I've not found one for Go yet.

:seenoevil: Ignoring content

Add the

data-proofer-ignore
attribute to any tag to ignore it from every check. The name of this attribute can be customised.
Not checked.

:bookmark_tabs: Caching

Checking external URLs can slow tests down and potentially annoy the URL's host. htmltest caches the status code of checked external URLs and stores this cache between runs. We write the cache to

tmp/.htmltest/refcache.json
and expire items after two weeks by default.

:fax: Logging

If you've got a lot of errors, reading them off a TTY may be difficult. We write errors to

tmp/.htmltest/htmltest.log
by default. The log level is set in the config file.

:wrench: Configuration

htmltest uses a YAML configuration file. Put

.htmltest.yml
in the same directory that you're running the tool from and you can just say
htmltest
to run your tests. You'll probably also want to cache the
tmp/.htmltest
directory.

Basic Options

| Option | Description | Default | | :----- | :---------- | :------ | |

DirectoryPath
| Directory to scan for HTML files. | | |
DirectoryIndex
| The file to look for when linking to a directory. |
index.html
| |
FilePath
| Single file to test within
DirectoryPath
, omit to test all. | | |
FileExtension
| Extension of your HTML documents, includes the dot. If
FilePath
is set we use the extension from that. |
.html
| |
CheckDoctype
| Enables checking the document type declaration. |
true
| |
CheckAnchors
| Enables checking
 tags. | 
true
| |
CheckLinks
| Enables checking
 tags. | 
true
| |
CheckImages
| Enables checking
 tags | 
true
| |
CheckScripts
| Enables checking

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.