[Feature] Frontend Testing #140 (#218)

I added playwright for frontend testing and got a couple simple test cases working.
I have updated pyproject.toml but it can also be installed with `pip install pytest-playwright` followed by `playwright install`

With the django server running you can do `playwright codegen http://localhost:8000/` which will generate test code based on the actions you take on the webpage it opens. Be sure to change the target to pytest in the code pop up.

I will add more test cases but @jebus and @t03i feel free to add more. Especially once we are done with the full front-end redesign.

I have put the tests under `tests/frontend/` but I am not sure how to add them to the CI. They give steps for CI integration but maybe we want to somehow include them in our exisiting CI yaml? https://playwright.dev/python/docs/ci-intro

Reviewed-on: enviPath/enviPy#218
Reviewed-by: Tobias O <tobias.olenyi@envipath.com>
Co-authored-by: Liam Brydon <lbry121@aucklanduni.ac.nz>
Co-committed-by: Liam Brydon <lbry121@aucklanduni.ac.nz>
This commit is contained in:
2025-11-26 19:44:35 +13:00
committed by jebus
parent b6c35fea76
commit 7f6f209b4a
6 changed files with 300 additions and 2 deletions

View File

@ -8,6 +8,7 @@ on:
jobs:
test:
if: ${{ !contains(gitea.event.pull_request.title, 'WIP') }}
runs-on: ubuntu-latest
services:
@ -99,6 +100,8 @@ jobs:
- name: Setup venv
run: |
uv sync --locked --all-extras --dev
source .venv/bin/activate
playwright install --with-deps
- name: Wait for services
run: |
@ -110,7 +113,12 @@ jobs:
source .venv/bin/activate
python manage.py migrate --noinput
- name: Run frontend tests
run: |
source .venv/bin/activate
python manage.py test --tag frontend
- name: Run Django tests
run: |
source .venv/bin/activate
python manage.py test tests --exclude-tag slow
python manage.py test tests --exclude-tag slow --exclude-tag frontend