From acd0ca604383413038e22ba87dfa6088d879a878 Mon Sep 17 00:00:00 2001 From: Oliver Stenbom Date: Thu, 1 Oct 2026 11:00:44 +0200 Subject: [PATCH] ci: run existing Studio Playwright suite in the fork Use hosted Ubuntu runners and local Turbo cache for the existing four-shard kitchen-sink job. Keep the native runner, browser setup, tests, and retries unchanged. --- .github/workflows/fork-studio-browser.yml | 67 +++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .github/workflows/fork-studio-browser.yml diff --git a/.github/workflows/fork-studio-browser.yml b/.github/workflows/fork-studio-browser.yml new file mode 100644 index 000000000000..5f102b7e8e3e --- /dev/null +++ b/.github/workflows/fork-studio-browser.yml @@ -0,0 +1,67 @@ +name: Fork Studio browser tests + +on: + pull_request: + branches: [main, 'codex/mastra-playwright-baseline'] + workflow_dispatch: + +permissions: {} + +jobs: + e2e-kitchen-sink: + name: E2E kitchen-sink (${{ matrix.shard }}/${{ strategy.job-total }}) + runs-on: ubuntu-24.04 + timeout-minutes: 45 + strategy: + fail-fast: false + matrix: + shard: [1, 2, 3, 4] + permissions: + contents: read + env: + TURBO_CACHE: local:rw + + steps: + - name: Checkout repo + uses: actions/checkout@e8d4307400f9427dba7cb98e488d6ab85f1cec5f + timeout-minutes: 20 + with: + ref: ${{ github.event.pull_request.head.sha || github.sha }} + + - name: Record runner resources + run: | + nproc + free -h + + - name: Setup pnpm and Node.js + uses: ./.github/actions/setup-pnpm-node + + - name: Build + run: >- + pnpm turbo + --filter "@mastra/core" + --filter "mastra" + --filter "@mastra/editor" + --filter "@mastra/memory" + --filter "@mastra/libsql" + --filter "@mastra/loggers" + --filter "@mastra/mcp" + --filter "@internal/playground" + build + + - name: Setup e2e project dependencies + working-directory: ./packages/playground + run: pnpm test:e2e:setup + + - name: Test E2E + working-directory: ./packages/playground + run: pnpm exec playwright test -c e2e/playwright.config.ts --shard=${{ matrix.shard }}/${{ strategy.job-total }} + + - name: Upload test artifacts + if: always() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a + with: + name: studio-playwright-${{ matrix.shard }} + path: packages/playground/test-results/ + if-no-files-found: ignore +