docs/local-cre/system-tests/running-tests.md
This page covers local, Kubernetes, and CI-facing execution concerns for the CRE smoke suite.
The usual local path is:
cd core/scripts/cre/environment
go run . env setup
go run . env start
Then run the tests:
go test ./system-tests/tests/smoke/cre -timeout 20m -run '^Test_CRE_'
The comments in cre_suite_test.go also call out the pattern of starting Local CRE first and then running the smoke package.
Do not enable --with-beholder for the default smoke-test flow. Most CRE smoke tests start the ChIP test sink on the default gRPC port (50051), and Beholder starts Chip Ingress on that same port. If both try to use the default port, the test sink startup fails.
Enable Beholder only when:
--grpc-port so the smoke-test sink can still bind its default portThe main variables used by the smoke suite are:
CTF_CONFIGS points to the topology TOML before startup and to the generated Local CRE state file after startup. The helpers in system-tests/tests/test-helpers/before_suite.go switch to the state file automatically for local runs.TOPOLOGY_NAME is used in test names, bucket labels, and log output so results stay tied to the topology under test.CTF_LOG_LEVEL=debug enables more verbose framework logs during setup and test execution.CTF_JD_IMAGE pins the Job Distributor image when you do not want the default local image selection.CTF_CHAINLINK_IMAGE pins the Chainlink node image. system-tests/lib/cre/environment/dons.go checks this variable directly when selecting node images.Parallel test execution is opt-in. Set:
CRE_TEST_PARALLEL_ENABLED=1
The smoke suite does not blindly parallelize every case. The runner in cre_suite_test.go enables t.Parallel() only for scenarios that are safe to run together.
For the default local flow, use:
core/scripts/cre/environment/configs/workflow-gateway-capabilities-don.toml
Override CTF_CONFIGS only when you intentionally need a different topology such as sharded, gateway-only, or chain-specific coverage.
Practical timeout guidance:
For local debugging, a useful pattern is:
CTF_LOG_LEVEL=debug \
go test ./system-tests/tests/smoke/cre -timeout 20m -run '^Test_CRE_V2_Suite_Bucket_A$'
That keeps the run narrow while preserving the topology and workflow setup used by the full suite.
Example VS Code launch configuration:
{
"name": "Launch CRE V2 Bucket A",
"type": "go",
"request": "launch",
"mode": "test",
"program": "${workspaceFolder}/system-tests/tests/smoke/cre",
"args": ["-test.run", "^Test_CRE_V2_Suite_Bucket_A$"]
}
The larger CRE smoke suites are split into runtime-balanced buckets instead of one oversized test entrypoint.
The old V2 suite is split into:
Test_CRE_V2_Suite_Bucket_ATest_CRE_V2_Suite_Bucket_BTest_CRE_V2_Suite_Bucket_CThose buckets are defined in system-tests/tests/smoke/cre/v2suite/config/bucketing.go:
suite-bucket-a: ProofOfReserve, HTTPTriggerAction, DONTime, Consensussuite-bucket-b: VaultDONsuite-bucket-c: CronBeholder, HTTPActionCRUDThe EVM read suite uses a separate bucket registry in system-tests/tests/smoke/cre/evm/evmread/config/bucketing.go:
Test_CRE_V2_EVM_Read_HeavyCallsTest_CRE_V2_EVM_Read_StateQueriesTest_CRE_V2_EVM_Read_TxArtifactsUse bucketed entrypoints when you want:
If a test run fails before test logic starts:
CTF_CONFIGSgo run . env setup