chore(webview): track 15 mcp-tool-icons SVGs imported by webview #8
Workflow file for this run
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 | |
| on: | |
| push: | |
| branches: ["**"] | |
| pull_request: | |
| env: | |
| PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1" | |
| # tsup's --dts worker hits Node's default ~2GB heap during the mcp-server | |
| # build (70+ entry points + DTS emission). Lift the cap to 4GB; both | |
| # ubuntu-latest and windows-latest runners have ~7GB RAM available. | |
| NODE_OPTIONS: "--max-old-space-size=4096" | |
| jobs: | |
| build-and-test: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| node-version: [20, 22] | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: npm | |
| - run: npm ci | |
| # Workaround for npm/cli#4828: optional native bindings sometimes don't | |
| # install when `npm ci` runs from a lockfile generated on a different | |
| # platform. Force-install the @tailwindcss/oxide native binding for the | |
| # current runner so vite/postcss can find it. | |
| - name: Install platform-specific tailwind oxide binding (npm/cli#4828) | |
| run: | | |
| if [ "$RUNNER_OS" = "Linux" ]; then | |
| npm install --no-save --workspaces=false @tailwindcss/oxide-linux-x64-gnu | |
| elif [ "$RUNNER_OS" = "Windows" ]; then | |
| npm install --no-save --workspaces=false @tailwindcss/oxide-win32-x64-msvc | |
| elif [ "$RUNNER_OS" = "macOS" ]; then | |
| npm install --no-save --workspaces=false @tailwindcss/oxide-darwin-arm64 @tailwindcss/oxide-darwin-x64 | |
| fi | |
| - run: npm run build | |
| - run: npm run typecheck | |
| - name: Test with coverage | |
| run: | | |
| mkdir -p .test-artifacts | |
| set -o pipefail | |
| npm run test:coverage 2>&1 | tee .test-artifacts/vitest.log | |
| - name: Assert no secret shapes in test artifacts | |
| run: node scripts/assert-no-secret-leak.mjs .test-artifacts | |
| - name: Verify MCP tarball is clean | |
| if: matrix.node-version == 22 | |
| run: | | |
| cd packages/mcp-server | |
| npm pack --dry-run 2>&1 | tee /tmp/pack.txt | |
| if grep -qE "dev-tools/|\.chrome-profile|captures/" /tmp/pack.txt; then | |
| echo "ERROR: Private files would leak into npm tarball!" | |
| exit 1 | |
| fi | |
| - name: Verify VSIX is clean | |
| if: matrix.node-version == 22 | |
| run: | | |
| cd packages/extension | |
| npm run prepare:package-deps || true | |
| npx @vscode/vsce ls --no-dependencies 2>&1 | tee /tmp/vsix.txt | |
| if grep -qE "\.ts$|dev-tools" /tmp/vsix.txt; then | |
| echo "ERROR: Source files would leak into VSIX!" | |
| exit 1 | |
| fi |