Skip to content

ci(verify-tests): flag specs no CI invocation reaches#8543

Merged
BridgeAR merged 5 commits into
masterfrom
BridgeAR/2026-05-19-verify-exercised-tests-joint
May 21, 2026
Merged

ci(verify-tests): flag specs no CI invocation reaches#8543
BridgeAR merged 5 commits into
masterfrom
BridgeAR/2026-05-19-verify-exercised-tests-joint

Conversation

@BridgeAR

@BridgeAR BridgeAR commented May 19, 2026

Copy link
Copy Markdown
Member

Summary

Adds a joint-condition check to scripts/verify-exercised-tests.js: every spec file must be matched by some package.json script glob and reached by at least one workflow invocation that expands the glob with the right env. The existing check only enforced the first half.

Two prerequisites land alongside the joint check so it produces truthful results:

  • normalizeScriptGlob no longer collapses @(${PLUGINS}) to * in preserveEnv mode, so a single-plugin CI job no longer looks like it exercises every spec in the same directory.
  • collectWorkflowRuns unwraps nick-fields/retry@*'s command: input like an inline run:, so instrumentation-http's retry-wrapped test:instrumentations:ci invocation is visible.

The check would have caught the silent CI gap that motivated PR #8516: packages/datadog-instrumentations/test/fastify.spec.js matched test:instrumentations' glob, but no workflow set PLUGINS=fastify for test:instrumentations:ci, so codecov reported 8 new lines as patch misses despite the spec covering them locally.

CI gaps closed in this PR

Running the verifier with the new check on master surfaced 14 pre-existing orphans. All are addressed by the follow-up commits:

Spec Workflow Job added
packages/datadog-instrumentations/test/ai.spec.js instrumentation.yml instrumentation-ai
packages/datadog-instrumentations/test/aws-sdk.spec.js instrumentation.yml instrumentation-aws-sdk
packages/datadog-instrumentations/test/couchbase.spec.js instrumentation.yml instrumentation-couchbase
packages/datadog-instrumentations/test/crypto.spec.js instrumentation.yml instrumentation-crypto
packages/datadog-instrumentations/test/express-multi-version.spec.js instrumentation.yml instrumentation-express-multi-version
packages/datadog-instrumentations/test/fetch.spec.js instrumentation.yml instrumentation-fetch
packages/datadog-instrumentations/test/hono.spec.js instrumentation.yml instrumentation-hono
packages/datadog-instrumentations/test/http-client-options.spec.js instrumentation.yml instrumentation-http-client-options
packages/datadog-instrumentations/test/otel-sdk-trace.spec.js instrumentation.yml instrumentation-otel-sdk-trace
packages/datadog-instrumentations/test/stripe.spec.js instrumentation.yml instrumentation-stripe
packages/datadog-instrumentations/test/zlib.spec.js instrumentation.yml instrumentation-zlib
packages/datadog-plugin-axios/test/integration-test/client.spec.js apm-integrations.yml axios: (added plugins/integration-test step)
packages/datadog-plugin-body-parser/test/integration-test/client.spec.js apm-integrations.yml body-parser: (added plugins/integration-test step)
packages/datadog-plugin-jest/test/util.spec.js test-optimization.yml jest:

fastify.spec.js is intentionally absent from the list — PR #8516 closes it.

Test plan

  • node scripts/verify-exercised-tests.js on this branch: zero errors.
  • Cherry-picked the unit spec from perf(fastify): fast-path addHook wrapper when no parser channels have… #8516 into the same worktree without its instrumentation-fastify workflow entry: verifier flagged it as expected; with the entry, it passed. Confirms the joint check is functional.
  • npm run verify:workflow-job-names clean.
  • eslint scripts/verify-exercised-tests.js clean.
  • CI run on this PR exercises each newly added job and confirms the specs pass under the same harness they were designed for.

The existing "spec is matched by some script glob" check passes whenever
a `package.json` test script could in principle run a spec. It misses
the inverse failure: a glob exists but no workflow ever sets the env
(typically `PLUGINS=<name>`) that would expand the glob to reach the
spec. That is how PR #8516's
`packages/datadog-instrumentations/test/fastify.spec.js` slipped through
with no CI invocation running it, and why codecov reported 8 new lines
as patch misses despite the spec covering them locally.

Two prerequisites ride along so the joint check produces truthful
results:

1. `normalizeScriptGlob` collapsed every `@(${PLUGINS})` to `*` even in
   `preserveEnv` mode, so a single-plugin job (e.g. `PLUGINS=bluebird`)
   looked like it exercised every spec in the same directory. Unwrap
   the extglob to `${PLUGINS}` before the env-aware expansion runs.

2. `instrumentation-http` wraps `yarn test:instrumentations:ci` in
   `nick-fields/retry@*`'s `command:` input. Treat that input like an
   inline `run:` so the verifier sees the underlying invocation.

