| name: Tests |
| on: |
| push: |
| branches: |
| - main |
| - dev |
| paths-ignore: |
| - '*.md' |
| - '**/*.md' |
| - 'docs/**' |
| - 'images/**' |
| - '.github/**' |
| - 'agent-skill/**' |
| - '*.yml' |
| - '*.yaml' |
| - 'ruff.toml' |
| pull_request: |
| branches: |
| - main |
| - dev |
| paths-ignore: |
| - '*.md' |
| - '**/*.md' |
| - 'docs/**' |
| - 'images/**' |
| - '.github/**' |
| - 'agent-skill/**' |
| - '*.yml' |
| - '*.yaml' |
| - 'ruff.toml' |
|
|
| concurrency: |
| group: ${{github.workflow}}-${{ github.ref }} |
| cancel-in-progress: true |
|
|
| jobs: |
| tests: |
| timeout-minutes: 60 |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - python-version: "3.10" |
| os: macos-latest |
| env: |
| TOXENV: py310 |
| - python-version: "3.11" |
| os: macos-latest |
| env: |
| TOXENV: py311 |
| - python-version: "3.12" |
| os: macos-latest |
| env: |
| TOXENV: py312 |
| - python-version: "3.13" |
| os: macos-latest |
| env: |
| TOXENV: py313 |
|
|
| steps: |
| - uses: actions/checkout@v6 |
|
|
| - name: Set up Python ${{ matrix.python-version }} |
| uses: actions/setup-python@v6 |
| with: |
| python-version: ${{ matrix.python-version }} |
| cache: 'pip' |
| cache-dependency-path: | |
| pyproject.toml |
| tox.ini |
| |
| - name: Install all browsers dependencies |
| run: | |
| python3 -m pip install --upgrade pip |
| python3 -m pip install playwright==1.58.0 patchright==1.58.2 |
| |
| - name: Get Playwright version |
| id: playwright-version |
| run: | |
| PLAYWRIGHT_VERSION=$(python3 -c "import importlib.metadata; print(importlib.metadata.version('playwright'))") |
| echo "version=$PLAYWRIGHT_VERSION" >> $GITHUB_OUTPUT |
| echo "Playwright version: $PLAYWRIGHT_VERSION" |
| |
| - name: Retrieve Playwright browsers from cache if any |
| id: playwright-cache |
| uses: actions/cache@v5 |
| with: |
| path: | |
| ~/.cache/ms-playwright |
| ~/Library/Caches/ms-playwright |
| ~/.ms-playwright |
| key: ${{ runner.os }}-playwright-${{ steps.playwright-version.outputs.version }}-v1 |
| restore-keys: | |
| ${{ runner.os }}-playwright-${{ steps.playwright-version.outputs.version }}- |
| ${{ runner.os }}-playwright- |
| |
| - name: Install Playwright browsers |
| run: | |
| echo "Cache hit: ${{ steps.playwright-cache.outputs.cache-hit }}" |
| if [ "${{ steps.playwright-cache.outputs.cache-hit }}" != "true" ]; then |
| python3 -m playwright install chromium |
| else |
| echo "Skipping install - using cached Playwright browsers" |
| fi |
| python3 -m playwright install-deps chromium |
| |
| |
| - name: Cache tox environments |
| uses: actions/cache@v5 |
| with: |
| path: .tox |
| |
| key: tox-v1-${{ runner.os }}-py${{ matrix.python-version }}-${{ hashFiles('/Users/runner/work/Scrapling/pyproject.toml') }} |
| restore-keys: | |
| tox-v1-${{ runner.os }}-py${{ matrix.python-version }}- |
| tox-v1-${{ runner.os }}- |
| |
| - name: Install tox |
| run: pip install -U tox |
|
|
| - name: Run tests |
| env: ${{ matrix.env }} |
| run: tox |