name: Test JS SDK on: workflow_call: inputs: E2B_DOMAIN: required: false type: string default: '' secrets: E2B_API_KEY: required: true permissions: contents: read jobs: test: defaults: run: working-directory: ./packages/js-sdk shell: bash name: JS SDK - Build and test (${{ matrix.os }}) strategy: matrix: os: [ubuntu-22.04, windows-latest] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Parse .tool-versions uses: wistia/parse-tool-versions@v2.1.1 with: filename: '.tool-versions' uppercase: 'true' prefix: 'tool_version_' - name: Install pnpm uses: pnpm/action-setup@v4 id: pnpm-install with: version: '${{ env.TOOL_VERSION_PNPM }}' - name: Setup Node uses: actions/setup-node@v6 with: node-version: '${{ env.TOOL_VERSION_NODEJS }}' registry-url: 'https://registry.npmjs.org' cache: pnpm cache-dependency-path: pnpm-lock.yaml - name: Configure pnpm run: | pnpm config set auto-install-peers true pnpm config set exclude-links-from-lockfile true - name: Install dependencies run: | pnpm install --frozen-lockfile - name: Get Playwright version id: playwright-version run: echo "version=$(node -p "require('playwright/package.json').version")" >> "$GITHUB_OUTPUT" - name: Cache Playwright browsers uses: actions/cache@v4 with: path: ${{ matrix.os == 'windows-latest' && '~/AppData/Local/ms-playwright' || '~/.cache/ms-playwright' }} key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.version }} - name: Test build run: pnpm build - name: Run Node tests run: pnpm test env: E2B_API_KEY: ${{ secrets.E2B_API_KEY }} E2B_DOMAIN: ${{ inputs.E2B_DOMAIN }} - name: Install Bun uses: oven-sh/setup-bun@v2 - name: Run Bun tests run: pnpm test:bun env: E2B_API_KEY: ${{ secrets.E2B_API_KEY }} E2B_DOMAIN: ${{ inputs.E2B_DOMAIN }} - name: Install Deno uses: denoland/setup-deno@v1 with: deno-version: v${{ env.TOOL_VERSION_DENO }} - name: Run Deno tests run: pnpm test:deno env: E2B_API_KEY: ${{ secrets.E2B_API_KEY }} E2B_DOMAIN: ${{ inputs.E2B_DOMAIN }}