Run browserstack not every time, and add linting #7
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Browserstack | |
| on: | |
| pull_request: | |
| types: [opened, synchronize] | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| jobs: | |
| prettier: | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| strategy: | |
| matrix: | |
| node-version: [22.16] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| - name: Run npm ci | |
| run: npm ci | |
| - name: Run npm prettier | |
| continue-on-error: true | |
| run: | | |
| ./node_modules/.bin/prettier --check . || echo "::warning::Prettier found formatting issues. Fix it locally by running './node_modules/.bin/prettier --write .'" | |
| - name: Run ESLint | |
| run: ./node_modules/.bin/eslint --ext .js . | |
| unit-tests: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| node-version: [22.16] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| - name: Run npm ci | |
| run: npm ci | |
| - name: Build project | |
| run: npm run build | |
| - name: Run unit tests | |
| run: npm run test:unit | |
| env: | |
| CI: true | |
| NODE_ENV: test | |
| browserstack: | |
| runs-on: ubuntu-latest | |
| needs: unit-tests | |
| if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'workflow_dispatch' | |
| strategy: | |
| matrix: | |
| node-version: [22.16] | |
| steps: | |
| - name: "BrowserStack Env Setup" | |
| uses: "browserstack/github-actions/setup-env@master" | |
| with: | |
| username: ${{ secrets.BROWSERSTACK_USERNAME }} | |
| access-key: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} | |
| - name: "Start BrowserStackLocal Tunnel" | |
| uses: "browserstack/github-actions/setup-local@master" | |
| with: | |
| local-testing: "start" | |
| local-logging-level: "all-logs" | |
| local-identifier: "random" | |
| - uses: actions/checkout@v4 | |
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| - name: Run npm ci | |
| run: npm ci | |
| - name: Build project | |
| run: npm run build | |
| - name: Run BrowserStack tests | |
| run: node ./test/index.js | |
| env: | |
| CI: true | |
| NODE_ENV: test | |
| DEBUG: false | |
| LOCATION: ${{ secrets.LOCATION }} | |
| BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }} | |
| BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} | |
| - name: "Stop BrowserStackLocal" | |
| uses: "browserstack/github-actions/setup-local@master" | |
| with: | |
| local-testing: "stop" |