| name: CI |
| |
| on: |
| push: |
| branches: |
| - main |
| - next |
| - 'v*' |
| paths-ignore: |
| - 'docs/**' |
| - '*.md' |
| pull_request: |
| paths-ignore: |
| - 'docs/**' |
| - '*.md' |
| |
| # This allows a subsequently queued workflow run to interrupt previous runs |
| concurrency: |
| group: "${{ github.workflow }}-${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" |
| cancel-in-progress: true |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| test-regression-check-node10: |
| name: Test compatibility with Node.js 10 |
| runs-on: ubuntu-latest |
| permissions: |
| contents: read |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| persist-credentials: false |
| |
| - uses: actions/setup-node@v6 |
| with: |
| node-version: '10' |
| cache: 'npm' |
| cache-dependency-path: package.json |
| check-latest: true |
| |
| - name: Install |
| run: | |
| npm install --ignore-scripts |
| |
| - name: Copy project as fast-uri to node_node_modules |
| run: | |
| rm -rf ./node_modules/fast-uri/lib && |
| rm -rf ./node_modules/fast-uri/index.js && |
| cp -r ./lib ./node_modules/fast-uri/lib && |
| cp ./index.js ./node_modules/fast-uri/index.js |
| |
| - name: Run tests |
| run: | |
| npm run test:unit |
| env: |
| NODE_OPTIONS: no-network-family-autoselection |
| |
| test-browser: |
| name: Test browser compatibility |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| os: ['ubuntu-latest', 'windows-latest', 'macos-latest'] |
| browser: ['chromium', 'firefox', 'webkit'] |
| exclude: |
| - os: ubuntu-latest |
| browser: webkit |
| permissions: |
| contents: read |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| persist-credentials: false |
| |
| - uses: actions/setup-node@v6 |
| with: |
| node-version: '24' |
| cache: 'npm' |
| cache-dependency-path: package.json |
| check-latest: true |
| |
| - name: Install dependencies |
| run: | |
| npm install --ignore-scripts |
| |
| - if: ${{ matrix.os == 'windows-latest' }} |
| run: npx playwright install winldd |
| |
| - name: Run browser tests |
| run: | |
| npm run test:browser:${{ matrix.browser }} |
| |
| test: |
| needs: |
| - test-regression-check-node10 |
| permissions: |
| contents: write |
| pull-requests: write |
| uses: fastify/workflows/.github/workflows/plugins-ci.yml@v6 |
| with: |
| license-check: true |
| lint: true |
| node-versions: '["16", "18", "20", "22", "24"]' |