On `master` the new check surfaces 14 pre-existing orphans
(instrumentation specs with no matching `PLUGINS=` job, plus two plugin
integration-test specs and `datadog-plugin-jest/test/util.spec.js`);
closing each is out of scope and tracked in follow-up PRs.
@dd-octo-sts

dd-octo-sts Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor

Overall package size

Self size: 5.84 MB
Deduped: 6.88 MB
No deduping: 6.88 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | import-in-the-middle | 3.0.1 | 82.56 kB | 817.39 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | dc-polyfill | 0.1.11 | 25.74 kB | 25.74 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@datadog-official

datadog-official Bot commented May 19, 2026

Copy link
Copy Markdown

Pipelines  Tests

Fix all issues with BitsAI

⚠️ Warnings

🚦 6 Pipeline jobs failed

DataDog/apm-reliability/dd-trace-js | Ubuntu_20_amd64.SI94: [test-app-nodejs-alpine]   View in Datadog   GitLab

🔧 Fix in code (Fix with Cursor). 1 failed test. AssertionError: _container_tags_validator failed to validate trace_id: 49948763818278608 in tests/auto_inject/test_auto_inject_install.py:255.

DataDog/apm-reliability/dd-trace-js | Ubuntu_20_amd64.SI94: [test-app-nodejs-container]   View in Datadog   GitLab

🔧 Fix in code (Fix with Cursor). AssertionError: _container_tags_validator failed to validate trace_id: 31175565343748557 in tests/auto_inject/utils.py:79

DataDog/apm-reliability/dd-trace-js | Ubuntu_23_10_arm64.SI94: [test-app-nodejs-alpine]   View in Datadog   GitLab

🔧 Fix in code (Fix with Cursor). 1 failed test: AssertionError: _container_tags_validator failed to validate trace_id: 3547998018739105 in tests/auto_inject/test_auto_inject_install.py:255

View all 6 failed jobs.

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

🎯 Code Coverage (details)
Patch Coverage: 100.00%
Overall Coverage: 86.65% (+0.16%)

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 988e26e | Docs | Datadog PR Page | Give us feedback!

@codecov

codecov Bot commented May 19, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.87%. Comparing base (178fc6b) to head (988e26e).
⚠️ Report is 29 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #8543      +/-   ##
==========================================
+ Coverage   88.95%   89.87%   +0.92%     
==========================================
  Files         844      844              
  Lines       45707    45733      +26     
  Branches     8526     8529       +3     
