8
8
9
9
jobs :
10
10
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
30
+ test_path : tests/langgraphTests
31
+ services : ["dojo","langgraph-platform-python","langgraph-platform-typescript"]
32
+ wait_on : http://localhost:9999,tcp:localhost:8005,tcp:localhost:8006
33
+ - suite : langgraph-fastapi
34
+ test_path : tests/langgraphFastAPITests
35
+ services : ["dojo","langgraph-fastapi"]
36
+ wait_on : http://localhost:9999,tcp:localhost:8004
37
+ - suite : llama-index
38
+ test_path : tests/llamaIndexTests
39
+ services : ["dojo","llama-index"]
40
+ wait_on : http://localhost:9999,tcp:localhost:8007
41
+ - suite : mastra
42
+ test_path : tests/mastraTests
43
+ services : ["dojo","mastra"]
44
+ wait_on : http://localhost:9999,tcp:localhost:8008
45
+ - suite : mastra-agent-local
46
+ test_path : tests/mastraAgentLocalTests
47
+ services : ["dojo"]
48
+ wait_on : http://localhost:9999
49
+ - suite : middleware-starter
50
+ test_path : tests/middlewareStarterTests
51
+ services : ["dojo"]
52
+ wait_on : http://localhost:9999
53
+ - suite : pydantic-ai
54
+ test_path : tests/pydanticAITests
55
+ services : ["dojo","pydantic-ai"]
56
+ wait_on : http://localhost:9999,tcp:localhost:8009
57
+ - suite : server-starter
58
+ test_path : tests/serverStarterTests
59
+ services : ["dojo","server-starter"]
60
+ wait_on : http://localhost:9999,tcp:localhost:8000
61
+ - suite : server-starter-all
62
+ test_path : tests/serverStarterAllFeaturesTests
63
+ services : ["dojo","server-starter-all"]
64
+ wait_on : http://localhost:9999,tcp:localhost:8001
65
+ - suite : vercel-ai-sdk
66
+ test_path : tests/vercelAISdkTests
67
+ services : ["dojo"]
68
+ wait_on : http://localhost:9999
13
69
14
70
steps :
15
71
- name : Checkout code
25
81
with :
26
82
version : 10.13.1
27
83
84
+ # Now that pnpm is available, cache its store to speed installs
85
+ - name : Resolve pnpm store path
86
+ id : pnpm-store
87
+ run : echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
88
+
89
+ - name : Cache pnpm store
90
+ uses : actions/cache@v4
91
+ with :
92
+ path : ${{ env.STORE_PATH }}
93
+ key : ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
94
+ restore-keys : |
95
+ ${{ runner.os }}-pnpm-store-
96
+
97
+ # Cache Python tool caches and virtualenvs; restore only to avoid long saves
98
+ - name : Cache Python dependencies (restore-only)
99
+ id : cache-python
100
+ uses : actions/cache/restore@v4
101
+ with :
102
+ path : |
103
+ ~/.cache/pip
104
+ ~/.cache/pypoetry
105
+ ~/.cache/uv
106
+ **/.venv
107
+ key : ${{ runner.os }}-pydeps-${{ hashFiles('**/poetry.lock', '**/pyproject.toml') }}
108
+ restore-keys : |
109
+ ${{ runner.os }}-pydeps-
110
+
28
111
- name : Install Poetry
29
112
uses : snok/install-poetry@v1
30
113
with :
@@ -35,21 +118,14 @@ jobs:
35
118
- name : Install uv
36
119
uses : astral-sh/setup-uv@v6
37
120
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
-
46
121
- name : Install dependencies
47
122
working-directory : typescript-sdk
48
123
run : pnpm install --frozen-lockfile
49
124
50
125
- name : Prepare dojo for e2e
51
126
working-directory : typescript-sdk/apps/dojo
52
- run : node ./scripts/prep-dojo-everything.js -e2e
127
+ if : ${{ join(matrix.services, ',') != '' }}
128
+ run : node ./scripts/prep-dojo-everything.js --only ${{ join(matrix.services, ',') }}
53
129
54
130
- name : Install e2e dependencies
55
131
working-directory : typescript-sdk/apps/dojo/e2e
61
137
env :
62
138
OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
63
139
LANGSMITH_API_KEY : ${{ secrets.LANGSMITH_API_KEY }}
140
+ if : ${{ contains(join(matrix.services, ','), 'langgraph-fastapi') || contains(join(matrix.services, ','), 'langgraph-platform-python') || contains(join(matrix.services, ','), 'langgraph-platform-typescript') }}
64
141
run : |
65
142
echo "OPENAI_API_KEY=${OPENAI_API_KEY}" > examples/python/.env
66
143
echo "LANGSMITH_API_KEY=${LANGSMITH_API_KEY}" >> examples/python/.env
@@ -74,33 +151,29 @@ jobs:
74
151
env :
75
152
OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
76
153
LANGSMITH_API_KEY : ${{ secrets.LANGSMITH_API_KEY }}
154
+ GOOGLE_API_KEY : ${{ secrets.GOOGLE_API_KEY }}
155
+ if : ${{ join(matrix.services, ',') != '' && contains(join(matrix.services, ','), 'dojo') }}
77
156
with :
78
157
run : |
79
- node ../scripts/run-dojo-everything.js
158
+ node ../scripts/run-dojo-everything.js --only ${{ join(matrix.services, ',') }}
80
159
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
160
+ wait-on : ${{ matrix.wait_on }}
161
+ wait-for : 300000
162
+
163
+ - name : Run tests – ${{ matrix.suite }}
95
164
working-directory : typescript-sdk/apps/dojo/e2e
96
165
env :
97
166
BASE_URL : http://localhost:9999
98
- run : pnpm test
167
+ PLAYWRIGHT_SUITE : ${{ matrix.suite }}
168
+ run : |
169
+ pnpm test -- ${{ matrix.test_path }}
99
170
100
- - name : Upload traces
171
+ - name : Upload traces – ${{ matrix.suite }}
101
172
if : always() # Uploads artifacts even if tests fail
102
173
uses : actions/upload-artifact@v4
103
174
with :
104
- name : playwright-traces
105
- path : typescript-sdk/apps/dojo/e2e/test-results/
175
+ name : ${{ matrix.suite }}-playwright-traces
176
+ path : |
177
+ typescript-sdk/apps/dojo/e2e/test-results/${{ matrix.suite }}/**/*
178
+ typescript-sdk/apps/dojo/e2e/playwright-report/**/*
106
179
retention-days : 7
0 commit comments