diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a1066d505b40b22fd13392a3278068881d86fd80..f349e6c4b77e241f5b71e5d3645787c6e0bde9ac 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,11 +1,39 @@
-test_app:
+stages:
+  - Test
+  - Static Analysis
+
+variables:
+  VENV_DIR: $CI_PROJECT_DIR/../venv-pyFstat
+  INSTALLER_DIR: $CI_PROJECT_DIR/install-cw-software
+
+pytest:
+  stage: Test
+  tags: [ pyFstat ]
+  before_script:
+    - python3 -m venv $VENV_DIR
+    - source ${VENV_DIR}/bin/activate
+    - pip install --upgrade pip
+    - pip install -r requirements.txt
+    - pip install lalsuite
+    - pip install pytest
+    - export LAL_DATA_PATH=$HOME/ephemeris
+    - export LALPULSAR_DATADIR=$LAL_DATA_PATH
+
   script:
-    - . /home/user1/lalsuite-install/etc/lalapps-user-env.sh
-    - /home/user1/anaconda2/bin/python tests.py Writer
-    - /home/user1/anaconda2/bin/python tests.py par
-    - /home/user1/anaconda2/bin/python tests.py BaseSearchClass
-    - /home/user1/anaconda2/bin/python tests.py ComputeFstat
-    - /home/user1/anaconda2/bin/python tests.py SemiCoherentSearch
-    - /home/user1/anaconda2/bin/python tests.py SemiCoherentGlitchSearch
-    - /home/user1/anaconda2/bin/python tests.py MCMCSearch
-    - /home/user1/anaconda2/bin/python tests.py GridSearch
+    - pip install -e $CI_PROJECT_DIR
+      # make sure to test *installed* version of pyFstat
+    - (cd .. && pytest $CI_PROJECT_DIR/tests.py --log-file=$CI_PROJECT_DIR/tests.log)
+
+  artifacts:
+    paths:
+      - ./*.log
+    name: testlogs
+    when: always
+    expire_in: 24h
+
+.static:
+  stage: Static Analysis
+  script:
+    - source ${VENV_DIR}/bin/activate
+    - black --check .
+    # - flake8 .  ## not ready