diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6d635abfca8f5b975123d5d32edd13c6c691f546..930ded794d093b375b07ffc4fa3c7e49accf2701 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,29 +1,60 @@
 stages:
-  - Test
+  - Tests
+  - OptionalTests
+
+.install-grum-test: &install-grum-test
+  - pip install pytest pytest-random-order pytest-cov
+  - pip install -e ./
+  - apt-get update
+  - apt-get install -y ffmpeg libnss3 libxcomposite1 libxtst6
 
 tests:
-  stage: Test
+  stage: Tests
+  image: python:3.8
   variables:
     QT_QPA_PLATFORM: "offscreen"
     XDG_RUNTIME_DIR: "/tmp/runtime-root"
-
   script:
-    - pip install pytest pytest-random-order pytest-cov
-    - pip install -e ./
-    - pip install PyQtWebEngine
-
-    - apt-get update
-    - apt-get install -y ffmpeg libnss3 libxcomposite1 libxtst6
-
-#    - python -m unittest discover -f ./tests
-#    - coverage run --source=./grum -m unittest discover -f ./tests
-    - coverage run --source=./grum -m pytest ./tests
+    - *install-grum-test
+    - coverage run --source=./grum -m pytest ./tests --junitxml=report-junit.xml
     - coverage report
     - coverage xml
-
   coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
   artifacts:
+    when: always
     reports:
       cobertura: coverage.xml
+      junit: report-junit.xml
+
+tests-3.6:
+  stage: OptionalTests
+  image: python:3.6
+  needs: ["tests"]
+  allow_failure: true
+  variables:
+    QT_QPA_PLATFORM: "offscreen"
+    XDG_RUNTIME_DIR: "/tmp/runtime-root"
+  script: 
+    - *install-grum-test
+    - pytest ./tests
+
+tests-3.7:
+  extends: "tests-3.6"
+  image: python:3.7
+
+#tests-3.8:
+#  extends: "tests-3.6"
+#  image: python:3.8
+
+tests-3.9:
+  extends: "tests-3.6"
+  image: python:3.9
+
+tests-3.10:
+  extends: "tests-3.6"
+  image: python:3.10
 
+tests-3.11:
+  extends: "tests-3.6"
+  image: python:3.11
 
diff --git a/setup.cfg b/setup.cfg
index e90924080d64d7fa5a2267812ef0bf35d5b72f08..6640f3bf0e8fbe34cb85166321f74faaca48e91a 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -6,7 +6,7 @@ long_description = file: README.md
 long_description_content_type = text/markdown
 url = https://gitlab.psi.ch/augustin_s/grum
 project_urls =
-    Bug Tracker = https://gitlab.psi.ch/augustin_s/grum/issues 
+    Bug Tracker = https://gitlab.psi.ch/augustin_s/grum/issues
 classifiers =
     Programming Language :: Python :: 3
     License :: OSI Approved :: MIT License
@@ -16,7 +16,7 @@ classifiers =
 package_dir =
     = .
 packages = find:
-python_requires = >=3.8
+python_requires = >=3.6
 
 [options.packages.find]
 where = .
diff --git a/setup.py b/setup.py
index a7a96ac854d24973857ef196a3205f2a1c2ff52e..8369a8989c7689700fd64f34bda20c6c059849f6 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@ from setuptools import setup
 
 if __name__ == "__main__":
     setup(
-        install_requires=["pyqt5", "pyqtgraph", "h5py"],
+        install_requires=["pyqt5", "pyqtgraph", "h5py", "PyQtWebEngine"],
         entry_points={"console_scripts": ["grum=grum:main"]},
     )