name: 'Lint & Test PRs' on: pull_request: paths-ignore: - 'docs/wiki/**' permissions: pull-requests: write jobs: test-on-linux: runs-on: ubuntu-latest steps: - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: node-version: 20 - name: Check out Git repository uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 with: persist-credentials: false # work around for npm installs from git+https://github.com/johannesjo/J2M.git - name: Reconfigure git to use HTTP authentication run: > git config --global url."https://github.com/".insteadOf ssh://git@github.com/ - name: Get npm cache directory id: npm-cache-dir run: | echo "::set-output name=dir::$(npm config get cache)" - uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5 id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' with: path: ${{ steps.npm-cache-dir.outputs.dir }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install npm Packages # if: steps.npm-cache.outputs.cache-hit != 'true' run: npm i - name: Install Playwright Browsers run: | npx playwright install --with-deps chromium npx playwright install-deps chromium - run: npm run env # Generate env.generated.ts from environment variables - run: npm run lint - run: npm run int:test # Validate i18n JSON files - run: npm run test - name: Test E2E run: npm run e2e - name: 'Upload E2E results on failure' if: ${{ failure() }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: e2eResults path: .tmp/e2e-test-results/**/*.* retention-days: 14