diff --git a/packages/wf-brainscales2-demos/package.py b/packages/wf-brainscales2-demos/package.py
index 4999678ea9fa9363180de49557f038af53f89087..36d5c19f6fb4e4c16074e50f7ec3004c5d5c95e0 100644
--- a/packages/wf-brainscales2-demos/package.py
+++ b/packages/wf-brainscales2-demos/package.py
@@ -39,16 +39,10 @@ class WfBrainscales2Demos(Package):
         # sanity_check_prefix requires something in the install directory
         mkdirp(prefix + "/.spack_test_results")
 
-    @run_after("install")
-    @on_package_attributes(run_tests=True)
-    def installcheck(self):
+    def _run_notebooks(self):
+        # TODO: remove debug output
         cmd_env = which("env")
         cmd_env()
-        # enable "EBRAINS lab" mode
-        os.environ["LAB_IMAGE_NAME"] = "EBRAINS"
-        # select "EBRAINS experimental" upstream experiment service
-        os.environ["LAB_KERNEL_NAME"] = "EBRAINS-experimental"
-        os.environ["JUPYTERHUB_USER"] = "spack-test-wf-brainscales2-demos"
         # execute notebook and save
         jupyter = Executable("jupyter")
         jupyter("nbconvert",
@@ -60,3 +54,20 @@ class WfBrainscales2Demos(Package):
             "ts_05-yin_yang.ipynb",
             "--output",
             prefix+"/.spack_test_results/ts_05-yin_yang.ipynb")
+
+    def _set_collab_things(self):
+        # enable "EBRAINS lab" mode
+        os.environ["LAB_IMAGE_NAME"] = "EBRAINS"
+        # select "EBRAINS experimental" upstream experiment service
+        os.environ["LAB_KERNEL_NAME"] = "EBRAINS-experimental"
+        os.environ["JUPYTERHUB_USER"] = "spack-test-wf-brainscales2-demos"
+
+    @run_after("install")
+    @on_package_attributes(run_tests=True)
+    def installcheck(self):
+        self._set_collab_things()
+        self._run_notebooks()
+
+    def test_notebooks(self):
+        self._set_collab_things()
+        self._run_notebooks()