| name: CI |
| |
| on: |
| push: |
| branches: ["main"] |
| pull_request: |
| branches: ["main"] |
| |
| # Allows you to run this workflow manually from the Actions tab |
| workflow_dispatch: |
| |
| jobs: |
| browser-macos: |
| name: Test Browser on macOS |
| runs-on: macos-latest |
| env: |
| GITHUB_ACTIONS_OUTPUT: "" |
| strategy: |
| fail-fast: false |
| matrix: |
| browser: [safari] |
| suite: [default, disabled, main] |
| steps: |
| |
| - &checkout-branch |
| name: Checkout Branch |
| uses: actions/checkout@v5 |
| |
| - &setup-node |
| name: Setup Node |
| uses: actions/setup-node@v5 |
| with: |
| node-version-file: package.json |
| cache: npm |
| |
| - &install-node-packages |
| name: Install Node Packages |
| run: npm ci |
| |
| - name: Run Tests |
| run: | |
| echo "Running in $BROWSER" |
| npm run test:${{ matrix.browser }} -- ${{ matrix.suite }} |
| |
| browser-linux: |
| name: Test Browser on Linux |
| runs-on: ubuntu-latest |
| env: |
| GITHUB_ACTIONS_OUTPUT: "" |
| strategy: |
| fail-fast: false |
| matrix: |
| browser: [chrome, firefox] |
| suite: [default, disabled, main] |
| steps: |
| - *checkout-branch |
| - *setup-node |
| - *install-node-packages |
| - name: Run Tests |
| run: | |
| echo "Running in $BROWSER" |
| npm run test:${{ matrix.browser }} -- ${{ matrix.suite }} |
| shell: |
| name: Test Shell |
| runs-on: ubuntu-latest |
| env: |
| GITHUB_ACTIONS_OUTPUT: "" |
| strategy: |
| fail-fast: false |
| matrix: |
| shell: [jsc, spidermonkey, v8] |
| suite: [default, disabled, main] |
| steps: |
| - *checkout-branch |
| - *setup-node |
| - *install-node-packages |
| |
| - name: Extract Week Number |
| run: echo "WEEK_NUMBER=$(date +%W)" >> $GITHUB_ENV |
| |
| - name: Cache jsvu Binaries |
| uses: actions/cache@v4 |
| with: |
| path: ~/.jsvu |
| key: ${{ runner.os }}-jsvu-${{ matrix.shell }}-week-${{ env.WEEK_NUMBER }} |
| |
| - name: Run Tests |
| run: | |
| echo "Running in $BROWSER" |
| npm run test:${{ matrix.shell }} -- ${{ matrix.suite }} |
| build: |
| name: Test Build |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout Branch |
| uses: actions/checkout@v4 |
| with: |
| fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} |
| |
| - *setup-node |
| - *install-node-packages |
| |
| - 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 |
| |