diff --git a/tox.ini b/tox.ini
index de6ed95bab4dbb660d0661e88265158bdf5b618f..7bccb6bf67559b0150b61d36c83f5035ff7856a7 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,7 +1,7 @@
 [tox]
 skipsdist = True
 skip_missing_interpreters = true
-envlist = py39,py310,py311
+envlist = py310,py311,py312
 
 [testenv]
 allowlist_externals =
@@ -24,12 +24,13 @@ setenv =
 
 [testenv:lint]
 commands_pre =
-    poetry install --only=dev
+    poetry install
     yarnpkg --cwd=.dev-js
 commands =
     poetry run ruff check {posargs} aleksis/
-#    yarnpkg --cwd=.dev-js run prettier --ignore-path={toxinidir}/.prettierignore {posargs} --check ..
-#    yarnpkg --cwd=.dev-js run eslint ../aleksis/**/*/frontend/**/*.{js,vue} --config={toxinidir}/.eslintrc.js --resolve-plugins-relative-to=.
+    yarnpkg --cwd=.dev-js run prettier --ignore-path={toxinidir}/.prettierignore {posargs} --check ..
+    poetry run aleksis-admin graphql_schema --schema aleksis.core.schema.schema --out .dev-js/schema.json
+    yarnpkg --cwd=.dev-js run eslint ../aleksis/**/*/frontend/**/*.{js,vue,graphql} --config={toxinidir}/.dev-js/.eslintrc.js
 
 [testenv:security]
 commands_pre =
@@ -42,6 +43,8 @@ commands =
 commands_pre =
     poetry install
     poetry run sh -c "cd aleksis; aleksis-admin compilemessages"
+    poetry run aleksis-admin yarn install
+    poetry run aleksis-admin compile_scss
 commands = poetry build
 
 [testenv:docs]
@@ -55,7 +58,7 @@ commands_pre =
     yarnpkg --cwd=.dev-js
 commands =
     poetry run ruff format aleksis/
-#    yarnpkg --cwd=.dev-js run prettier --ignore-path={toxinidir}/.prettierignore --write ..
+    yarnpkg --cwd=.dev-js run prettier --ignore-path={toxinidir}/.prettierignore --write ..
 
 [testenv:makemessages]
 commands_pre =