Skip to main content
EVOKORE// WORKFLOWS / ts.test-e2e.yml
ComposioHQ/composioworkflow · 202 lines

workflows/ts.test-e2e.yml

CI / automation

View on GitHub →
# REFERENCE-ONLY: GitHub Actions secrets referenced below are illustrative.
# Do not inject real credentials. See your CI/CD provider for proper secret management.
name: E2E Test Typescript SDK

on:
  push:
    branches: [master, next]
    paths:
      - 'ts/**'
  pull_request:
    paths:
      - 'ts/**'
  workflow_dispatch:

jobs:
  # Node.js E2E tests, running in Docker to isolate environment
  # Each test suite defines its own nodeVersions in e2e.test.ts
  # Tests that don't support the matrix version are automatically skipped
  test-e2e-node-docker:
    name: E2E Test Node.js ${{ matrix.node-version }}
    runs-on: ubuntu-24.04
    permissions: read-all
    strategy:
      fail-fast: false
      matrix:
        node-version: ['20.18.0', '20.19.0', '22.12.0']
    env:
      CI: 1
      COMPOSIO_API_KEY: ${{ secrets.COMPOSIO_API_KEY }}
      COMPOSIO_USER_API_KEY: ${{ secrets.COMPOSIO_USER_API_KEY }}
      COMPOSIO_E2E_NODE_VERSION: ${{ matrix.node-version }}
      OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

    steps:
      - name: Checkout Code
        uses: actions/checkout@v6

      - name: Normalize Composio API keys
        run: |
          echo "COMPOSIO_USER_API_KEY=<YOUR_API_KEY> >> "$GITHUB_ENV"
          echo "COMPOSIO_API_KEY=<YOUR_API_KEY> >> "$GITHUB_ENV"

      - name: Setup Node.js, pnpm, Bun
        uses: ./.github/actions/setup-node-pnpm-bun

      - name: Install Dependencies
        run: pnpm install --frozen-lockfile

      - name: Build
        run: pnpm run build:packages

      - name: Pre-build Docker image for e2e tests
        run: |
          docker build -f ts/e2e-tests/_utils/Dockerfile.node \
            --build-arg NODE_VERSION=${{ matrix.node-version }} \
            --label composio.e2e=true \
            --label composio.runtime=node \
            --label "composio.node_version=${{ matrix.node-version }}" \
            -t "composio-e2e-node:${{ matrix.node-version }}" \
            .

      - name: Run Node.js E2E Tests
        run: pnpm run test:e2e:node

  # Deno E2E tests, running in Docker to isolate environment
  # Each test suite defines its own versions.deno in e2e.test.ts
  # Tests that don't support the matrix version are automatically skipped
  test-e2e-deno-docker:
    name: E2E Test Deno ${{ matrix.deno-version }}
    runs-on: ubuntu-24.04
    permissions: read-all
    strategy:
      fail-fast: false
      matrix:
        deno-version: ['2.6.7']
    env:
      CI: 1
      COMPOSIO_API_KEY: ${{ secrets.COMPOSIO_API_KEY }}
      COMPOSIO_USER_API_KEY: ${{ secrets.COMPOSIO_USER_API_KEY }}
      COMPOSIO_E2E_DENO_VERSION: ${{ matrix.deno-version }}
      OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

    steps:
      - name: Checkout Code
        uses: actions/checkout@v6

      - name: Normalize Composio API keys
        run: |
          echo "COMPOSIO_USER_API_KEY=<YOUR_API_KEY> >> "$GITHUB_ENV"
          echo "COMPOSIO_API_KEY=<YOUR_API_KEY> >> "$GITHUB_ENV"

      - name: Setup Deno
        uses: denoland/setup-deno@v2
        with:
          deno-version: ${{ matrix.deno-version }}

      - name: Setup Node.js, pnpm, Bun
        uses: ./.github/actions/setup-node-pnpm-bun

      - name: Install Dependencies
        run: pnpm install --frozen-lockfile

      - name: Build
        run: pnpm run build:packages

      - name: Run Deno E2E Tests
        run: pnpm run test:e2e:deno

  # CLI E2E tests, running in scratch Docker to isolate environment
  test-e2e-cli-docker:
    name: E2E Test CLI (scratch)
    runs-on: ubuntu-24.04
    permissions: read-all
    env:
      CI: 1
      COMPOSIO_USER_API_KEY: ${{ secrets.COMPOSIO_USER_API_KEY }}
      COMPOSIO_API_KEY: ${{ secrets.COMPOSIO_API_KEY }}
      OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

    steps:
      - name: Checkout Code
        uses: actions/checkout@v6

      - name: Normalize Composio API keys
        run: |
          echo "COMPOSIO_USER_API_KEY=<YOUR_API_KEY> >> "$GITHUB_ENV"
          echo "COMPOSIO_API_KEY=<YOUR_API_KEY> >> "$GITHUB_ENV"

      - name: Setup Node.js, pnpm, Bun
        uses: ./.github/actions/setup-node-pnpm-bun

      - name: Install Dependencies
        run: pnpm install --frozen-lockfile

      - name: Build
        run: pnpm run build:packages

      - name: Pre-build Docker image for CLI e2e tests
        run: |
          CLI_VERSION=$(node -p "require('./ts/packages/cli/package.json').version")
          echo "COMPOSIO_E2E_CLI_VERSION=${CLI_VERSION}" >> "$GITHUB_ENV"
          docker build -f ts/e2e-tests/_utils/Dockerfile.cli \
            --build-arg CLI_VERSION="${CLI_VERSION}" \
            --label composio.e2e=true \
            --label composio.runtime=cli \
            --label "composio.cli_version=${CLI_VERSION}" \
            -t "composio-e2e-cli:${CLI_VERSION}" \
            .

      - name: Run CLI E2E Tests
        run: pnpm run test:e2e:cli

  # Cloudflare Workerd E2E tests
  test-e2e-cloudflare:
    name: E2E Test Cloudflare Workerd
    runs-on: ubuntu-24.04
    permissions: read-all
    env:
      COMPOSIO_API_KEY: ${{ secrets.COMPOSIO_API_KEY }}
      COMPOSIO_USER_API_KEY: ${{ secrets.COMPOSIO_USER_API_KEY }}
      OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

    steps:
      - name: Checkout Code
        uses: actions/checkout@v6

      - name: Normalize Composio API keys
        run: |
          echo "COMPOSIO_USER_API_KEY=<YOUR_API_KEY> >> "$GITHUB_ENV"
          echo "COMPOSIO_API_KEY=<YOUR_API_KEY> >> "$GITHUB_ENV"

      - name: Setup Node.js, pnpm, Bun
        uses: ./.github/actions/setup-node-pnpm-bun
        with:
          node-version: '22.12.0'

      - name: Install Dependencies
        run: pnpm install --frozen-lockfile

      - name: Build
        run: pnpm run build:packages

      - name: Verify API Key
        run: |
          if [ -z "$COMPOSIO_API_KEY" ]; then
            echo "::error::COMPOSIO_API_KEY is not set"
            exit 1
          fi
          echo "✅ COMPOSIO_API_KEY is configured"
          if [ -z "$OPENAI_API_KEY" ]; then
            echo "::error::OPENAI_API_KEY is not set"
            exit 1
          fi
          echo "✅ OPENAI_API_KEY is configured"

      - name: Run Cloudflare Workers E2E Tests
        run: pnpm run test:e2e:cloudflare
        env:
          COMPOSIO_USER_API_KEY: ${{ secrets.COMPOSIO_USER_API_KEY }}
          COMPOSIO_API_KEY: ${{ secrets.COMPOSIO_API_KEY }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}