name: Browserstack on: push: branches: - main jobs: test: runs-on: ubuntu-latest environment: browserstack env: BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }} BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} NODE_VERSION: 20.x name: ${{ matrix.BROWSER }} concurrency: group: ${{ github.workflow }}-${{ matrix.BROWSER }} timeout-minutes: 30 strategy: fail-fast: false matrix: BROWSER: - 'IE_11' - 'Safari_latest' - 'Safari_latest-1' - 'Chrome_latest' - 'Chrome_latest-1' - 'Opera_latest' - 'Edge_latest' - 'Edge_latest-1' - 'Firefox_latest' - 'Firefox_latest-1' - '__iOS_18' - '__iOS_17' - '__iOS_16' steps: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Use Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: node-version: ${{ env.NODE_VERSION }} - name: Cache uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: ~/.npm key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock- - name: Install dependencies run: npm install - name: Build jQuery run: npm run build:all - name: Pretest script run: npm run pretest - name: Run tests run: npm run test:unit -- -v --browserstack "${{ matrix.BROWSER }}" --run-id ${{ github.run_id }} --isolate --retries 3 --hard-retries 1