matrix:
   include:
     - env: "IMAGE=archlinux-build TARGETS=codecov"
-    - env: "IMAGE=debian-build:latest TARGETS=test"
-    - env: "IMAGE=debian-build:testing TARGETS=test"
+    - env: "IMAGE=debian-build:latest TARGETS=unittest"
+    - env: "IMAGE=debian-build:testing TARGETS=unittest"
     - env: "IMAGE=ubuntu-build:latest TARGETS=test"
     - env: "IMAGE=ubuntu-build:devel TARGETS=test"
-    - env: "IMAGE=centos-build:latest TARGETS=test"
+    - env: "IMAGE=centos-build:latest TARGETS=unittest"
 
 script:
     - bash scripts/docker/exec.bash
 
        @echo run: test.test
        @./test.test
 
+unittest: $(TEST_BIN) $(TEST_TEST_BIN) $(ASSET_DEP)
+       @echo run: test.test --headless
+       @./test.test --headless
+
 coverage: $(COVER_BIN) $(COVER_TEST_BIN) $(ASSET_DEP)
        @echo run: test.cover
        @./test.cover
        rm -f $(BIN) cachegrind.out.* callgrind.out.*
        rm -Rf build client-saves saves
 
-.PHONY: all release cover debug profile tests run gdb cachegrind callgrind test coverage codecov lint clean distclean
+.PHONY: all release cover debug profile tests run gdb cachegrind callgrind test unittest coverage codecov lint clean distclean
 
 -include $(DEP)
 
 
 
 xvfb_cmd="xvfb-run -a --server-args='-screen 0 1024x768x24 +extension RANDR +extension GLX'"
 
-build_cmd="git clone /repo /workdir && cd /workdir && make -j\$(nproc) $TARGETS"
+build_cmd="cp -R /repo /workdir && cd /workdir && make -j\$(nproc) $TARGETS"
 
 if [[ "$KEEP" != "" ]]; then
        build_cmd="${build_cmd} && cp -Rv $KEEP /repo"
 
 
 #include "TestInstance.hpp"
 
-CPPUNIT_TEST_SUITE_REGISTRATION(blank::test::InvocationTest);
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(blank::test::InvocationTest, "integration");
 
 
 namespace blank {
 
 
 #include "TestInstance.hpp"
 
-CPPUNIT_TEST_SUITE_REGISTRATION(blank::test::StandaloneTest);
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(blank::test::StandaloneTest, "integration");
 
 
 namespace blank {
 
+#include <cstring>
 #include <cppunit/extensions/TestFactoryRegistry.h>
 #include <cppunit/ui/text/TestRunner.h>
 
 using CppUnit::TextUi::TestRunner;
 
 
-int main(int, char **) {
+int main(int argc, char **argv) {
+
+       bool headless = false;
+       if (argc > 1 && std::strcmp(argv[1], "--headless") == 0) {
+               headless = true;
+       }
+
        TestRunner runner;
-       TestFactoryRegistry ®istry = TestFactoryRegistry::getRegistry();
-       runner.addTest(registry.makeTest());
+       {
+               TestFactoryRegistry ®istry = TestFactoryRegistry::getRegistry();
+               runner.addTest(registry.makeTest());
+       }
+       if (!headless) {
+               TestFactoryRegistry ®istry = TestFactoryRegistry::getRegistry("integration");
+               runner.addTest(registry.makeTest());
+       }
+
        if (runner.run()) {
                return 0;
        } else {