name: CI
on: [push]
jobs:
  test:
    name: CI
    strategy:
      matrix:
        os: [macos-latest, ubuntu-latest, windows-latest]
        vscode_version: ["stable", "1.69.2"]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Make envfile
        run: |
          echo APP_INSIGHT_INSTRUMENT_KEY=example_key >> .env
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 22.x
      - name: Get yarn cache directory path
        id: yarn-cache-dir-path
        run: echo "::set-output name=dir::$(yarn cache dir)"
      - uses: actions/cache@v4
        id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
        with:
          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-
      - uses: actions/cache@v4
        id: vscode-test-cache
        with:
          path: .vscode-test
          key: ${{ runner.os }}-vscode-test-${{ matrix.vscode_version }}
      - name: Install dependencies
        run: yarn install

      - name: Run headless test
        uses: GabrielBB/xvfb-action@v1.7
        with:
          run: yarn run test
        env:
          VSCODE_VERSION: ${{ matrix.vscode_version }}