Benchmark script #1233
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Tests | |
| on: [push, pull_request, workflow_dispatch] | |
| jobs: | |
| tests: | |
| if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 20 | |
| env: | |
| PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/ms-playwright | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-22.04] | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| include: | |
| - os: macos-14 | |
| python-version: "3.12" | |
| - os: windows-2022 | |
| python-version: "3.12" | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Set up node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| - name: Cache Playwright browsers | |
| uses: actions/cache@v5 | |
| with: | |
| path: ${{ github.workspace }}/ms-playwright | |
| key: ${{ runner.os }}-playwright-${{ hashFiles('tox.ini') }} | |
| restore-keys: | | |
| ${{ runner.os }}-playwright- | |
| - name: Install Playwright system dependencies | |
| if: runner.os == 'Linux' | |
| uses: nick-fields/retry@v4 | |
| with: | |
| timeout_minutes: 5 | |
| max_attempts: 3 | |
| command: pip install playwright && playwright install-deps | |
| - name: Install tox | |
| run: pip install tox | |
| - name: Run asyncio tests | |
| run: tox -e py | |
| - name: Run pinned dependency tests (Windows, asyncio tests) | |
| if: runner.os == 'Windows' | |
| run: tox -e py-pinned | |
| - name: Run pinned dependency tests (Windows, Twisted tests) | |
| if: runner.os == 'Windows' | |
| run: tox -e py-pinned-twisted | |
| - name: Upload coverage report (Linux) | |
| if: runner.os == 'Linux' | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| run: | | |
| curl -Os https://uploader.codecov.io/latest/linux/codecov | |
| chmod +x codecov | |
| ./codecov | |
| - name: Upload coverage report (macOS) | |
| if: runner.os == 'macOS' | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| run: | | |
| curl -Os https://uploader.codecov.io/latest/macos/codecov | |
| chmod +x codecov | |
| ./codecov | |
| - name: Upload coverage report (Windows) | |
| if: runner.os == 'Windows' | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| run: | | |
| $ProgressPreference = 'SilentlyContinue' | |
| Invoke-WebRequest -Uri https://uploader.codecov.io/latest/windows/codecov.exe -Outfile codecov.exe | |
| .\codecov.exe | |
| tests-pinned: | |
| if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 20 | |
| env: | |
| PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/ms-playwright | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python 3.10 | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.10" | |
| - name: Set up node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| - name: Cache Playwright browsers | |
| uses: actions/cache@v5 | |
| with: | |
| path: ${{ github.workspace }}/ms-playwright | |
| key: ${{ runner.os }}-playwright-${{ hashFiles('tox.ini') }} | |
| restore-keys: | | |
| ${{ runner.os }}-playwright- | |
| - name: Install Playwright system dependencies | |
| uses: nick-fields/retry@v4 | |
| with: | |
| timeout_minutes: 5 | |
| max_attempts: 3 | |
| command: pip install playwright && playwright install-deps | |
| - name: Install tox | |
| run: pip install tox | |
| - name: Run asyncio tests with pinned versions | |
| run: tox -e py-pinned | |
| - name: Run twisted tests with pinned versions | |
| run: tox -e py-pinned-twisted | |
| - name: Upload coverage report | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| run: | | |
| curl -Os https://uploader.codecov.io/latest/linux/codecov | |
| chmod +x codecov | |
| ./codecov |