## # Run tests ## name: Tests on: pull_request: push: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: name: Run tests runs-on: ubuntu-latest steps: - name: Check out Git repository uses: actions/checkout@v4 - name: Install Node.js, NPM and Yarn uses: actions/setup-node@v4 with: node-version: 22 - name: Cache node modules uses: actions/cache@v4 id: cache with: path: node_modules key: node-modules-${{ hashFiles('**/package-lock.json') }} # supposedly our current cache includes native modules like Realm # that have compiled binaries specific to the environment where they were installed # which might not be the same as the github actions environment # so we need to rebuild them - name: Rebuild native modules if: steps.cache.outputs.cache-hit == 'true' run: npm rebuild - name: Install dependencies if: steps.cache.outputs.cache-hit != 'true' run: npm install # Need this for linting Ruby - name: Install Ruby and gems uses: ruby/setup-ruby@v1 with: bundler-cache: true - name: Lint run: npm run lint - name: Unit tests run: npm run test:unit - name: Integration tests run: npm run test:integration notify: name: Notify Slack needs: test if: ${{ success() || failure() }} runs-on: ubuntu-latest steps: - uses: iRoachie/slack-github-actions@v2.3.0 if: env.SLACK_WEBHOOK_URL != null env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_BUILDS_WEBHOOK_URL }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}