==========================================
+ Hits        40657    41101     +444     
+ Misses       5050     4632     -418     
Flag Coverage Δ
aiguard-integration-active 41.25% <ø> (ø)
aiguard-integration-latest 41.20% <ø> (ø)
aiguard-integration-maintenance 41.25% <ø> (ø)
aiguard-macos 34.99% <ø> (-0.09%) ⬇️
aiguard-ubuntu 35.09% <ø> (-0.09%) ⬇️
aiguard-windows 34.85% <ø> (-0.09%) ⬇️
apm-capabilities-tracing-macos 49.06% <ø> (+0.01%) ⬆️
apm-capabilities-tracing-ubuntu-active 49.09% <ø> (+0.01%) ⬆️
apm-capabilities-tracing-ubuntu-latest 49.06% <ø> (+0.01%) ⬆️
apm-capabilities-tracing-ubuntu-maintenance 49.26% <ø> (+<0.01%) ⬆️
apm-capabilities-tracing-ubuntu-oldest 49.25% <ø> (+0.19%) ⬆️
apm-capabilities-tracing-windows 48.85% <ø> (-0.01%) ⬇️
apm-integrations-aerospike-18-gte.5.2.0 34.43% <ø> (-0.09%) ⬇️
apm-integrations-aerospike-20-gte.5.5.0 34.45% <ø> (-0.09%) ⬇️
apm-integrations-aerospike-22-gte.5.12.1 34.45% <ø> (-0.09%) ⬇️
apm-integrations-aerospike-22-gte.6.0.0 34.45% <ø> (-0.09%) ⬇️
apm-integrations-aerospike-eol- 34.36% <ø> (-0.09%) ⬇️
apm-integrations-child-process 35.50% <ø> (-0.09%) ⬇️
apm-integrations-confluentinc-kafka-javascript-18 41.31% <ø> (-0.09%) ⬇️
apm-integrations-confluentinc-kafka-javascript-20 41.33% <ø> (-0.09%) ⬇️
apm-integrations-confluentinc-kafka-javascript-22 41.33% <ø> (-0.09%) ⬇️
apm-integrations-confluentinc-kafka-javascript-24 41.26% <ø> (-0.09%) ⬇️
apm-integrations-couchbase-18 34.61% <ø> (+0.04%) ⬆️
apm-integrations-couchbase-eol 34.50% <ø> (-0.09%) ⬇️
apm-integrations-dns 34.28% <ø> (-0.09%) ⬇️
apm-integrations-elasticsearch 35.22% <ø> (-0.11%) ⬇️
apm-integrations-http-latest 42.18% <ø> (-0.08%) ⬇️
apm-integrations-http-maintenance 42.24% <ø> (-0.08%) ⬇️
apm-integrations-http-oldest 42.24% <ø> (-0.08%) ⬇️
apm-integrations-http2 39.49% <ø> (-0.09%) ⬇️
apm-integrations-kafkajs-latest 41.13% <ø> (-0.09%) ⬇️
apm-integrations-kafkajs-oldest 41.07% <ø> (-0.19%) ⬇️
apm-integrations-net 35.17% <ø> (-0.09%) ⬇️
apm-integrations-next-11.1.4 29.13% <ø> (-0.10%) ⬇️
apm-integrations-next-12.3.7 30.81% <ø> (-0.08%) ⬇️
apm-integrations-next-13.0.0 30.81% <ø> (-0.08%) ⬇️
apm-integrations-next-13.2.0 30.80% <ø> (-0.08%) ⬇️
apm-integrations-next-13.5.11 30.96% <ø> (-0.06%) ⬇️
apm-integrations-next-14.0.0 30.87% <ø> (-0.08%) ⬇️
apm-integrations-next-14.2.35 30.87% <ø> (-0.08%) ⬇️
apm-integrations-next-14.2.6 30.87% <ø> (-0.11%) ⬇️
apm-integrations-next-14.2.7 30.89% <ø> (-0.06%) ⬇️
apm-integrations-next-15.0.0 30.87% <ø> (-0.08%) ⬇️
apm-integrations-next-15.4.0 30.93% <ø> (-0.08%) ⬇️
apm-integrations-oracledb 34.78% <ø> (-0.08%) ⬇️
apm-integrations-prisma-18-gte.6.16.0.and.lt.7.0.0 36.74% <ø> (-0.08%) ⬇️
apm-integrations-prisma-latest-all 35.56% <ø> (-0.08%) ⬇️
apm-integrations-restify 36.53% <ø> (-0.08%) ⬇️
apm-integrations-sharedb 34.00% <ø> (-0.09%) ⬇️
apm-integrations-tedious 34.58% <ø> (-0.08%) ⬇️
appsec-express 52.14% <ø> (-0.05%) ⬇️
appsec-fastify 48.89% <ø> (-0.05%) ⬇️
appsec-graphql 48.94% <ø> (-0.06%) ⬇️
appsec-integration-active 37.04% <ø> (+<0.01%) ⬆️
appsec-integration-latest 37.01% <ø> (+<0.01%) ⬆️
appsec-integration-maintenance 37.05% <ø> (+<0.01%) ⬆️
appsec-integration-oldest 37.05% <ø> (+<0.01%) ⬆️
appsec-kafka 41.65% <ø> (-0.08%) ⬇️
appsec-ldapjs 40.86% <ø> (-0.07%) ⬇️
appsec-lodash 40.93% <ø> (-0.07%) ⬇️
appsec-macos 58.14% <ø> (?)
appsec-mongodb-core 45.41% <ø> (-0.07%) ⬇️
appsec-mongoose 46.29% <ø> (-0.08%) ⬇️
appsec-mysql 48.24% <ø> (-0.03%) ⬇️
appsec-next-latest-11.1.4 29.26% <ø> (-0.08%) ⬇️
appsec-next-latest-12.3.7 30.94% <ø> (-0.08%) ⬇️
appsec-next-latest-13.0.0 30.94% <ø> (-0.08%) ⬇️
appsec-next-latest-13.2.0 30.95% <ø> (-0.08%) ⬇️
appsec-next-latest-13.5.11 31.03% <ø> (-0.08%) ⬇️
appsec-next-latest-14.0.0 30.97% <ø> (-0.08%) ⬇️
appsec-next-latest-14.2.35 30.97% <ø> (-0.08%) ⬇️
appsec-next-latest-14.2.6 30.97% <ø> (-0.08%) ⬇️
appsec-next-latest-14.2.7 30.97% <ø> (?)
appsec-next-latest-15.0.0 30.97% <ø> (-0.08%) ⬇️
appsec-next-latest-latest 30.98% <ø> (-0.08%) ⬇️
appsec-next-oldest-11.1.4 29.28% <ø> (-0.08%) ⬇️
appsec-next-oldest-12.3.7 30.95% <ø> (-0.08%) ⬇️
appsec-next-oldest-13.0.0 30.95% <ø> (-0.08%) ⬇️
appsec-next-oldest-13.2.0 31.23% <ø> (-0.08%) ⬇️
appsec-next-oldest-13.5.11 31.32% <ø> (-0.08%) ⬇️
appsec-next-oldest-14.0.0 31.26% <ø> (-0.08%) ⬇️
appsec-next-oldest-14.2.35 31.26% <ø> (-0.08%) ⬇️
appsec-next-oldest-14.2.6 31.26% <ø> (-0.08%) ⬇️
appsec-next-oldest-14.2.7 31.26% <ø> (-0.08%) ⬇️
appsec-next-oldest-15.0.0 31.26% <ø> (-0.08%) ⬇️
appsec-next-oldest-latest 30.03% <ø> (ø)
appsec-node-serialize 40.15% <ø> (-0.07%) ⬇️
appsec-passport 43.98% <ø> (-0.08%) ⬇️
appsec-postgres 47.87% <ø> (-0.07%) ⬇️
appsec-sourcing 39.55% <ø> (-0.07%) ⬇️
appsec-stripe 41.77% <ø> (-0.08%) ⬇️
appsec-template 40.41% <ø> (-0.07%) ⬇️
appsec-ubuntu 58.22% <ø> (-0.07%) ⬇️
appsec-windows 58.13% <ø> (+0.05%) ⬆️
debugger-ubuntu-active 43.30% <ø> (ø)
debugger-ubuntu-latest 43.25% <ø> (ø)
debugger-ubuntu-maintenance 43.31% <ø> (ø)
debugger-ubuntu-oldest 43.75% <ø> (ø)
instrumentations-instrumentation-ai 38.51% <ø> (?)
instrumentations-instrumentation-aws-sdk 37.80% <ø> (?)
instrumentations-instrumentation-bluebird 29.36% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-body-parser 37.11% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-child_process 34.90% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-cookie-parser 31.27% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-couchbase-18 39.43% <ø> (?)
instrumentations-instrumentation-couchbase-eol 39.43% <ø> (?)
instrumentations-instrumentation-crypto 29.46% <ø> (?)
instrumentations-instrumentation-express 31.48% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-express-mongo-sanitize 31.39% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-express-multi-version 24.04% <ø> (?)
instrumentations-instrumentation-express-session 36.81% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-fetch 35.69% <ø> (?)
instrumentations-instrumentation-fs 29.05% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-generic-pool 28.68% <ø> (ø)
instrumentations-instrumentation-hono 30.43% <ø> (?)
instrumentations-instrumentation-http 36.31% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-http-client-options 38.60% <ø> (?)
instrumentations-instrumentation-knex 29.34% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-light-my-request 36.69% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-mongoose 30.64% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-multer 36.78% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-mysql2 34.90% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-otel-sdk-trace 27.28% <ø> (?)
instrumentations-instrumentation-passport 40.55% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-passport-http 40.22% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-passport-local 40.70% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-pg 34.45% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-promise 29.30% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-promise-js 29.31% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-q 29.34% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-stripe 29.77% <ø> (?)
instrumentations-instrumentation-url 29.26% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-when 29.32% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-zlib 29.32% <ø> (?)
instrumentations-integration-esbuild-0.16.12-active 19.23% <ø> (ø)
instrumentations-integration-esbuild-0.16.12-latest 19.21% <ø> (ø)
instrumentations-integration-esbuild-0.16.12-maintenance 19.23% <ø> (ø)
instrumentations-integration-esbuild-0.16.12-oldest 19.22% <ø> (ø)
instrumentations-integration-esbuild-latest-active 19.23% <ø> (ø)
instrumentations-integration-esbuild-latest-latest 19.21% <ø> (ø)
instrumentations-integration-esbuild-latest-maintenance 19.23% <ø> (?)
instrumentations-integration-esbuild-latest-oldest 19.22% <ø> (ø)
llmobs-ai 37.83% <ø> (-0.08%) ⬇️
llmobs-anthropic 37.92% <ø> (?)
llmobs-bedrock 36.56% <ø> (-0.08%) ⬇️
llmobs-google-genai 36.97% <ø> (?)
llmobs-langchain 38.24% <ø> (-0.07%) ⬇️
llmobs-openai-latest 40.49% <ø> (-0.08%) ⬇️
llmobs-openai-oldest 40.53% <ø> (-0.08%) ⬇️
llmobs-sdk-active 45.01% <ø> (-0.09%) ⬇️
llmobs-sdk-latest 44.95% <ø> (-0.09%) ⬇️
llmobs-sdk-maintenance 45.01% <ø> (-0.09%) ⬇️
llmobs-sdk-oldest 45.00% <ø> (?)
llmobs-vertex-ai 37.00% <ø> (-0.19%) ⬇️
master-coverage 89.87% <ø> (?)
openfeature-macos 38.07% <ø> (ø)
openfeature-ubuntu 38.15% <ø> (-0.01%) ⬇️
openfeature-unit-active 49.27% <ø> (ø)
openfeature-unit-latest 49.11% <ø> (ø)
openfeature-unit-maintenance 49.27% <ø> (ø)
openfeature-unit-oldest 49.27% <ø> (ø)
openfeature-windows 37.89% <ø> (-0.06%) ⬇️
platform-core 36.45% <ø> (ø)
platform-esbuild 39.82% <ø> (ø)
platform-instrumentations-misc 31.44% <ø> (ø)
platform-integration-active 47.24% <ø> (+0.14%) ⬆️
platform-integration-latest 47.20% <ø> (+0.14%) ⬆️
platform-integration-maintenance 47.20% <ø> (+0.14%) ⬆️
platform-integration-oldest 47.42% <ø> (+0.15%) ⬆️
platform-shimmer 42.26% <ø> (ø)
platform-unit-guardrails 35.42% <ø> (ø)
platform-webpack 20.36% <ø> (ø)
plugins-axios 35.58% <ø> (?)
plugins-azure-event-hubs 34.90% <ø> (ø)
plugins-azure-service-bus 35.40% <ø> (ø)
plugins-body-parser 36.70% <ø> (?)
plugins-bullmq 40.14% <ø> (-0.10%) ⬇️
plugins-cassandra 34.83% <ø> (-0.08%) ⬇️
plugins-cookie 27.41% <ø> (ø)
plugins-cookie-parser 27.14% <ø> (ø)
plugins-crypto 27.27% <ø> (ø)
plugins-dd-trace-api 34.72% <ø> (-0.09%) ⬇️
plugins-express-mongo-sanitize 27.32% <ø> (ø)
plugins-express-session 27.09% <ø> (ø)
plugins-fastify 38.85% <ø> (-0.08%) ⬇️
plugins-fetch 35.18% <ø> (-0.08%) ⬇️
plugins-fs 35.15% <ø> (-0.09%) ⬇️
plugins-generic-pool 25.94% <ø> (ø)
plugins-google-cloud-pubsub 42.38% <ø> (-0.08%) ⬇️
plugins-grpc 37.64% <ø> (-0.08%) ⬇️
plugins-handlebars 27.38% <ø> (ø)
plugins-hapi 36.76% <ø> (-0.08%) ⬇️
plugins-hono 37.05% <ø> (-0.08%) ⬇️
plugins-ioredis 35.38% <ø> (+<0.01%) ⬆️
plugins-jest 30.37% <ø> (?)
plugins-knex 26.90% <ø> (ø)
plugins-langgraph 34.56% <ø> (-0.09%) ⬇️
plugins-ldapjs 24.07% <ø> (ø)
plugins-light-my-request 26.57% <ø> (ø)
plugins-limitd-client 29.60% <ø> (-0.15%) ⬇️
plugins-lodash 26.05% <ø> (ø)
plugins-mariadb 36.26% <ø> (-0.05%) ⬇️
plugins-memcached 34.88% <ø> (-0.09%) ⬇️
plugins-microgateway-core 35.88% <ø> (-0.09%) ⬇️
plugins-modelcontextprotocol-sdk 33.83% <ø> (-0.01%) ⬇️
plugins-moleculer 37.66% <ø> (-0.08%) ⬇️
plugins-mongodb 36.19% <ø> (-0.08%) ⬇️
plugins-mongodb-core 35.92% <ø> (-0.09%) ⬇️
plugins-mongoose ?
plugins-multer 27.09% <ø> (ø)
plugins-mysql 35.75% <ø> (-0.10%) ⬇️
plugins-mysql2 35.91% <ø> (-0.09%) ⬇️
plugins-node-serialize 27.47% <ø> (ø)
plugins-opensearch 34.72% <ø> (-0.08%) ⬇️
plugins-passport-http 27.14% <ø> (ø)
plugins-pino 31.35% <ø> (-0.09%) ⬇️
plugins-postgres 35.58% <ø> (-0.09%) ⬇️
plugins-process 27.27% <ø> (ø)
plugins-pug 27.41% <ø> (ø)
plugins-redis 35.43% <ø> (+0.06%) ⬆️
plugins-router 39.25% <ø> (-0.08%) ⬇️
plugins-sequelize 25.64% <ø> (ø)
plugins-test-and-upstream-amqp10 34.95% <ø> (-0.22%) ⬇️
plugins-test-and-upstream-amqplib 40.17% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-apollo 36.07% <ø> (-0.18%) ⬇️
plugins-test-and-upstream-avsc 35.28% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-bunyan 30.73% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-connect 37.45% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-graphql 36.97% <ø> (-0.23%) ⬇️
plugins-test-and-upstream-koa 37.03% <ø> (-0.08%) ⬇️
plugins-test-and-upstream-protobufjs 35.49% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-rhea 40.26% <ø> (-0.09%) ⬇️
plugins-undici 35.75% <ø> (-0.04%) ⬇️
plugins-url 27.27% <ø> (ø)
plugins-valkey 35.02% <ø> (+<0.01%) ⬆️
plugins-vm 27.27% <ø> (ø)
plugins-winston 31.25% <ø> (-0.09%) ⬇️
plugins-ws 38.26% <ø> (-0.08%) ⬇️
profiling-macos 42.77% <ø> (-0.12%) ⬇️
profiling-ubuntu 43.18% <ø> (-0.07%) ⬇️
profiling-windows 40.07% <ø> (-0.07%) ⬇️
serverless-aws-sdk-latest-aws-sdk 34.49% <ø> (-0.07%) ⬇️
serverless-aws-sdk-latest-bedrockruntime 33.10% <ø> (-0.08%) ⬇️
serverless-aws-sdk-latest-client ?
serverless-aws-sdk-latest-dynamodb 35.47% <ø> (-0.08%) ⬇️
serverless-aws-sdk-latest-eventbridge 28.62% <ø> (-0.08%) ⬇️
serverless-aws-sdk-latest-kinesis 38.62% <ø> (-0.08%) ⬇️
serverless-aws-sdk-latest-lambda 36.05% <ø> (-0.08%) ⬇️
serverless-aws-sdk-latest-s3 34.00% <ø> (-0.08%) ⬇️
serverless-aws-sdk-latest-serverless-peer-service 40.67% <ø> (-0.09%) ⬇️
serverless-aws-sdk-latest-sns 39.73% <ø> (-0.08%) ⬇️
serverless-aws-sdk-latest-sqs 39.22% <ø> (-0.08%) ⬇️
serverless-aws-sdk-latest-stepfunctions 34.67% <ø> (-0.08%) ⬇️
serverless-aws-sdk-latest-util 48.38% <ø> (ø)
serverless-aws-sdk-oldest-aws-sdk 34.58% <ø> (-0.07%) ⬇️
serverless-aws-sdk-oldest-bedrockruntime 33.37% <ø> (?)
serverless-aws-sdk-oldest-client 22.22% <ø> (ø)
serverless-aws-sdk-oldest-dynamodb 35.60% <ø> (-0.08%) ⬇️
serverless-aws-sdk-oldest-eventbridge 28.66% <ø> (-0.08%) ⬇️
serverless-aws-sdk-oldest-kinesis 38.75% <ø> (-0.07%) ⬇️
serverless-aws-sdk-oldest-lambda 36.13% <ø> (-0.08%) ⬇️
serverless-aws-sdk-oldest-s3 34.07% <ø> (-0.08%) ⬇️
serverless-aws-sdk-oldest-serverless-peer-service 40.72% <ø> (-0.09%) ⬇️
serverless-aws-sdk-oldest-sns 39.93% <ø> (+0.05%) ⬆️
serverless-aws-sdk-oldest-sqs 39.12% <ø> (-0.08%) ⬇️
serverless-aws-sdk-oldest-stepfunctions 34.74% <ø> (-0.08%) ⬇️
serverless-aws-sdk-oldest-util 48.68% <ø> (ø)
serverless-azure-durable-functions 37.08% <ø> (+0.16%) ⬆️
serverless-azure-functions-eventhubs 38.55% <ø> (-0.02%) ⬇️
serverless-azure-functions-servicebus 38.61% <ø> (-0.02%) ⬇️
serverless-lambda 36.10% <ø> (-0.10%) ⬇️
test-optimization-cucumber-latest-7.0.0 50.32% <ø> (+0.12%) ⬆️
test-optimization-cucumber-latest-latest 53.20% <ø> (+0.12%) ⬆️
test-optimization-cucumber-oldest-7.0.0 50.36% <ø> (+0.12%) ⬆️
test-optimization-cypress-latest-12.0.0-commonJS 48.80% <ø> (+0.07%) ⬆️
test-optimization-cypress-latest-12.0.0-esm 45.59% <ø> (-2.62%) ⬇️
test-optimization-cypress-latest-14.5.4-commonJS 48.65% <ø> (+0.07%) ⬆️
test-optimization-cypress-latest-14.5.4-esm 48.55% <ø> (+0.48%) ⬆️
test-optimization-cypress-latest-latest-commonJS 45.75% <ø> (-3.32%) ⬇️
test-optimization-cypress-latest-latest-esm 49.13% <ø> (+0.03%) ⬆️
test-optimization-cypress-oldest-12.0.0-commonJS 48.71% <ø> (-0.06%) ⬇️
test-optimization-cypress-oldest-12.0.0-esm 48.87% <ø> (+0.07%) ⬆️
test-optimization-cypress-oldest-14.5.4-commonJS 48.68% <ø> (+0.07%) ⬆️
test-optimization-cypress-oldest-14.5.4-esm 48.62% <ø> (-0.02%) ⬇️
test-optimization-jest-latest-latest 54.83% <ø> (+0.08%) ⬆️
test-optimization-jest-latest-oldest 53.65% <ø> (+0.08%) ⬆️
test-optimization-jest-oldest-latest 54.83% <ø> (+0.08%) ⬆️
test-optimization-jest-oldest-oldest 53.59% <ø> (+0.08%) ⬆️
test-optimization-mocha-latest-latest 53.63% <ø> (+0.21%) ⬆️
test-optimization-mocha-latest-oldest 51.29% <ø> (+0.08%) ⬆️
test-optimization-mocha-oldest-latest 53.70% <ø> (+0.08%) ⬆️
test-optimization-mocha-oldest-oldest 51.23% <ø> (+0.08%) ⬆️
test-optimization-playwright-latest-latest-playwright-active-test-span 44.35% <ø> (?)
test-optimization-playwright-latest-latest-playwright-atr 43.13% <ø> (+0.11%) ⬆️
test-optimization-playwright-latest-latest-playwright-efd 43.55% <ø> (+0.09%) ⬆️
test-optimization-playwright-latest-latest-playwright-final-status 43.61% <ø> (+0.13%) ⬆️
test-optimization-playwright-latest-latest-playwright-impacted-tests 43.06% <ø> (ø)
test-optimization-playwright-latest-latest-playwright-reporting 43.02% <ø> (+0.09%) ⬆️
test-optimization-playwright-latest-latest-playwright-test-management 44.79% <ø> (+0.10%) ⬆️
test-optimization-playwright-latest-oldest-playwright-active-test-span 44.42% <ø> (+0.28%) ⬆️
test-optimization-playwright-latest-oldest-playwright-atr 43.34% <ø> (+0.11%) ⬆️
test-optimization-playwright-latest-oldest-playwright-efd 43.61% <ø> (+0.09%) ⬆️
test-optimization-playwright-latest-oldest-playwright-final-status 43.67% <ø> (+0.11%) ⬆️
test-optimization-playwright-latest-oldest-playwright-impacted-tests 43.11% <ø> (ø)
test-optimization-playwright-latest-oldest-playwright-reporting 43.09% <ø> (+0.09%) ⬆️
test-optimization-playwright-latest-oldest-playwright-test-management 44.86% <ø> (+0.10%) ⬆️
test-optimization-playwright-oldest-latest-playwright-active-test-span 44.37% <ø> (+0.25%) ⬆️
test-optimization-playwright-oldest-latest-playwright-atr 43.17% <ø> (+0.11%) ⬆️
test-optimization-playwright-oldest-latest-playwright-efd 43.57% <ø> (+0.09%) ⬆️
test-optimization-playwright-oldest-latest-playwright-final-status 43.62% <ø> (+0.11%) ⬆️
test-optimization-playwright-oldest-latest-playwright-impacted-tests 43.10% <ø> (ø)
test-optimization-playwright-oldest-latest-playwright-reporting 43.03% <ø> (+0.09%) ⬆️
test-optimization-playwright-oldest-latest-playwright-test-management 44.80% <ø> (+0.10%) ⬆️
test-optimization-playwright-oldest-oldest-playwright-active-test-span 44.46% <ø> (+0.28%) ⬆️
test-optimization-playwright-oldest-oldest-playwright-atr 43.38% <ø> (?)
test-optimization-playwright-oldest-oldest-playwright-efd 43.62% <ø> (+0.09%) ⬆️
test-optimization-playwright-oldest-oldest-playwright-final-status 43.68% <ø> (+0.11%) ⬆️
test-optimization-playwright-oldest-oldest-playwright-impacted-tests 43.15% <ø> (ø)
test-optimization-playwright-oldest-oldest-playwright-reporting 43.10% <ø> (+0.09%) ⬆️
test-optimization-playwright-oldest-oldest-playwright-test-management 44.88% <ø> (+0.10%) ⬆️
test-optimization-selenium-latest 45.57% <ø> (+0.06%) ⬆️
test-optimization-selenium-oldest 45.14% <ø> (-0.16%) ⬇️
test-optimization-testopt-active 46.96% <ø> (+0.13%) ⬆️
test-optimization-testopt-latest 46.92% <ø> (+0.13%) ⬆️
test-optimization-testopt-maintenance 46.96% <ø> (+0.13%) ⬆️
test-optimization-testopt-oldest 47.84% <ø> (+0.14%) ⬆️
test-optimization-vitest-latest 51.22% <ø> (+0.10%) ⬆️
test-optimization-vitest-oldest 48.31% <ø> (+0.33%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pr-commenter

pr-commenter Bot commented May 19, 2026

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2026-05-20 11:35:18

Comparing candidate commit 988e26e in PR branch BridgeAR/2026-05-19-verify-exercised-tests-joint with baseline commit 178fc6b in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 1499 metrics, 94 unstable metrics.

BridgeAR added 3 commits May 20, 2026 01:51
`packages/datadog-instrumentations/test/{ai,aws-sdk,couchbase,crypto,
express-multi-version,fetch,hono,http-client-options,otel-sdk-trace,
stripe,zlib}.spec.js` are matched by `test:instrumentations`' glob but
no workflow set `PLUGINS=<name>` for `test:instrumentations:ci`, so the
new joint-coverage check in `scripts/verify-exercised-tests.js` flagged
each as never reached by a CI invocation. Add the matching
`instrumentation-<name>` jobs alongside the existing siblings; nine of
the eleven are plain Node unit specs (proxyquire / agent harness) and
need no service containers, so the existing `instrumentations/test`
composite action runs them as-is.

Two specs need a custom job shape on top of that:

1. `couchbase` ships its own libcouchbase whose 3.x line only builds on
   Node 18 and whose 4.2+ line only builds on Node 20+; the composite
   action runs both oldest (18) and latest (24), so neither range
   survives the install on its own. Use a matrix that pins one Node
   version per range, mirroring the existing `couchbase` plugin job.

2. `http-client-options` listened on `127.0.0.1` only, but
   `http.request(undefined, callback)` resolves to `localhost`, which
   Node 18+ may resolve to `::1` first -- the request then fails with
   `ECONNREFUSED ::1:<port>` before the spec can assert. Bind the test
   server to all interfaces.
`packages/datadog-plugin-{axios,body-parser}/test/integration-test/client.spec.js`
are matched by `test:integration:plugins`' glob but no workflow set
`PLUGINS=<name>` for `test:integration:plugins:coverage`; the existing
`axios:` and `body-parser:` jobs only invoked `plugins/upstream`, which
runs the non-glob `test:plugins:upstream` suite-runner. The new joint
check flagged both specs as never reached.

Append `plugins/integration-test` to each job (which runs
`test:integration:plugins:coverage` with the same `PLUGINS=` env) rather
than spinning up sibling jobs; both specs are self-contained
(`FakeAgent` + `useSandbox`) and slot into the existing harness without
extra service setup.

The axios sandbox previously called `axios.get('/foo')`, which throws
synchronously without producing an http.request, so the spec timed out
waiting for a span. Switch to a full URL pointing at an unused port to
match the existing fetch sandbox; the request can fail and the
instrumentation still ships a span.
`packages/datadog-plugin-jest/test/util.spec.js` is matched by
`test:plugins`' glob but no workflow set `PLUGINS=jest` for
`test:plugins:ci`; the existing `integration-jest` matrix runs
`integration-tests/jest/*.spec.js` only, which does not cover the
plugin package's own unit tests. The new joint check flagged it as
never reached.

Add a single `jest:` job invoking the `plugins/test` composite action.
`util.spec.js` is a pure unit test on `getFormattedJestTestParameters`
and `getJestSuitesToRun`, so no service containers or matrix axes are
needed beyond what `plugins/test` already covers (oldest-maintenance
and latest Node).

Restore the three fixture files (`test-to-run.js`, `test-to-skip.js`,
`test-unskippable.js`) under `packages/datadog-plugin-jest/test/fixtures/`
that `getJestSuitesToRun` reads via `isMarkedAsUnskippable`. They were
deleted alongside the other jest plugin specs when those moved to
integration tests, but `util.spec.js` was kept and silently broke
because no CI invocation reached it.
@BridgeAR BridgeAR force-pushed the BridgeAR/2026-05-19-verify-exercised-tests-joint branch from de95cd7 to 3f9b76e Compare May 20, 2026 00:02
@BridgeAR BridgeAR marked this pull request as ready for review May 20, 2026 00:10
@BridgeAR BridgeAR requested review from a team as code owners May 20, 2026 00:10
@BridgeAR BridgeAR requested review from tlhunter and removed request for a team May 20, 2026 00:10
ci(instrumentation): run 11 orphan instrumentation specs

`packages/datadog-instrumentations/test/{ai,aws-sdk,couchbase,crypto,
express-multi-version,fetch,hono,http-client-options,otel-sdk-trace,
stripe,zlib}.spec.js` are matched by `test:instrumentations`' glob but
no workflow set `PLUGINS=<name>` for `test:instrumentations:ci`, so the
new joint-coverage check in `scripts/verify-exercised-tests.js` flagged
each as never reached by a CI invocation. Add the matching
`instrumentation-<name>` jobs alongside the existing siblings; nine of
the eleven are plain Node unit specs (proxyquire / agent harness) and
need no service containers, so the existing `instrumentations/test`
composite action runs them as-is.

Two specs need a custom job shape on top of that:

1. `couchbase` ships its own libcouchbase: the 3.x line has no prebuilt
   binary for Node 18+ and its bundled sources do not compile under
   modern gcc (missing <cstdint> for std::uint8_t). The composite
   action runs both oldest (18) and latest (24), so neither survives
   the install on its own. Use a matrix that pins one Node version
   per range, mirroring the existing `couchbase` plugin job's `eol`
   (16) for `^3.0.7` and Node 18 for `>=4.2.0`.

2. `http-client-options` listened on `127.0.0.1` only, but
   `http.request(undefined, callback)` resolves to `localhost`, which
   Node 18+ may resolve to `::1` first -- the request then fails with
   `ECONNREFUSED ::1:<port>` before the spec can assert. Bind the test
   server to all interfaces.
@BridgeAR BridgeAR enabled auto-merge (squash) May 21, 2026 18:54
@BridgeAR BridgeAR merged commit e385b8a into master May 21, 2026
935 checks passed
@BridgeAR BridgeAR deleted the BridgeAR/2026-05-19-verify-exercised-tests-joint branch May 21, 2026 19:01
This was referenced May 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants