| name: CI |
| |
| on: |
| push: |
| branches: ["main"] |
| pull_request: |
| branches: ["main"] |
| |
| # Allows you to run this workflow manually from the Actions tab |
| workflow_dispatch: |
| |
| jobs: |
| test: |
| name: Test |
| runs-on: macos-latest |
| env: |
| GITHUB_ACTIONS_OUTPUT: "" |
| strategy: |
| fail-fast: false |
| matrix: |
| browser: [chrome, firefox, jsc, safari, spidermonkey, v8] |
| steps: |
| - name: Extract Week Number |
| run: echo "WEEK_NUMBER=$(date +%W)" >> $GITHUB_ENV |
| |
| - name: Install Firefox |
| if: ${{ matrix.browser == 'firefox' }} |
| run: brew install --cask firefox |
| |
| - name: Checkout Branch |
| uses: actions/checkout@v5 |
| |
| - name: Setup Node |
| uses: actions/setup-node@v5 |
| with: |
| node-version-file: package.json |
| cache: npm |
| |
| - name: Install Node Packages |
| run: npm ci |
| |
| - name: Cache jsvu Binaries |
| uses: actions/cache@v4 |
| with: |
| path: ~/.jsvu |
| key: ${{ runner.os }}-jsvu-${{ matrix.browser }}-week-${{ env.WEEK_NUMBER }} |
| |
| - name: Run Tests |
| run: | |
| echo "Running in $BROWSER" |
| npm run test:${{ matrix.browser }} |
| |
| build: |
| name: Build |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout Branch |
| uses: actions/checkout@v4 |
| with: |
| fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} |
| |
| - name: Setup Node |
| uses: actions/setup-node@v4 |
| with: |
| node-version-file: package.json |
| cache: npm |
| |
| - name: Install Node Packages |
| run: npm ci |
| |
| - name: Run Build |
| run: | |
| if ${{ github.event_name == 'pull_request' }}; then |
| npm run test:build -- --diff="HEAD^...HEAD" |
| else |
| npm run test:build -- --diff="${{ github.event.before }}...${{ github.event.after }}" |
| fi |
| |