name: Continuous integration on: pull_request: types: [opened, synchronize, reopened] permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build-and-run-vitest: name: Build and run vitest runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup node uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: 24.x cache: npm - name: Install dependencies run: npm ci --ignore-scripts - name: Build project run: npm run build - name: Install Playwright with deps run: npx playwright install --with-deps - name: Run unit tests run: npm run test:vitest:unit - name: Run browser tests run: npm run test:vitest:browser:headless - name: Pack npm tarball run: npm pack - name: Dependency Review uses: actions/dependency-review-action@2031cfc080254a8a887f58cffee85186f0e49e48 # v4.9.0 - name: Upload npm pack artifact uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 with: name: axios-tarball path: axios-*.tgz if-no-files-found: error retention-days: 1 cjs-smoke-tests: name: CJS smoke tests (Node ${{ matrix.node-version }}) needs: build-and-run-vitest runs-on: ubuntu-latest strategy: fail-fast: false matrix: node-version: [12, 14, 16, 18] steps: - name: Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup node uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: ${{ matrix.node-version }} cache: npm cache-dependency-path: tests/smoke/cjs/package-lock.json - name: Download npm pack artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: axios-tarball path: artifacts - name: Install CJS smoke test dependencies working-directory: tests/smoke/cjs run: npm install --ignore-scripts - name: Install packed axios working-directory: tests/smoke/cjs run: npm install --no-save ../../../artifacts/axios-*.tgz - name: Run CJS smoke tests working-directory: tests/smoke/cjs run: npm run test:smoke:cjs:mocha esm-smoke-tests: name: ESM smoke tests (Node ${{ matrix.node-version }}) needs: build-and-run-vitest runs-on: ubuntu-latest strategy: fail-fast: false matrix: node-version: [20, 22, 24] steps: - name: Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup node uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: ${{ matrix.node-version }} cache: npm cache-dependency-path: tests/smoke/esm/package-lock.json - name: Download npm pack artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: axios-tarball path: artifacts - name: Install ESM smoke test dependencies working-directory: tests/smoke/esm run: npm install --ignore-scripts - name: Install packed axios working-directory: tests/smoke/esm run: npm install --no-save ../../../artifacts/axios-*.tgz - name: Run ESM smoke tests working-directory: tests/smoke/esm run: npm run test:smoke:esm:vitest cjs-module-tests: name: CJS module tests (Node ${{ matrix.node-version }}) needs: build-and-run-vitest runs-on: ubuntu-latest strategy: fail-fast: false matrix: node-version: [12, 14, 16, 18] steps: - name: Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup node uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: ${{ matrix.node-version }} cache: npm cache-dependency-path: tests/module/cjs/package-lock.json - name: Download npm pack artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: axios-tarball path: artifacts - name: Install CJS module test dependencies working-directory: tests/module/cjs run: npm install --ignore-scripts - name: Install packed axios working-directory: tests/module/cjs run: npm install --no-save ../../../artifacts/axios-*.tgz - name: Run CJS module tests working-directory: tests/module/cjs run: npm run test:module:cjs esm-module-tests: name: ESM module tests (Node ${{ matrix.node-version }}) needs: build-and-run-vitest runs-on: ubuntu-latest strategy: fail-fast: false matrix: node-version: [20, 22, 24] steps: - name: Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup node uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: ${{ matrix.node-version }} cache: npm cache-dependency-path: tests/module/esm/package-lock.json - name: Download npm pack artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: axios-tarball path: artifacts - name: Install ESM module test dependencies working-directory: tests/module/esm run: npm install --ignore-scripts - name: Install packed axios working-directory: tests/module/esm run: npm install --no-save ../../../artifacts/axios-*.tgz - name: Run ESM module tests working-directory: tests/module/esm run: npm run test:module:esm bun-smoke-tests: name: Bun smoke tests needs: build-and-run-vitest runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup bun uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 - name: Download npm pack artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: axios-tarball path: artifacts - name: Install packed axios env: TMPDIR: ${{ runner.temp }} BUN_INSTALL_CACHE_DIR: ${{ runner.temp }}/bun-cache run: | mkdir -p "$BUN_INSTALL_CACHE_DIR" mv artifacts/axios-*.tgz artifacts/axios.tgz cd tests/smoke/bun bun add file:../../../artifacts/axios.tgz - name: Run Bun smoke tests working-directory: tests/smoke/bun run: bun test deno-smoke-tests: name: Deno smoke tests needs: build-and-run-vitest runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup deno uses: denoland/setup-deno@e95548e56dfa95d4e1a28d6f422fafe75c4c26fb # v2.0.3 - name: Download npm pack artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: axios-tarball path: artifacts - name: Prepare packed axios dist run: mkdir -p dist && tar -xzf artifacts/axios-*.tgz -C artifacts && cp -R artifacts/package/dist/. ./dist - name: Install Deno smoke test dependencies working-directory: tests/smoke/deno run: deno install - name: Run Deno smoke tests working-directory: tests/smoke/deno run: deno task test