diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 0000000..578b94f --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,74 @@ +name: Test + +on: + push: + branches: + - master + # renovate/** branches are generated by https://github.com/apps/renovate + - renovate/** + + pull_request: + types: + - opened + - synchronize + merge_group: + +permissions: + contents: read # to fetch code (actions/checkout) + +jobs: + test_matrix: + strategy: + matrix: + node-version: + - 18 + - 19 + - 20 + - 21 + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - uses: actions/checkout@v4 + - run: git config --global user.name github-actions + - run: git config --global user.email github-actions@github.com + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: npm + - run: npm clean-install + - name: Ensure dependencies are compatible with the version of node + run: npx ls-engines + - run: npm run test:e2e + + test: + runs-on: ubuntu-latest + needs: test_matrix + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + cache: npm + - run: npm clean-install + - run: npm audit signatures + - run: npm run lint + + coverage: + runs-on: ubuntu-latest + needs: + - test_matrix + - test + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + cache: npm + - run: npm clean-install + - run: npm run test:e2e:cov + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v3 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.gitignore b/.gitignore index 49be6dd..3a69726 100644 --- a/.gitignore +++ b/.gitignore @@ -11,8 +11,7 @@ npm-debug.log .DS_Store # tests -/test -/coverage +/tests/coverage /.nyc_output # dist diff --git a/package.json b/package.json index eb006db..1d7cd4b 100644 --- a/package.json +++ b/package.json @@ -14,10 +14,14 @@ "format": "prettier --write \"**/*.ts\"", "lint": "eslint 'lib/**/*.ts' --fix", "test:e2e": "jest --config ./tests/jest-e2e.json --runInBand", + "test:e2e:cov": "jest --config ./tests/jest-e2e.json --runInBand --coverage", "test:e2e:dev": "jest --config ./tests/jest-e2e.json --runInBand --watch", "prepare": "husky install", "semantic-release": "semantic-release" }, + "engines": { + "node": ">=18" + }, "main": "dist/index.js", "types": "dist/index.d.ts", "devDependencies": {