Skip to content
29 changes: 29 additions & 0 deletions .github/actions/run-tox/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: 'Run tox with environment'
description: 'Runs tox with pdm as the package manager'
inputs:
python-version:
type: string
required: true
tox-env:
type: string
required: true
tox-args:
type: string
required: false
runs:
using: "composite"
steps:
- name: Setup Python with PDM
uses: pdm-project/setup-pdm@v4
with:
python-version: ${{ inputs.python-version }}
- name: Install dependencies
run: |
pip install tox tox-pdm
shell: bash
- name: Run tox
run: |
tox run -e "${{ inputs.tox-env }}" -- ${{ inputs.tox-args }}
# errno 5 means all tests were filtered out, ignore
ret=$? && [[ $ret -eq 5 ]] && exit 0; exit $ret
shell: bash
189 changes: 14 additions & 175 deletions .github/workflows/development.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,191 +5,30 @@ on:
types: [opened, synchronize, reopened]

jobs:
quality-checks:
runs-on: ubuntu-latest
strategy:
matrix:
python: ["3.10", "3.13"]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
curl -sSL https://pdm-project.org/install-pdm.py | python3 -
pip install tox tox-pdm
- name: Run quality checks
run: tox -e quality

ui-quality-checks:
permissions:
contents: "read"
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4

- name: Set up Node.js 22
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: npm ci

- name: Run quality and typing checks
run: npm run lint

type-checks:
runs-on: ubuntu-latest
strategy:
matrix:
python: ["3.10", "3.13"]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
curl -sSL https://pdm-project.org/install-pdm.py | python3 -
pip install tox tox-pdm
- name: Run quality checks
run: tox -e types

ui-type-checks:
permissions:
contents: "read"
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4

- name: Set up Node.js 22
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: npm ci

- name: Run quality and typing checks
run: npm run type-check

precommit-checks:
runs-on: ubuntu-latest
tests:
strategy:
matrix:
python: ["3.10"]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: pip install pre-commit
- name: Run pre-commit checks
run: SKIP=ruff-format pre-commit run --all-files
uses: ./.github/workflows/testing.yml
with:
python: ${{ matrix.python }}

ui-precommit-checks:
permissions:
contents: "read"
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4

- name: Set up Node.js 22
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: npm ci
ui-tests:
uses: ./.github/workflows/ui-testing.yml

- name: Run pre-commit checks
run: npx husky run pre-commit

unit-tests:
runs-on: ubuntu-latest
quality:
strategy:
matrix:
python: ["3.10", "3.13"]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
curl -sSL https://pdm-project.org/install-pdm.py | python3 -
pip install tox tox-pdm
- name: Run unit tests
run: tox -e test-unit

ui-unit-tests:
permissions:
contents: "read"
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4

- name: Set up Node.js 22
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: npm ci

- name: Run unit tests
run: npm run test:unit

integration-tests:
runs-on: ubuntu-latest
strategy:
matrix:
python: ["3.10", "3.13"]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
curl -sSL https://pdm-project.org/install-pdm.py | python3 -
pip install tox tox-pdm
- name: Run integration tests
run: tox -e test-integration -- -m smoke

ui-integration-tests:
permissions:
contents: "read"
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4

- name: Set up Node.js 22
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: npm ci
python: ["3.10"]
uses: ./.github/workflows/quality.yml
with:
python: ${{ matrix.python }}

- name: Run integration tests
run: npm run test:integration
ui-quality:
uses: ./.github/workflows/ui-quality.yml

ui-pr-preview:
needs: [ui-quality-checks, ui-precommit-checks, ui-unit-tests, ui-integration-tests]
needs: [ui-quality, ui-tests]
permissions:
contents: write
pull-requests: write
Expand Down
Loading