name: Tests on: push: branches: - main - dev paths-ignore: - '*.md' - '**/*.md' - 'docs/*' - 'images/*' - '.github/*' - '*.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@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 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.55.0 patchright>=1.55.0 camoufox - name: Retrieve Playwright browsers from cache if any id: playwright-cache uses: actions/cache@v4 with: path: | ~/.cache/ms-playwright ~/Library/Caches/ms-playwright ~/.ms-playwright key: ${{ runner.os }}-playwright-${{ hashFiles('pyproject.toml') }} restore-keys: | ${{ runner.os }}-playwright- - name: Install Playwright browsers if: steps.playwright-cache.outputs.cache-hit != 'true' run: | python3 -m playwright install chromium python3 -m playwright install-deps chromium firefox - name: Retrieve Camoufox browser from cache if any id: camoufox-cache uses: actions/cache@v4 with: path: | ~/.cache/camoufox ~/Library/Caches/camoufox key: ${{ runner.os }}-camoufox-${{ hashFiles('pyproject.toml') }} restore-keys: | ${{ runner.os }}-camoufox- - name: Install Camoufox browser if: steps.camoufox-cache.outputs.cache-hit != 'true' run: | python3 -m camoufox fetch --browserforge # Cache tox environments - name: Cache tox environments uses: actions/cache@v4 with: path: .tox # Include python version and os in the cache key key: tox-v1-${{ runner.os }}-py${{ matrix.python-version }}-${{ hashFiles('tox.ini', '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