diff --git a/.htmltest.yml b/.htmltest.yml
index f7afd545..c61aceaf 100644
--- a/.htmltest.yml
+++ b/.htmltest.yml
@@ -1,6 +1,8 @@
IgnoreAltMissing: true
IgnoreURLs:
- "^http://localhost:"
+ # For unknown reasons, htmltest reports a 404 on these one:
+ - "^https://twitter.com/"
# htmltest does not like quotes around URL in meta refresh
CheckMetaRefresh: false
diff --git a/tox.ini b/tox.ini
index 58f0faaa..4b732d7b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,12 +1,37 @@
[tox]
-minversion = 3
-envlist = py
+minversion = 3.18
+envlist = build
skipsdist = true
[testenv]
deps =
lektor
- jinja2>=3
+setenv =
+ # Keep Lektor's private package cache in tox env rather than ~/.cache
+ XDG_CACHE_HOME = {envdir}/cache
+ LOCALAPPDATA = {envdir}/cache
+
+[testenv:build]
commands =
- lektor plugins reinstall
- lektor build
+ lektor build -O {envdir}/output
+
+[testenv:htmltest]
+# Build site and check links with htmltest
+#
+# By default, only internal links are checked.
+#
+# tox -e htmltest
+#
+# To test external links as well, try (warning: slow):
+#
+# HTMLTEST_OPTS="" tox -e htmltest
+#
+allowlist_externals =
+ bash
+commands_pre =
+ # Install latest version of htmltest in the tox env
+ bash -c '[ -f {envbindir}/htmltest ] || \
+ curl -s https://htmltest.wjdp.uk | bash -s -- -b {envbindir}'
+commands =
+ {[testenv:build]commands}
+ htmltest -c .htmltest.yml {env:HTMLTEST_OPTS:-s} {envdir}/output