@@ -38,8 +38,36 @@ export CONDUCTOR_AUTH_SECRET="your-secret"
3838
3939## Running Tests
4040
41+ ### Run the CI suite locally (recommended)
42+
43+ Use the helper script to run exactly what CI runs (the ` integration-test ` job in
44+ [ ` .github/workflows/pull_request.yml ` ] ( ../../.github/workflows/pull_request.yml ) ).
45+ It excludes the AI/agentic tests (which need a dedicated AI-enabled server) and
46+ the slow performance test, so you don't have to remember the ` --ignore ` flags:
47+
48+ ``` bash
49+ export CONDUCTOR_SERVER_URL=" http://localhost:8080/api"
50+ # For Orkes / authenticated servers also set:
51+ # export CONDUCTOR_AUTH_KEY="your-key"
52+ # export CONDUCTOR_AUTH_SECRET="your-secret"
53+
54+ ./scripts/run_integration_tests.sh
55+
56+ # Also run the performance test (test_update_task_v2_perf.py, ~1000 workflows,
57+ # several minutes):
58+ ./scripts/run_integration_tests.sh --with-perf
59+ ```
60+
61+ Any extra arguments pass straight through to pytest, which is handy for
62+ targeting a subset of tests or getting more detail on failures. See additional
63+ options and examples in the comments at the top of
64+ [ ` scripts/run_integration_tests.sh ` ] ( ../../scripts/run_integration_tests.sh ) .
65+
4166### Run All Integration Tests
4267
68+ This includes the AI/agentic tests, which require an AI-enabled server (see
69+ [ Tests excluded by default] ( #tests-excluded-by-default ) below):
70+
4371``` bash
4472python3 -m pytest tests/integration/ -v -s
4573```
@@ -442,46 +470,42 @@ To add more test scenarios:
442470
443471---
444472
445- ## CI/CD Integration
473+ ## Tests excluded by default
446474
447- ### GitHub Actions Example
475+ ` scripts/run_integration_tests.sh ` (and CI) skip a few tests by default.
448476
449- ``` yaml
450- name : Integration Tests
477+ ** AI/agentic tests** need a dedicated AI-enabled server:
451478
452- on : [push, pull_request]
479+ - ` test_ai_task_types.py ` and ` test_ai_examples.py ` hardcode
480+ ` http://localhost:7001/api ` .
481+ - ` test_agentic_workflows.py ` needs an ` openai ` LLM provider (model
482+ ` gpt-4o-mini ` ) configured on the server.
453483
454- jobs :
455- integration :
456- runs-on : ubuntu-latest
484+ Run them only against a suitably configured AI-enabled server, e.g.:
457485
458- services :
459- conductor :
460- image : conductoross/conductor-standalone:3.15.0
461- ports :
462- - 8080:8080
463- - 5000:5000
486+ ``` bash
487+ python3 -m pytest tests/integration/test_ai_task_types.py -v -s
488+ ```
464489
465- steps :
466- - uses : actions/checkout@v2
490+ ** Performance test ** ( ` test_update_task_v2_perf.py ` ) submits ~ 1000 workflows and
491+ takes several minutes. Include it with the ` --with-perf ` flag:
467492
468- - name : Set up Python
469- uses : actions/setup-python@v2
470- with :
471- python-version : ' 3.9'
493+ ``` bash
494+ ./scripts/run_integration_tests.sh --with-perf
495+ ```
472496
473- - name : Install dependencies
474- run : pip install -e .
497+ ---
498+
499+ ## CI/CD Integration
475500
476- - name : Wait for Conductor
477- run : |
478- timeout 60 bash -c 'until curl -f http://localhost:8080/api/health; do sleep 2; done'
501+ Integration tests run in CI via the ` integration-test ` job in
502+ [ ` .github/workflows/pull_request.yml ` ] ( ../../.github/workflows/pull_request.yml )
503+ on pushes to ` main ` , PRs targeting ` main ` , and manual dispatch. The job invokes
504+ ` scripts/run_integration_tests.sh ` (excluding the AI tests and the performance
505+ test) and reads the server from the ` SDKDEV_V5_* ` repository variables/secret.
479506
480- - name : Run integration tests
481- env :
482- CONDUCTOR_SERVER_URL : http://localhost:8080/api
483- run : python3 -m pytest tests/integration/ -v -s
484- ` ` `
507+ To reproduce the CI run locally, use the script documented in
508+ [ Running Tests] ( #running-tests ) above.
485509
486510---
487511
0 commit comments