name: CI on: push: branches: - master pull_request: {} jobs: lint: name: Lint runs-on: 'ubuntu-latest' steps: - name: Checkout uses: actions/checkout@v6 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' - name: Install dependencies run: npm ci - name: Lint run: npm run lint test: name: Test (Node) runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: operating-system: ['ubuntu-latest', 'windows-latest'] # https://nodejs.org/en/about/releases/ node-version: ['20', '22', '24'] steps: - name: Checkout uses: actions/checkout@v6 with: submodules: true - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - name: Install dependencies run: npm ci - name: Test run: npm run test - name: Test (Publish) if: matrix.node-version != '20' run: npx vitest run --project publish - name: Test (Integration) if: matrix.operating-system == 'ubuntu-latest' run: npm run test:integration browser: name: Test (Browser) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 with: submodules: true - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' - name: Install dependencies run: npm ci - name: Install Playwright run: | npx playwright install-deps npx playwright install - name: Build run: npm run build - name: Test run: | npm run test:browser-smoke npm run test:browser