diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a702b674087b40058f76eafc9b8769c6f41da6ab..7bf63be26e404c626ae242782913530eba518e7d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -96,12 +96,15 @@ minimal-windows:
   tags:
     - win
   script:
+    - export NUM_CORES=$(nproc --all)
+    - export MPLBACKEND=Agg
     - source /cygdrive/c/Users/build/Miniconda3/Scripts/activate
     - source activate pystencils
     - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils
+    - env
     - pip list
     - python -c "import numpy"
-    - python setup.py quicktest
+    - py.test -v -n $NUM_CORES -m "not (notebook or longrun)"
 
 ubuntu:
   stage: test
diff --git a/lbmpy_tests/test_n_phase_boyer_noncoupled.ipynb b/lbmpy_tests/phasefield/test_n_phase_boyer_noncoupled.ipynb
similarity index 100%
rename from lbmpy_tests/test_n_phase_boyer_noncoupled.ipynb
rename to lbmpy_tests/phasefield/test_n_phase_boyer_noncoupled.ipynb
diff --git a/lbmpy_tests/test_phase_field_scenarios.py b/lbmpy_tests/phasefield/test_phase_field_scenarios.py
similarity index 62%
rename from lbmpy_tests/test_phase_field_scenarios.py
rename to lbmpy_tests/phasefield/test_phase_field_scenarios.py
index 44e61d7ccdd83c15dd26f121f1e8277b28dc6168..d58f53570acb0e975a1e5b48e8527a14349b65f9 100644
--- a/lbmpy_tests/test_phase_field_scenarios.py
+++ b/lbmpy_tests/phasefield/test_phase_field_scenarios.py
@@ -11,6 +11,7 @@ from lbmpy.phasefield.experiments2D import (
     create_two_drops_between_phases, write_phase_field_picture_sequence,
     write_phase_velocity_picture_sequence)
 from lbmpy.phasefield.phasefieldstep import PhaseFieldStep
+from lbmpy.phasefield.scenarios import *
 from pystencils import make_slice
 
 
@@ -47,3 +48,31 @@ def test_falling_drop():
             file_pattern = os.path.join(tmp_dir, "output_%d.png")
             write_phase_velocity_picture_sequence(sc, file_pattern, total_steps=200)
         assert np.isfinite(np.max(sc.phi[:, :, :]))
+
+
+def test_setup():
+    domain_size = (30, 15)
+
+    scenarios = [
+        create_three_phase_model(domain_size=domain_size, include_rho=True),
+        #create_three_phase_model(domain_size=domain_size, include_rho=False),
+        create_n_phase_model_penalty_term(domain_size=domain_size, num_phases=4),
+    ]
+    for i, sc in enumerate(scenarios):
+        print("Testing scenario", i)
+        sc.set_concentration(make_slice[:, :0.5], [1, 0, 0])
+        sc.set_concentration(make_slice[:, 0.5:], [0, 1, 0])
+        sc.set_concentration(make_slice[0.4:0.6, 0.4:0.6], [0, 0, 1])
+        sc.set_pdf_fields_from_macroscopic_values()
+        sc.run(10)
+
+
+def test_fd_cahn_hilliard():
+    sc = create_n_phase_model_penalty_term(domain_size=(100, 50), num_phases=3,
+                                           solve_cahn_hilliard_with_finite_differences=True)
+    sc.set_concentration(make_slice[:, 0.5:], [1, 0, 0])
+    sc.set_concentration(make_slice[:, :0.5], [0, 1, 0])
+    sc.set_concentration(make_slice[0.3:0.7, 0.3:0.7], [0, 0, 1])
+    sc.set_pdf_fields_from_macroscopic_values()
+    sc.run(100)
+    assert np.isfinite(np.max(sc.concentration[:, :]))
diff --git a/lbmpy_tests/test_phasefield.py b/lbmpy_tests/phasefield/test_phasefield.py
similarity index 100%
rename from lbmpy_tests/test_phasefield.py
rename to lbmpy_tests/phasefield/test_phasefield.py
diff --git a/lbmpy_tests/test_phasefield_scenarios.py b/lbmpy_tests/test_phasefield_scenarios.py
deleted file mode 100644
index 001b535e56b2de37cbfc8e2b240503a0d454b644..0000000000000000000000000000000000000000
--- a/lbmpy_tests/test_phasefield_scenarios.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from lbmpy.phasefield.scenarios import *
-from pystencils import make_slice
-
-
-def test_setup():
-    domain_size = (30, 15)
-
-    scenarios = [
-        create_three_phase_model(domain_size=domain_size, include_rho=True),
-        #create_three_phase_model(domain_size=domain_size, include_rho=False),
-        create_n_phase_model_penalty_term(domain_size=domain_size, num_phases=4),
-    ]
-    for i, sc in enumerate(scenarios):
-        print("Testing scenario", i)
-        sc.set_concentration(make_slice[:, :0.5], [1, 0, 0])
-        sc.set_concentration(make_slice[:, 0.5:], [0, 1, 0])
-        sc.set_concentration(make_slice[0.4:0.6, 0.4:0.6], [0, 0, 1])
-        sc.set_pdf_fields_from_macroscopic_values()
-        sc.run(10)
-
-
-def test_fd_cahn_hilliard():
-    sc = create_n_phase_model_penalty_term(domain_size=(100, 50), num_phases=3,
-                                           solve_cahn_hilliard_with_finite_differences=True)
-    sc.set_concentration(make_slice[:, 0.5:], [1, 0, 0])
-    sc.set_concentration(make_slice[:, :0.5], [0, 1, 0])
-    sc.set_concentration(make_slice[0.3:0.7, 0.3:0.7], [0, 0, 1])
-    sc.set_pdf_fields_from_macroscopic_values()
-    sc.run(100)
-    assert np.isfinite(np.max(sc.concentration[:, :]))