88
99jobs :
1010 e2e :
11- name : E2E Tests
12- runs-on : depot-ubuntu-latest-8
11+ name : ${{ matrix.suite }}
12+ runs-on : depot-ubuntu-24.04
13+ strategy :
14+ fail-fast : false
15+ matrix :
16+ include :
17+ - suite : adk-middleware
18+ test_path : tests/adkMiddlewareTests
19+ services : ["dojo","adk-middleware"]
20+ wait_on : http://localhost:9999,tcp:localhost:8010
21+ - suite : agno
22+ test_path : tests/agnoTests
23+ services : ["dojo","agno"]
24+ wait_on : http://localhost:9999,tcp:localhost:8002
25+ - suite : crew-ai
26+ test_path : tests/crewAITests
27+ services : ["dojo","crew-ai"]
28+ wait_on : http://localhost:9999,tcp:localhost:8003
29+ - suite : langgraph-python
30+ test_path : tests/langgraphPythonTests
31+ services : ["dojo","langgraph-platform-python"]
32+ wait_on : http://localhost:9999,tcp:localhost:8005
33+ - suite : langgraph-typescript
34+ test_path : tests/langgraphTypescriptTests
35+ services : ["dojo","langgraph-platform-typescript"]
36+ wait_on : http://localhost:9999,tcp:localhost:8006
37+ - suite : langgraph-fastapi
38+ test_path : tests/langgraphFastAPITests
39+ services : ["dojo","langgraph-fastapi"]
40+ wait_on : http://localhost:9999,tcp:localhost:8004
41+ - suite : llama-index
42+ test_path : tests/llamaIndexTests
43+ services : ["dojo","llama-index"]
44+ wait_on : http://localhost:9999,tcp:localhost:8007
45+ - suite : mastra
46+ test_path : tests/mastraTests
47+ services : ["dojo","mastra"]
48+ wait_on : http://localhost:9999,tcp:localhost:8008
49+ - suite : mastra-agent-local
50+ test_path : tests/mastraAgentLocalTests
51+ services : ["dojo"]
52+ wait_on : http://localhost:9999
53+ - suite : middleware-starter
54+ test_path : tests/middlewareStarterTests
55+ services : ["dojo"]
56+ wait_on : http://localhost:9999
57+ - suite : pydantic-ai
58+ test_path : tests/pydanticAITests
59+ services : ["dojo","pydantic-ai"]
60+ wait_on : http://localhost:9999,tcp:localhost:8009
61+ - suite : server-starter
62+ test_path : tests/serverStarterTests
63+ services : ["dojo","server-starter"]
64+ wait_on : http://localhost:9999,tcp:localhost:8000
65+ - suite : server-starter-all
66+ test_path : tests/serverStarterAllFeaturesTests
67+ services : ["dojo","server-starter-all"]
68+ wait_on : http://localhost:9999,tcp:localhost:8001
69+ - suite : vercel-ai-sdk
70+ test_path : tests/vercelAISdkTests
71+ services : ["dojo"]
72+ wait_on : http://localhost:9999
1373
1474 steps :
1575 - name : Checkout code
2585 with :
2686 version : 10.13.1
2787
88+ # Now that pnpm is available, cache its store to speed installs
89+ - name : Resolve pnpm store path
90+ id : pnpm-store
91+ run : echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
92+
93+ - name : Cache pnpm store
94+ uses : actions/cache@v4
95+ with :
96+ path : ${{ env.STORE_PATH }}
97+ key : ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
98+ restore-keys : |
99+ ${{ runner.os }}-pnpm-store-
100+
101+ # Cache Python tool caches and virtualenvs; restore only to avoid long saves
102+ - name : Cache Python dependencies (restore-only)
103+ id : cache-python
104+ uses : actions/cache/restore@v4
105+ with :
106+ path : |
107+ ~/.cache/pip
108+ ~/.cache/pypoetry
109+ ~/.cache/uv
110+ **/.venv
111+ key : ${{ runner.os }}-pydeps-${{ hashFiles('**/poetry.lock', '**/pyproject.toml') }}
112+ restore-keys : |
113+ ${{ runner.os }}-pydeps-
114+
28115 - name : Install Poetry
29116 uses : snok/install-poetry@v1
30117 with :
@@ -35,21 +122,14 @@ jobs:
35122 - name : Install uv
36123 uses : astral-sh/setup-uv@v6
37124
38- - name : Setup pnpm cache
39- uses : actions/cache@v4
40- with :
41- path : ~/.local/share/pnpm/store
42- key : ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
43- restore-keys : |
44- ${{ runner.os }}-pnpm-store-
45-
46125 - name : Install dependencies
47126 working-directory : typescript-sdk
48127 run : pnpm install --frozen-lockfile
49128
50129 - name : Prepare dojo for e2e
51130 working-directory : typescript-sdk/apps/dojo
52- run : node ./scripts/prep-dojo-everything.js -e2e
131+ if : ${{ join(matrix.services, ',') != '' }}
132+ run : node ./scripts/prep-dojo-everything.js --only ${{ join(matrix.services, ',') }}
53133
54134 - name : Install e2e dependencies
55135 working-directory : typescript-sdk/apps/dojo/e2e
61141 env :
62142 OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
63143 LANGSMITH_API_KEY : ${{ secrets.LANGSMITH_API_KEY }}
144+ if : ${{ contains(join(matrix.services, ','), 'langgraph-fastapi') || contains(join(matrix.services, ','), 'langgraph-platform-python') || contains(join(matrix.services, ','), 'langgraph-platform-typescript') }}
64145 run : |
65146 echo "OPENAI_API_KEY=${OPENAI_API_KEY}" > examples/python/.env
66147 echo "LANGSMITH_API_KEY=${LANGSMITH_API_KEY}" >> examples/python/.env
@@ -74,33 +155,29 @@ jobs:
74155 env :
75156 OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
76157 LANGSMITH_API_KEY : ${{ secrets.LANGSMITH_API_KEY }}
158+ GOOGLE_API_KEY : ${{ secrets.GOOGLE_API_KEY }}
159+ if : ${{ join(matrix.services, ',') != '' && contains(join(matrix.services, ','), 'dojo') }}
77160 with :
78161 run : |
79- node ../scripts/run-dojo-everything.js
162+ node ../scripts/run-dojo-everything.js --only ${{ join(matrix.services, ',') }}
80163 working-directory : typescript-sdk/apps/dojo/e2e
81- wait-on : |
82- http://localhost:9999
83- tcp:localhost:8000
84- tcp:localhost:8001
85- tcp:localhost:8002
86- tcp:localhost:8003
87- tcp:localhost:8004
88- tcp:localhost:8005
89- tcp:localhost:8006
90- tcp:localhost:8007
91- tcp:localhost:8008
92- tcp:localhost:8009
93-
94- - name : Run tests
164+ wait-on : ${{ matrix.wait_on }}
165+ wait-for : 300000
166+
167+ - name : Run tests – ${{ matrix.suite }}
95168 working-directory : typescript-sdk/apps/dojo/e2e
96169 env :
97170 BASE_URL : http://localhost:9999
98- run : pnpm test
171+ PLAYWRIGHT_SUITE : ${{ matrix.suite }}
172+ run : |
173+ pnpm test -- ${{ matrix.test_path }}
99174
100- - name : Upload traces
175+ - name : Upload traces – ${{ matrix.suite }}
101176 if : always() # Uploads artifacts even if tests fail
102177 uses : actions/upload-artifact@v4
103178 with :
104- name : playwright-traces
105- path : typescript-sdk/apps/dojo/e2e/test-results/
179+ name : ${{ matrix.suite }}-playwright-traces
180+ path : |
181+ typescript-sdk/apps/dojo/e2e/test-results/${{ matrix.suite }}/**/*
182+ typescript-sdk/apps/dojo/e2e/playwright-report/**/*
106183 retention-days : 7
0 commit comments