@@ -3,52 +3,66 @@ name: e2e
33on :
44 push :
55 branches : [main]
6+ paths :
7+ - " integrations/**"
8+ - " apps/**"
9+ - " middlewares/**"
10+ - " pnpm-lock.yaml"
11+ - " pnpm-workspace.yaml"
12+ - " .github/workflows/dojo-e2e.yml"
613 pull_request :
714 branches : [main]
15+ paths :
16+ - " integrations/**"
17+ - " apps/**"
18+ - " middlewares/**"
19+ - " pnpm-lock.yaml"
20+ - " pnpm-workspace.yaml"
21+ - " .github/workflows/dojo-e2e.yml"
822
923jobs :
10- e2e :
11- name : ${{ matrix.suite }}
24+ dojo :
25+ name : dojo / ${{ matrix.suite }}
1226 runs-on : depot-ubuntu-24.04
1327 strategy :
1428 fail-fast : false
1529 matrix :
1630 include :
1731 - suite : a2a-middleware
1832 test_path : tests/a2aMiddlewareTests
19- services : ["dojo","a2a-middleware"]
33+ services : ["dojo", "a2a-middleware"]
2034 wait_on : http://localhost:9999,tcp:localhost:8011,tcp:localhost:8012,tcp:localhost:8013,tcp:localhost:8014
2135 - suite : adk-middleware
2236 test_path : tests/adkMiddlewareTests
23- services : ["dojo","adk-middleware"]
37+ services : ["dojo", "adk-middleware"]
2438 wait_on : http://localhost:9999,tcp:localhost:8010
2539 - suite : agno
2640 test_path : tests/agnoTests
27- services : ["dojo","agno"]
41+ services : ["dojo", "agno"]
2842 wait_on : http://localhost:9999,tcp:localhost:8002
2943 - suite : crew-ai
3044 test_path : tests/crewAITests
31- services : ["dojo","crew-ai"]
45+ services : ["dojo", "crew-ai"]
3246 wait_on : http://localhost:9999,tcp:localhost:8003
3347 - suite : langgraph-python
3448 test_path : tests/langgraphPythonTests
35- services : ["dojo","langgraph-platform-python"]
49+ services : ["dojo", "langgraph-platform-python"]
3650 wait_on : http://localhost:9999,tcp:localhost:8005
3751 - suite : langgraph-typescript
3852 test_path : tests/langgraphTypescriptTests
39- services : ["dojo","langgraph-platform-typescript"]
53+ services : ["dojo", "langgraph-platform-typescript"]
4054 wait_on : http://localhost:9999,tcp:localhost:8006
4155 - suite : langgraph-fastapi
4256 test_path : tests/langgraphFastAPITests
43- services : ["dojo","langgraph-fastapi"]
57+ services : ["dojo", "langgraph-fastapi"]
4458 wait_on : http://localhost:9999,tcp:localhost:8004
4559 - suite : llama-index
4660 test_path : tests/llamaIndexTests
47- services : ["dojo","llama-index"]
61+ services : ["dojo", "llama-index"]
4862 wait_on : http://localhost:9999,tcp:localhost:8007
4963 - suite : mastra
5064 test_path : tests/mastraTests
51- services : ["dojo","mastra"]
65+ services : ["dojo", "mastra"]
5266 wait_on : http://localhost:9999,tcp:localhost:8008
5367 - suite : mastra-agent-local
5468 test_path : tests/mastraAgentLocalTests
@@ -60,125 +74,125 @@ jobs:
6074 wait_on : http://localhost:9999
6175 - suite : pydantic-ai
6276 test_path : tests/pydanticAITests
63- services : ["dojo","pydantic-ai"]
77+ services : ["dojo", "pydantic-ai"]
6478 wait_on : http://localhost:9999,tcp:localhost:8009
6579 - suite : server-starter
6680 test_path : tests/serverStarterTests
67- services : ["dojo","server-starter"]
81+ services : ["dojo", "server-starter"]
6882 wait_on : http://localhost:9999,tcp:localhost:8000
6983 - suite : server-starter-all
7084 test_path : tests/serverStarterAllFeaturesTests
71- services : ["dojo","server-starter-all"]
85+ services : ["dojo", "server-starter-all"]
7286 wait_on : http://localhost:9999,tcp:localhost:8001
7387 # - suite: vercel-ai-sdk
7488 # test_path: tests/vercelAISdkTests
7589 # services: ["dojo"]
7690 # wait_on: http://localhost:9999
7791
7892 steps :
79- - name : Checkout code
80- uses : actions/checkout@v4
81-
82- - name : Set up Node.js
83- uses : actions/setup-node@v4
84- with :
85- node-version : ' 22'
86-
87- - name : Install pnpm
88- uses : pnpm/action-setup@v4
89- with :
90- version : 10.13.1
91-
92- # Now that pnpm is available, cache its store to speed installs
93- - name : Resolve pnpm store path
94- id : pnpm-store
95- run : echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
96-
97- - name : Cache pnpm store
98- uses : actions/cache@v4
99- with :
100- path : ${{ env.STORE_PATH }}
101- key : ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
102- restore-keys : |
103- ${{ runner.os }}-pnpm-store-
104-
105- # Cache Python tool caches and virtualenvs; restore only to avoid long saves
106- - name : Cache Python dependencies (restore-only)
107- id : cache-python
108- uses : actions/cache/restore@v4
109- with :
110- path : |
111- ~/.cache/pip
112- ~/.cache/pypoetry
113- ~/.cache/uv
114- **/.venv
115- key : ${{ runner.os }}-pydeps-${{ hashFiles('**/poetry.lock', '**/pyproject.toml') }}
116- restore-keys : |
117- ${{ runner.os }}-pydeps-
118-
119- - name : Install Poetry
120- uses : snok/install-poetry@v1
121- with :
122- version : latest
123- virtualenvs-create : true
124- virtualenvs-in-project : true
125-
126- - name : Install uv
127- uses : astral-sh/setup-uv@v6
128-
129- - name : Install dependencies
130- run : pnpm install --frozen-lockfile
131-
132- - name : Prepare dojo for e2e
133- working-directory : apps/dojo
134- if : ${{ join(matrix.services, ',') != '' }}
135- run : node ./scripts/prep-dojo-everything.js --only ${{ join(matrix.services, ',') }}
136-
137- - name : Install e2e dependencies
138- working-directory : apps/dojo/e2e
139- run : |
140- pnpm install
141-
142- - name : write langgraph env files
143- working-directory : integrations/langgraph
144- env :
145- OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
146- LANGSMITH_API_KEY : ${{ secrets.LANGSMITH_API_KEY }}
147- if : ${{ contains(join(matrix.services, ','), 'langgraph-fastapi') || contains(join(matrix.services, ','), 'langgraph-platform-python') || contains(join(matrix.services, ','), 'langgraph-platform-typescript') }}
148- run : |
149- echo "OPENAI_API_KEY=${OPENAI_API_KEY}" > python/examples/.env
150- echo "LANGSMITH_API_KEY=${LANGSMITH_API_KEY}" >> python/examples/.env
151- echo "OPENAI_API_KEY=${OPENAI_API_KEY}" > typescript/examples/.env
152- echo "LANGSMITH_API_KEY=${LANGSMITH_API_KEY}" >> typescript/examples/.env
153-
154- - name : Run dojo+agents
155- uses : JarvusInnovations/background-action@v1
156- env :
157- OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
158- LANGSMITH_API_KEY : ${{ secrets.LANGSMITH_API_KEY }}
159- GOOGLE_API_KEY : ${{ secrets.GOOGLE_API_KEY }}
160- if : ${{ join(matrix.services, ',') != '' && contains(join(matrix.services, ','), 'dojo') }}
161- with :
93+ - name : Checkout code
94+ uses : actions/checkout@v4
95+
96+ - name : Set up Node.js
97+ uses : actions/setup-node@v4
98+ with :
99+ node-version : " 22"
100+
101+ - name : Install pnpm
102+ uses : pnpm/action-setup@v4
103+ with :
104+ version : 10.13.1
105+
106+ # Now that pnpm is available, cache its store to speed installs
107+ - name : Resolve pnpm store path
108+ id : pnpm-store
109+ run : echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
110+
111+ - name : Cache pnpm store
112+ uses : actions/cache@v4
113+ with :
114+ path : ${{ env.STORE_PATH }}
115+ key : ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
116+ restore-keys : |
117+ ${{ runner.os }}-pnpm-store-
118+
119+ # Cache Python tool caches and virtualenvs; restore only to avoid long saves
120+ - name : Cache Python dependencies (restore-only)
121+ id : cache-python
122+ uses : actions/cache/restore@v4
123+ with :
124+ path : |
125+ ~/.cache/pip
126+ ~/.cache/pypoetry
127+ ~/.cache/uv
128+ **/.venv
129+ key : ${{ runner.os }}-pydeps-${{ hashFiles('**/poetry.lock', '**/pyproject.toml') }}
130+ restore-keys : |
131+ ${{ runner.os }}-pydeps-
132+
133+ - name : Install Poetry
134+ uses : snok/install-poetry@v1
135+ with :
136+ version : latest
137+ virtualenvs-create : true
138+ virtualenvs-in-project : true
139+
140+ - name : Install uv
141+ uses : astral-sh/setup-uv@v6
142+
143+ - name : Install dependencies
144+ run : pnpm install --frozen-lockfile
145+
146+ - name : Prepare dojo for e2e
147+ working-directory : apps/dojo
148+ if : ${{ join(matrix.services, ',') != '' }}
149+ run : node ./scripts/prep-dojo-everything.js --only ${{ join(matrix.services, ',') }}
150+
151+ - name : Install e2e dependencies
152+ working-directory : apps/dojo/e2e
153+ run : |
154+ pnpm install
155+
156+ - name : write langgraph env files
157+ working-directory : integrations/langgraph
158+ env :
159+ OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
160+ LANGSMITH_API_KEY : ${{ secrets.LANGSMITH_API_KEY }}
161+ if : ${{ contains(join(matrix.services, ','), 'langgraph-fastapi') || contains(join(matrix.services, ','), 'langgraph-platform-python') || contains(join(matrix.services, ','), 'langgraph-platform-typescript') }}
162162 run : |
163- node ../scripts/run-dojo-everything.js --only ${{ join(matrix.services, ',') }}
163+ echo "OPENAI_API_KEY=${OPENAI_API_KEY}" > python/examples/.env
164+ echo "LANGSMITH_API_KEY=${LANGSMITH_API_KEY}" >> python/examples/.env
165+ echo "OPENAI_API_KEY=${OPENAI_API_KEY}" > typescript/examples/.env
166+ echo "LANGSMITH_API_KEY=${LANGSMITH_API_KEY}" >> typescript/examples/.env
167+
168+ - name : Run dojo+agents
169+ uses : JarvusInnovations/background-action@v1
170+ env :
171+ OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
172+ LANGSMITH_API_KEY : ${{ secrets.LANGSMITH_API_KEY }}
173+ GOOGLE_API_KEY : ${{ secrets.GOOGLE_API_KEY }}
174+ if : ${{ join(matrix.services, ',') != '' && contains(join(matrix.services, ','), 'dojo') }}
175+ with :
176+ run : |
177+ node ../scripts/run-dojo-everything.js --only ${{ join(matrix.services, ',') }}
178+ working-directory : apps/dojo/e2e
179+ wait-on : ${{ matrix.wait_on }}
180+ wait-for : 300000
181+
182+ - name : Run tests – ${{ matrix.suite }}
164183 working-directory : apps/dojo/e2e
165- wait-on : ${{ matrix.wait_on }}
166- wait-for : 300000
167-
168- - name : Run tests – ${{ matrix.suite }}
169- working-directory : apps/dojo/e2e
170- env :
171- BASE_URL : http://localhost:9999
172- PLAYWRIGHT_SUITE : ${{ matrix.suite }}
173- run : |
174- pnpm test -- ${{ matrix.test_path }}
175-
176- - name : Upload traces – ${{ matrix.suite }}
177- if : always() # Uploads artifacts even if tests fail
178- uses : actions/upload-artifact@v4
179- with :
180- name : ${{ matrix.suite }}-playwright-traces
181- path : |
182- apps/dojo/e2e/test-results/${{ matrix.suite }}/**/*
183- apps/dojo/e2e/playwright-report/**/*
184- retention-days : 7
184+ env :
185+ BASE_URL : http://localhost:9999
186+ PLAYWRIGHT_SUITE : ${{ matrix.suite }}
187+ run : |
188+ pnpm test -- ${{ matrix.test_path }}
189+
190+ - name : Upload traces – ${{ matrix.suite }}
191+ if : always() # Uploads artifacts even if tests fail
192+ uses : actions/upload-artifact@v4
193+ with :
194+ name : ${{ matrix.suite }}-playwright-traces
195+ path : |
196+ apps/dojo/e2e/test-results/${{ matrix.suite }}/**/*
197+ apps/dojo/e2e/playwright-report/**/*
198+ retention-days : 7
0 commit comments