diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 551a97069060dfe5390aa0312f223b8d803e1cb3_LmdpdGxhYi1jaS55bWw=..a037346807815cec2ddbacb121fb6fb8207ba1e7_LmdpdGxhYi1jaS55bWw= 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,3 +2,6 @@
    image: octobus/ci-py2-hgext3rd:hg-5.2
    script:
       - flake8 heptapod setup.py
+      # TODO put py.test in the image
+      - pip install --user pytest
+      - ~/.local/bin/py.test
diff --git a/.hgignore b/.hgignore
index 551a97069060dfe5390aa0312f223b8d803e1cb3_LmhnaWdub3Jl..a037346807815cec2ddbacb121fb6fb8207ba1e7_LmhnaWdub3Jl 100644
--- a/.hgignore
+++ b/.hgignore
@@ -7,3 +7,5 @@
 build/
 *.egg-info/
 dist/
+
+.pytest_cache/
diff --git a/heptapod/tests/__init__.py b/heptapod/tests/__init__.py
new file mode 100644
diff --git a/heptapod/tests/test_harness.py b/heptapod/tests/test_harness.py
new file mode 100644
index 0000000000000000000000000000000000000000..a037346807815cec2ddbacb121fb6fb8207ba1e7_aGVwdGFwb2QvdGVzdHMvdGVzdF9oYXJuZXNzLnB5
--- /dev/null
+++ b/heptapod/tests/test_harness.py
@@ -0,0 +1,8 @@
+"""A minimal py.test to make sure the testing harness works.
+"""
+import subprocess
+
+
+def test_hg_install():
+    vinfo = subprocess.check_output(('hg', 'version'))
+    assert vinfo.startswith('Mercurial')