chore(deps-dev): bump @vitest/ui from 2.1.9 to 4.0.3 #117
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI/CD Pipeline | |
| on: | |
| push: | |
| branches: [main, develop] | |
| pull_request: | |
| branches: [main, develop] | |
| workflow_call: | |
| # Allow this workflow to be called by other workflows (like release) | |
| concurrency: | |
| group: ci-${{ github.ref }}-${{ github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| lint-and-typecheck: | |
| name: Lint & Type Check | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v2 | |
| with: | |
| version: 10.13.1 | |
| - name: Get pnpm store directory | |
| id: pnpm-cache | |
| shell: bash | |
| run: | | |
| echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v3 | |
| with: | |
| path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pnpm-store- | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Run linting | |
| run: pnpm lint | |
| - name: Run type checking | |
| run: pnpm type-check | |
| test: | |
| name: Test Suite | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| strategy: | |
| matrix: | |
| node-version: ['20', '22'] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v2 | |
| with: | |
| version: 10.13.1 | |
| - name: Get pnpm store directory | |
| id: pnpm-cache | |
| shell: bash | |
| run: | | |
| echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v3 | |
| with: | |
| path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
| key: ${{ runner.os }}-${{ matrix.node-version }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-${{ matrix.node-version }}-pnpm-store- | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Build packages | |
| run: pnpm build | |
| - name: Run tests | |
| run: pnpm test | |
| - name: Upload test coverage | |
| if: matrix.node-version == '20' | |
| uses: codecov/codecov-action@v3 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./packages/*/coverage/lcov.info | |
| fail_ci_if_error: false | |
| build: | |
| name: Build & Integration Tests | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| needs: [lint-and-typecheck, test] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v2 | |
| with: | |
| version: 10.13.1 | |
| - name: Get pnpm store directory | |
| id: pnpm-cache | |
| shell: bash | |
| run: | | |
| echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v3 | |
| with: | |
| path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pnpm-store- | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Build all packages | |
| run: pnpm build | |
| - name: Test Vite React example build | |
| working-directory: examples/vite-react | |
| run: | | |
| pnpm build | |
| ls -la dist/ | |
| - name: Test Node.js Express example build | |
| working-directory: examples/node-express | |
| run: | | |
| pnpm build | |
| ls -la dist/ | |
| - name: Test Vanilla Rollup example build | |
| working-directory: examples/vanilla-rollup | |
| run: | | |
| pnpm build | |
| ls -la dist/ | |
| - name: Verify package exports | |
| run: | | |
| node -e "console.log('Testing @easythread/core import:', Object.keys(require('./packages/core/dist/index.js')))" | |
| node -e "console.log('Testing @easythread/vite import:', Object.keys(require('./packages/vite-plugin/dist/index.js')))" | |
| node -e "console.log('Testing @easythread/rollup import:', Object.keys(require('./packages/rollup-plugin/dist/index.js')))" | |
| node -e "console.log('Testing @easythread/esbuild import:', Object.keys(require('./packages/esbuild-plugin/dist/index.js')))" | |
| examples-e2e: | |
| name: End-to-End Examples Test | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| needs: [build] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v2 | |
| with: | |
| version: 10.13.1 | |
| - name: Get pnpm store directory | |
| id: pnpm-cache | |
| shell: bash | |
| run: | | |
| echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v3 | |
| with: | |
| path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pnpm-store- | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Build all packages | |
| run: pnpm build | |
| - name: Test Node.js Express example runtime | |
| working-directory: examples/node-express | |
| run: | | |
| pnpm build | |
| timeout 30s node dist/index.js & | |
| SERVER_PID=$! | |
| sleep 5 | |
| # Test the fibonacci endpoint | |
| curl -f http://localhost:3000/fibonacci/10 || exit 1 | |
| echo "✅ Node.js Express example working" | |
| kill $SERVER_PID || true | |
| - name: Test Vanilla Rollup example runtime | |
| working-directory: examples/vanilla-rollup | |
| run: | | |
| pnpm build | |
| pnpm start | |
| echo "✅ Vanilla Rollup example working" | |
| publish-ready: | |
| name: Publish Readiness Check | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| needs: [examples-e2e] | |
| if: github.ref == 'refs/heads/main' | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v2 | |
| with: | |
| version: 10.13.1 | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Build packages | |
| run: pnpm build | |
| - name: Check package.json files | |
| run: | | |
| echo "Checking package.json files for publish readiness..." | |
| find packages -name "package.json" -exec echo "=== {} ===" \; -exec cat {} \; | |
| - name: Dry run publish | |
| run: | | |
| echo "Performing dry run publish check..." | |
| cd packages/core && npm pack --dry-run | |
| cd ../vite-plugin && npm pack --dry-run | |
| cd ../rollup-plugin && npm pack --dry-run | |
| cd ../esbuild-plugin && npm pack --dry-run | |
| - name: Create GitHub Release (Manual Trigger) | |
| if: false # Set to true when ready to enable automated releases | |
| uses: actions/create-release@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| tag_name: v${{ github.run_number }} | |
| release_name: Release v${{ github.run_number }} | |
| draft: true | |
| prerelease: false |