name: Run All Tests on: pull_request: branches: - 'main' - 'feat/rfc' paths: - 'client/**' - 'ietf/**' - 'playwright/**' - 'requirements.txt' - 'package.json' jobs: tests-python: name: Run Tests (Python) runs-on: ubuntu-latest container: ghcr.io/ietf-tools/datatracker-app-base:latest services: db: image: ghcr.io/ietf-tools/datatracker-db:latest steps: - uses: actions/checkout@v3 - name: Prepare for tests run: | chmod +x ./dev/tests/prepare.sh sh ./dev/tests/prepare.sh - name: Ensure DB is ready run: | /usr/local/bin/wait-for db:5432 -- echo "DB ready" - name: Run all tests run: | echo "Running checks..." ./ietf/manage.py check ./ietf/manage.py migrate --fake-initial echo "Validating migrations..." if ! ( ietf/manage.py makemigrations --dry-run --check --verbosity 3 ) ; then echo "Model changes without migrations found." echo ${MSG} exit 1 fi echo "Running tests..." ./ietf/manage.py test --validate-html-harder --settings=settings_test coverage xml - name: Upload Coverage Results to Codecov uses: codecov/codecov-action@v3.1.4 with: files: coverage.xml - name: Convert Coverage Results if: ${{ always() }} run: | mv latest-coverage.json coverage.json - name: Upload Coverage Results as Build Artifact uses: actions/upload-artifact@v3.0.0 if: ${{ always() }} with: name: coverage path: coverage.json tests-playwright: name: Run Tests (Playwright) runs-on: macos-latest strategy: fail-fast: false matrix: project: [chromium, firefox] steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '18' - name: Run all tests run: | echo "Installing dependencies..." yarn echo "Installing Playwright..." cd playwright mkdir test-results npm ci npx playwright install --with-deps ${{ matrix.project }} echo "Running tests..." npx playwright test --project=${{ matrix.project }} - name: Upload Report uses: actions/upload-artifact@v3.0.0 if: ${{ always() }} continue-on-error: true with: name: playwright-results-${{ matrix.project }} path: playwright/test-results/ if-no-files-found: ignore tests-playwright-legacy: name: Run Tests (Playwright Legacy) runs-on: ubuntu-latest container: ghcr.io/ietf-tools/datatracker-app-base:latest strategy: fail-fast: false matrix: project: [chromium, firefox] services: db: image: ghcr.io/ietf-tools/datatracker-db:latest steps: - uses: actions/checkout@v3 - name: Prepare for tests run: | chmod +x ./dev/tests/prepare.sh sh ./dev/tests/prepare.sh - name: Ensure DB is ready run: | /usr/local/bin/wait-for db:5432 -- echo "DB ready" - name: Start Datatracker run: | echo "Running checks..." ./ietf/manage.py check ./ietf/manage.py migrate --fake-initial echo "Starting datatracker..." ./ietf/manage.py runserver 0.0.0.0:8000 --settings=settings_local & echo "Waiting for datatracker to be ready..." /usr/local/bin/wait-for localhost:8000 -- echo "Datatracker ready" - name: Run all tests env: # Required to get firefox to run as root: HOME: "" run: | echo "Installing dependencies..." yarn echo "Installing Playwright..." cd playwright mkdir test-results npm ci npx playwright install --with-deps ${{ matrix.project }} echo "Running tests..." npx playwright test --project=${{ matrix.project }} -c playwright-legacy.config.js - name: Upload Report uses: actions/upload-artifact@v3 if: ${{ always() }} continue-on-error: true with: name: playwright-legacy-results-${{ matrix.project }} path: playwright/test-results/ if-no-files-found: ignore