@@ -202,11 +202,81 @@ jobs:
202202 echo "ℹ️ Build and tests temporarily disabled due to CI Rollup dependency issue"
203203 echo "ℹ️ Full functionality tested locally and works correctly"
204204
205+ # PR validation with critical E2E tests
206+ pr-validation :
207+ name : PR Critical Tests
208+ runs-on : ubuntu-latest
209+ needs : [lint-and-typecheck, test-core, test-server, test-web]
210+ services :
211+ neo4j :
212+ image : neo4j:5.15-community
213+ env :
214+ NEO4J_AUTH : neo4j/graphdone_password
215+ NEO4J_PLUGINS : ' ["graph-data-science", "apoc"]'
216+ NEO4J_dbms_security_procedures_unrestricted : " gds.*,apoc.*"
217+ NEO4J_dbms_security_procedures_allowlist : " gds.*,apoc.*"
218+ options : >-
219+ --health-cmd "cypher-shell -u neo4j -p graphdone_password 'RETURN 1'"
220+ --health-interval 10s
221+ --health-timeout 5s
222+ --health-retries 10
223+ ports :
224+ - 7474:7474
225+ - 7687:7687
226+ steps :
227+ - name : Checkout code
228+ uses : actions/checkout@v4
229+
230+ - name : Setup Node.js
231+ uses : actions/setup-node@v4
232+ with :
233+ node-version : ${{ env.NODE_VERSION }}
234+ cache : ' npm'
235+
236+ - name : Install dependencies
237+ run : npm ci --legacy-peer-deps
238+
239+ - name : Install Playwright browsers
240+ run : npx playwright install --with-deps chromium
241+
242+ - name : Generate development certificates
243+ run : ./scripts/generate-dev-certs.sh
244+
245+ - name : Start GraphDone services
246+ run : |
247+ npm run docker:prod &
248+ sleep 30
249+ echo "Waiting for services to be healthy..."
250+ timeout 90 bash -c 'until curl -k https://localhost:4128/health 2>/dev/null; do sleep 2; done'
251+
252+ - name : Run PR critical tests
253+ run : npm run test:pr
254+ env :
255+ TEST_URL : https://localhost:3128
256+ TEST_ENV : production
257+ CI : true
258+
259+ - name : Upload test results
260+ if : always()
261+ uses : actions/upload-artifact@v4
262+ with :
263+ name : pr-test-results-${{ github.sha }}
264+ path : test-results/
265+ retention-days : 7
266+
267+ - name : Upload test report
268+ if : always()
269+ uses : actions/upload-artifact@v4
270+ with :
271+ name : pr-test-report-${{ github.sha }}
272+ path : test-results/reports/pr-report.html
273+ retention-days : 7
274+
205275 # Build job - validation only (skip actual build due to Rollup CI issue)
206276 build :
207277 name : Deployment Validation
208278 runs-on : ubuntu-latest
209- needs : [lint-and-typecheck, security-scan, test-core, test-server, test-web, test-mcp-server]
279+ needs : [lint-and-typecheck, security-scan, test-core, test-server, test-web, test-mcp-server, pr-validation ]
210280 if : github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop'
211281 steps :
212282 - name : Checkout code
@@ -266,31 +336,33 @@ jobs:
266336 ci-success :
267337 name : CI Success
268338 runs-on : ubuntu-latest
269- needs : [lint-and-typecheck, security-scan, test-core, test-server, test-web, test-mcp-server]
339+ needs : [lint-and-typecheck, security-scan, test-core, test-server, test-web, test-mcp-server, pr-validation ]
270340 if : always()
271341 steps :
272342 - name : Check overall status
273343 run : |
274- # Check if all required jobs passed
275344 LINT_STATUS="${{ needs.lint-and-typecheck.result }}"
276345 SECURITY_STATUS="${{ needs.security-scan.result }}"
277346 CORE_STATUS="${{ needs.test-core.result }}"
278347 SERVER_STATUS="${{ needs.test-server.result }}"
279348 WEB_STATUS="${{ needs.test-web.result }}"
280349 MCP_STATUS="${{ needs.test-mcp-server.result }}"
281-
350+ PR_VALIDATION_STATUS="${{ needs.pr-validation.result }}"
351+
282352 echo "📊 CI Pipeline Results:"
283353 echo "- Lint & TypeCheck: $LINT_STATUS"
284- echo "- Security Scan: $SECURITY_STATUS"
354+ echo "- Security Scan: $SECURITY_STATUS"
285355 echo "- Core Tests: $CORE_STATUS"
286356 echo "- Server Tests: $SERVER_STATUS"
287357 echo "- Web Build: $WEB_STATUS"
288358 echo "- MCP Tests: $MCP_STATUS"
289-
290- if [[ ("$LINT_STATUS" == "success" || "$LINT_STATUS" == "failure") && "$CORE_STATUS" == "success" &&
291- "$SERVER_STATUS" == "success" && "$WEB_STATUS" == "success" &&
292- "$MCP_STATUS" == "success" ]]; then
359+ echo "- PR Validation (E2E): $PR_VALIDATION_STATUS"
360+
361+ if [[ ("$LINT_STATUS" == "success" || "$LINT_STATUS" == "failure") && "$CORE_STATUS" == "success" &&
362+ "$SERVER_STATUS" == "success" && "$WEB_STATUS" == "success" &&
363+ "$MCP_STATUS" == "success" && "$PR_VALIDATION_STATUS" == "success" ]]; then
293364 echo "✅ All essential CI jobs completed successfully!"
365+ echo "✅ PR validation tests passed - critical functionality verified"
294366 echo "Note: Lint warnings and security scan failures don't block CI"
295367 else
296368 echo "❌ CI pipeline failed - check individual job results above"
0 commit comments