| name: CI |
| |
| on: |
| push: |
| branches: ["main"] |
| pull_request: |
| branches: ["main"] |
| |
| # Allows you to run this workflow manually from the Actions tab |
| workflow_dispatch: |
| |
| jobs: |
| linters: |
| name: Linters |
| runs-on: macos-latest |
| steps: |
| - name: Checkout Branch |
| uses: actions/checkout@v3 |
| - name: Setup Node |
| uses: actions/setup-node@v3 |
| with: |
| node-version: 18.13.0 |
| - name: Install |
| run: npm install |
| - name: Run linters |
| run: npm run format |
| - name: Check if anything changed |
| run: | |
| git_status="`LC_ALL=C git status --porcelain --ignore-submodules -unormal 2>&1`" |
| if [ -n "$git_status" ]; then |
| printf "Some file(s) changed as the result of formatting, this means that you need to run the formatter on your patch.\n" |
| printf "Here is what changed:\n" |
| printf -- "$git_status\n\n" |
| printf "And here is the diff:\n" |
| git diff -U8 |
| exit 1 |
| fi |
| build: |
| name: Build |
| runs-on: macos-latest |
| strategy: |
| matrix: |
| browser: [chrome, firefox, safari] |
| steps: |
| - name: Install Firefox |
| if: ${{ matrix.browser == 'firefox' }} |
| run: brew install --cask firefox |
| - name: Checkout Branch |
| uses: actions/checkout@v3 |
| - name: Setup Node |
| uses: actions/setup-node@v3 |
| with: |
| node-version: 18.13.0 |
| - name: Install |
| run: npm install |
| - name: Run tests |
| run: | |
| echo "Running in $BROWSER" |
| npm run test:${{ matrix.browser }} |