diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f38951c68cf8f2824f0ff0f0b72d634b83651030..a56190d765e0ba415aec66ba0e66c4a7205ab542 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -202,7 +202,9 @@ build-spack-env-on-runner:
     - spack-python site-config/ymerge.py spack.yaml site-config/$SYSTEMNAME/spack.yaml > /tmp/spack.yaml
     - cp /tmp/spack.yaml $SPACK_ENV/
     - spack install -y -j2 --fresh --test root
+    - spack test run wf-brainscales2-demos
   after_script:
+    - mv /tmp/spack_tests $CI_PROJECT_DIR
     - mkdir -p $CI_PROJECT_DIR/spack_logs/installed $CI_PROJECT_DIR/spack_logs/not_installed
       # for succesfully installed packages: keep the spack logs for any package modified during this CI job
     - PKG_DIR=$SPACK_DEV_PATH/opt/spack/linux-ubuntu20.04-x86_64/gcc-10.3.0
@@ -212,6 +214,7 @@ build-spack-env-on-runner:
   artifacts:
     paths:
       - spack_logs
+      - spack_tests
     when: always
   timeout: 2 days
   except:
diff --git a/packages/wf-brainscales2-demos/package.py b/packages/wf-brainscales2-demos/package.py
index a879c609f6ceebf48dcb4aebdc46f455501ef28d..a39b52fb54845806ca5d6dcc94acf8bda6434d42 100644
--- a/packages/wf-brainscales2-demos/package.py
+++ b/packages/wf-brainscales2-demos/package.py
@@ -37,16 +37,13 @@ class WfBrainscales2Demos(Package):
     depends_on('py-pandas@1.4.2:', type=("run", "test"))
 
     def install(self, spec, prefix):
-        # sanity_check_prefix requires something in the install directory
-        mkdirp(prefix + "/.spack_test_results")
+        install_tree(".", join_path(prefix, "notebooks"))
 
-    def _run_notebooks(self):
-        # TODO: remove debug output
-        cmd_env = which("env")
-        cmd_env()
+    def _run_notebooks(self, output_dir):
+        mkdirp(output_dir)
         # execute notebook and save
         jupyter = Executable("jupyter")
-        for fn in glob("ts*.ipynb") + glob("tp*.ipynb"):
+        for fn in glob(join_path(prefix, "notebooks", "ts*.ipynb")) + glob(join_path(prefix, "notebooks", "tp*.ipynb")):
             jupyter("nbconvert",
                 "--ExecutePreprocessor.kernel_name=python3",
                 "--execute",
@@ -55,7 +52,7 @@ class WfBrainscales2Demos(Package):
                 "notebook",
                 fn,
                 "--output",
-                prefix + "/.spack_test_results/" + fn)
+                join_path(output_dir, os.path.basename(fn)))
 
     def _set_collab_things(self):
         # enable "EBRAINS lab" mode
@@ -69,8 +66,8 @@ class WfBrainscales2Demos(Package):
     def installcheck(self):
         self._set_collab_things()
         # TODO (ECM): Provide a selection of notebooks that perform local-only tests.
-        #self._run_notebooks()
+        #self._run_notebooks(join_path(self.prefix, ".spack_test_results"))
 
-    def test_notebooks(self):
+    def test(self):
         self._set_collab_things()
-        self._run_notebooks()
+        self._run_notebooks(join_path(self.test_suite.stage, self.spec.format("out-{name}-{version}-{hash:7}")))
diff --git a/site-config/ebrainslab/config.yaml b/site-config/ebrainslab/config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8e58bc0377128adb64c3c25f790da18e19cd3316
--- /dev/null
+++ b/site-config/ebrainslab/config.yaml
@@ -0,0 +1,2 @@
+config:
+  test_stage: /tmp/spack_tests