CI: run all system-tests scenarios on PRs#5783
Conversation
🎉 All green!🧪 All tests passed 🎯 Code Coverage (details) 🔗 Commit SHA: 353c536 | Docs | Datadog PR Page | Give us feedback! |
cc408fd to
0839782
Compare
Set `skip_empty_scenarios: false` unconditionally instead of only on push-to-master / schedule events. PRs now exercise every scenario, so auxiliary checks (e.g. `Test_DdtraceSchemas::test_library`) catch schema regressions before merge. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Address review comment from @cbeauchesne: the called workflow's input has default: false, so the explicit value is unnecessary. Verified against DataDog/system-tests workflow at the pinned ref (7711306e344b3cfb843eae940774d2334c434e86): the skip_empty_scenarios input is declared with default: false. Behavior is unchanged. - Removed in .github/workflows/system-tests.yml:90 Verified yamllint --strict passes. actionlint not available locally.
0839782 to
353c536
Compare
BenchmarksBenchmark execution time: 2026-05-27 21:29:46 Comparing candidate commit 353c536 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 45 metrics, 1 unstable metrics.
|
What does this PR do?
Set
skip_empty_scenarios: falseunconditionally in.github/workflows/system-tests.ymlso PRs exercise every System Tests scenario, not onlypush-to-master/scheduleevents.Motivation:
Today, line 90 toggles
skip_empty_scenariostotruefor PRs as a CI-cost optimization. When every test in a scenario is markedmissing_feature(orbug/skip/xfail) and only an@auxiliary_testsuch astests/schemas/test_schemas.py::Test_DdtraceSchemas::test_librarywould remain, system-tests'conftest.pyempties the item list (items[:] = [],conftest.py:365-367) and the scenario boot is short-circuited entirely. The schema validation never runs on PRs.The result: latent payload-schema bugs land on master undetected. Recent example — PR #5717 merged green; the same code immediately failed the
DEBUGGER_SYMDBschema check on master with'type' is a required property on instance ... symbols[N]. Fixed in PR #5775. Investigation: confirmed with @charles (devX) that this exact PR/push divergence is the cause.Removing the optimization closes that hole at moderate CI cost.
Cost — measured on PR #5717's diff
Compared the System Tests workflow runs at the same commit content: PR run
26038527628(skip_empty_scenarios: true) vs. master run26044854192(skip_empty_scenarios: false).Headline
Where the cost lives —
End-to-end #2batchThe
#2batch carries theDEBUGGER_SYMDBscenario (per #6962 verification). Same containers, same code, 4–5× longer when the scenario isn't suppressed:End-to-end #2 / rack 2End-to-end #2 / rails42 2End-to-end #2 / rails52 2End-to-end #2 / rails61 2End-to-end #2 / rails72 2End-to-end #2 / rails80 2End-to-end #2 / sinatra14 2End-to-end #2 / sinatra22 2End-to-end #2 / sinatra32 2End-to-end #2 / sinatra41 2End-to-end #2 / uds-rails 2End-to-end #2 / uds-sinatra 2The remaining ~100 min of delta is spread across batches
#3,#6,#7,#9,#12,#14— every batch that contained a previously-suppressed scenario on the PR side.The actually-failing jobs ran in essentially the same wall time
Schema check selection added one test per job, costing seconds, not minutes:
End-to-end #10 / uds-rails 10End-to-end #19 / rails72 19End-to-end #15 / rails80 15Bottom line
Change log entry
None.
Additional Notes:
missing_featuretest inmanifests/ruby.yml. That works case-by-case but reopens the same trap for every future scenario whose only fired-in-runtime artifact is upload payloads (e.g., the next debugger/AppSec/RUM upload). This PR closes the trap by default.How to test the change?
skip_empty_scenarios-driven deselection). Watch wall-clock and the schema-check phase.