Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
e3cf253
chore(deps): bump the test-versions group across 1 directory with 2 u…
dependabot[bot] Oct 28, 2025
f905acd
fix retry no longer working for bun (#6762)
rochdev Oct 28, 2025
b4c9141
FFL-1294: Fix FFE_FLAGS Remote Config handler payload format (#6754)
leoromanovsky Oct 28, 2025
a39bab6
chore(deps-dev): bump workerpool from 9.3.4 to 10.0.0 (#6751)
dependabot[bot] Oct 28, 2025
3df5b62
chore: always redact exception messages for logs in telemetry (#6740)
bouwkast Oct 28, 2025
e30ff06
fix: do not include peer dependencies of a dependency (#6760)
BridgeAR Oct 28, 2025
4e40f53
chore: remove unused code (#6768)
BridgeAR Oct 28, 2025
ca860f6
ci: fix express-session job name (#6769)
pabloerhard Oct 28, 2025
ab7aab3
[test optimization] Improve flakiness in cypress (even more) (#6772)
juan-fernandez Oct 28, 2025
45e398f
fix: make sure latest vitest versions get properly instrumented (#6773)
juan-fernandez Oct 28, 2025
691fa59
ci: remove deprecated lambda executor from localstack config (#6771)
rochdev Oct 28, 2025
ff21894
Renamed nightly dispatch workflow (#6742)
pabloerhard Oct 28, 2025
b08ffa8
feat: support most configurations with Declarative Config (#6694)
mtoffl01 Oct 28, 2025
70710b2
fix: safer wrapFunction for ESM instrumentation (#6761)
pabloerhard Oct 28, 2025
d7e1903
fix: restore the try catch in esubild because could fail using yarn (…
uurien Oct 29, 2025
ba2d81c
chore(deps): bump the test-versions group across 1 directory with 2 u…
dependabot[bot] Oct 30, 2025
7574051
v5.74.1
rochdev Oct 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion .github/workflows/apm-integrations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,17 @@ jobs:
- uses: ./.github/actions/install
- run: yarn test:plugins:ci

cookie-session:
express-mongo-sanitize:
runs-on: ubuntu-latest
env:
PLUGINS: express-mongo-sanitize
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- uses: ./.github/actions/plugins/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}

express-session:
runs-on: ubuntu-latest
env:
PLUGINS: express-session
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Nightly Testing
name: Nightly and custom Node.js builds

on:
workflow_dispatch:
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/serverless.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,11 @@ jobs:
EXTRA_CORS_EXPOSE_HEADERS: x-amz-request-id,x-amzn-requestid,x-amz-id-2
AWS_DEFAULT_REGION: us-east-1
FORCE_NONINTERACTIVE: 'true'
LAMBDA_EXECUTOR: local
START_WEB: '0'
ports:
- 4566:4566
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
# we have two localstacks since upgrading localstack was causing lambda & S3 tests to fail
# To-Do: Debug localstack / lambda and localstack / S3
localstack-legacy:
Expand Down
1 change: 0 additions & 1 deletion docs/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,6 @@ const elasticsearchOptions: plugins.elasticsearch = {

const awsSdkOptions: plugins.aws_sdk = {
service: 'test',
splitByAwsService: false,
batchPropagationEnabled: false,
hooks: {
request: (span?: Span, response?) => {},
Expand Down
6 changes: 0 additions & 6 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1698,12 +1698,6 @@ declare namespace tracer {
* [aws-sdk](https://github.com/aws/aws-sdk-js) module.
*/
interface aws_sdk extends Instrumentation {
/**
* Whether to add a suffix to the service name so that each AWS service has its own service name.
* @default true
*/
splitByAwsService?: boolean;

/**
* Whether to inject all messages during batch AWS SQS, Kinesis, and SNS send operations. Normal
* behavior is to inject the first message in batch send operations.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@
"pluginsFile": "cypress/plugins-old/index.js",
"supportFile": "cypress/support/e2e.js",
"integrationFolder": "cypress/e2e",
"defaultCommandTimeout": 100,
"defaultCommandTimeout": 1000,
"nodeVersion": "system"
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict'

module.exports = {
defaultCommandTimeout: 100,
defaultCommandTimeout: 1000,
e2e: {
setupNodeEvents (on, config) {
return require('dd-trace/ci/cypress/plugin')(on, config)
Expand Down
2 changes: 1 addition & 1 deletion integration-tests/cypress-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@
"pluginsFile": "cypress/plugins-old/index.js",
"supportFile": "cypress/support/e2e.js",
"integrationFolder": "cypress/e2e",
"defaultCommandTimeout": 100,
"defaultCommandTimeout": 1000,
"nodeVersion": "system"
}
30 changes: 15 additions & 15 deletions integration-tests/cypress/cypress.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ moduleTypes.forEach(({
.map(file => file.filename)

assert.includeMembers(fileNames, Object.keys(coverageFixture))
}, 20000)
}, 25000)

childProcess = exec(
testCommand,
Expand Down Expand Up @@ -988,7 +988,7 @@ moduleTypes.forEach(({
'ci-visibility/subproject/src/index.tsx',
'ci-visibility/subproject/cypress/e2e/spec.cy.js'
])
}, 10000)
}, 25000)

childProcess = exec(
command,
Expand Down Expand Up @@ -1028,7 +1028,7 @@ moduleTypes.forEach(({
assert.exists(testEvent.content.test_session_id)
assert.notEqual(testEvent.content.test_suite_id, testModuleEvent.content.test_module_id)
})
})
}, 25000)

childProcess = exec(
testCommand,
Expand Down Expand Up @@ -1173,7 +1173,7 @@ moduleTypes.forEach(({

const testSession = events.find(event => event.type === 'test_session_end').content
assert.propertyVal(testSession.meta, TEST_EARLY_FLAKE_ENABLED, 'true')
})
}, 25000)

const {
NODE_OPTIONS, // NODE_OPTIONS dd-trace config does not work with cypress
Expand Down Expand Up @@ -1241,7 +1241,7 @@ moduleTypes.forEach(({

const testSession = events.find(event => event.type === 'test_session_end').content
assert.notProperty(testSession.meta, TEST_EARLY_FLAKE_ENABLED)
})
}, 25000)

const specToRun = 'cypress/e2e/spec.cy.js'
childProcess = exec(
Expand Down Expand Up @@ -1298,7 +1298,7 @@ moduleTypes.forEach(({

const testSession = events.find(event => event.type === 'test_session_end').content
assert.propertyVal(testSession.meta, TEST_EARLY_FLAKE_ENABLED, 'true')
})
}, 25000)

const specToRun = 'cypress/e2e/skipped-test.js'

Expand Down Expand Up @@ -1353,7 +1353,7 @@ moduleTypes.forEach(({

const newTests = tests.filter(test => test.meta[TEST_IS_NEW] === 'true')
assert.equal(newTests.length, 0)
})
}, 25000)

const specToRun = 'cypress/e2e/spec.cy.js'

Expand Down Expand Up @@ -1624,7 +1624,7 @@ moduleTypes.forEach(({
'cypress/e2e/flaky-test-retries.js.flaky test retry always passes'
])
assert.equal(tests.filter(test => test.meta[TEST_RETRY_REASON] === TEST_RETRY_REASON_TYPES.atr).length, 0)
})
}, 25000)

const {
NODE_OPTIONS, // NODE_OPTIONS dd-trace config does not work with cypress
Expand Down Expand Up @@ -1683,7 +1683,7 @@ moduleTypes.forEach(({
])

assert.equal(tests.filter(test => test.meta[TEST_RETRY_REASON] === TEST_RETRY_REASON_TYPES.atr).length, 2)
})
}, 25000)

const {
NODE_OPTIONS, // NODE_OPTIONS dd-trace config does not work with cypress
Expand Down Expand Up @@ -1795,7 +1795,7 @@ moduleTypes.forEach(({

const testSession = events.find(event => event.type === 'test_session_end').content
assert.notProperty(testSession.meta, TEST_EARLY_FLAKE_ENABLED)
})
}, 25000)

const specToRun = 'cypress/e2e/spec.cy.js'
childProcess = exec(
Expand Down Expand Up @@ -1835,7 +1835,7 @@ moduleTypes.forEach(({
const test = events.find(event => event.type === 'test').content
assert.equal(test.resource, 'cypress/e2e/multi-origin.js.tests multiple origins')
assert.equal(test.meta[TEST_STATUS], 'pass')
})
}, 25000)

secondWebAppServer = http.createServer((req, res) => {
res.setHeader('Content-Type', 'text/html')
Expand Down Expand Up @@ -2011,7 +2011,7 @@ moduleTypes.forEach(({
}
}
}
})
}, 25000)

const runAttemptToFixTest = async ({
isAttemptToFix,
Expand Down Expand Up @@ -2195,7 +2195,7 @@ moduleTypes.forEach(({
assert.propertyVal(failedTest.meta, TEST_STATUS, 'fail')
assert.notProperty(failedTest.meta, TEST_MANAGEMENT_IS_DISABLED)
}
})
}, 25000)

const runDisableTest = async (isDisabling, extraEnvVars = {}) => {
const testAssertionsPromise = getTestAssertions(isDisabling)
Expand Down Expand Up @@ -2294,7 +2294,7 @@ moduleTypes.forEach(({
assert.propertyVal(failedTest.meta, TEST_STATUS, 'fail')
assert.notProperty(failedTest.meta, TEST_MANAGEMENT_IS_QUARANTINED)
}
})
}, 25000)

const runQuarantineTest = async (isQuarantining, extraEnvVars = {}) => {
const testAssertionsPromise = getTestAssertions(isQuarantining)
Expand Down Expand Up @@ -2366,7 +2366,7 @@ moduleTypes.forEach(({
const tests = events.filter(event => event.type === 'test').map(event => event.content)
// it is not retried
assert.equal(tests.length, 1)
})
}, 25000)

const {
NODE_OPTIONS,
Expand Down
4 changes: 0 additions & 4 deletions integration-tests/esbuild/build.esm-hono-output-cjs.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@ const external = [
// required if you use profiling
'@datadog/pprof',

// @openfeature/core is a peer dependency of @openfeature/server-sdk
// which is used by @datadog/openfeature-node-server
'@openfeature/core',

// required if you use Datadog security features
'@datadog/native-appsec',
'@datadog/native-iast-taint-tracking',
Expand Down
4 changes: 0 additions & 4 deletions integration-tests/esbuild/build.esm-hono-output-esm.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@ const external = [
// required if you use profiling
'@datadog/pprof',

// @openfeature/core is a peer dependency of @openfeature/server-sdk
// which is used by @datadog/openfeature-node-server
'@openfeature/core',

// required if you use Datadog security features
'@datadog/native-appsec',
'@datadog/native-iast-taint-tracking',
Expand Down
4 changes: 0 additions & 4 deletions integration-tests/esbuild/build.esm-http-output-cjs.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@ const external = [
// required if you use profiling
'@datadog/pprof',

// @openfeature/core is a peer dependency of @openfeature/server-sdk
// which is used by @datadog/openfeature-node-server
'@openfeature/core',

// required if you use Datadog security features
'@datadog/native-appsec',
'@datadog/native-iast-taint-tracking',
Expand Down
4 changes: 0 additions & 4 deletions integration-tests/esbuild/build.esm-http-output-esm.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@ const external = [
// required if you use profiling
'@datadog/pprof',

// @openfeature/core is a peer dependency of @openfeature/server-sdk
// which is used by @datadog/openfeature-node-server
'@openfeature/core',

// required if you use Datadog security features
'@datadog/native-appsec',
'@datadog/native-iast-taint-tracking',
Expand Down
43 changes: 43 additions & 0 deletions integration-tests/esbuild/openfeature.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
'use strict'

const { execSync } = require('node:child_process')
const path = require('node:path')

const { FakeAgent, createSandbox } = require('../helpers')

// This should switch to our withVersion helper. The order here currently matters.
const esbuildVersions = ['latest', '0.16.12']

esbuildVersions.forEach((version) => {
describe('OpenFeature', () => {
let sandbox, agent, cwd

before(async () => {
sandbox = await createSandbox([`esbuild@${version}`, 'hono', '@hono/node-server'], false, [__dirname])
cwd = sandbox.folder
// remove all node_modules and bun.lock file and install with yarn
// TODO add this in createSandbox if it's need in more places
execSync(`rm -rf ${path.join(cwd, 'node_modules')}`, { cwd })
execSync(`rm -rf ${path.join(cwd, 'bun.lock')}`, { cwd })
execSync('npm install -g yarn', { cwd })

execSync('yarn', { cwd })
})

beforeEach(async () => {
agent = await new FakeAgent().start()
})

after(() => {
sandbox.remove()
})

afterEach(() => {
agent.stop()
})

it('should not crash build after installing with yarn', () => {
execSync('node esbuild/build.esm-hono-output-esm.mjs', { cwd })
})
})
})
6 changes: 3 additions & 3 deletions integration-tests/esbuild/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@
"author": "Thomas Hunter II <[email protected]>",
"license": "ISC",
"dependencies": {
"@apollo/server": "5.0.0",
"@apollo/server": "5.1.0",
"@koa/router": "14.0.0",
"aws-sdk": "2.1692.0",
"axios": "1.12.2",
"axios": "1.13.1",
"express": "4.21.2",
"knex": "3.1.0",
"koa": "3.1.0",
"koa": "3.1.1",
"openai": "6.7.0"
}
}
2 changes: 1 addition & 1 deletion integration-tests/helpers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ function execHelper (command, options) {
console.log('Exec SUCCESS: ', command)
} catch (error) {
console.error('Exec ERROR: ', command, error)
if (command.startsWith('bun')) {
if (command.startsWith(BUN)) {
try {
console.log('Exec RETRY START: ', command)
execSync(command, options)
Expand Down
6 changes: 5 additions & 1 deletion integration-tests/vitest/vitest.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ const {
DD_CAPABILITIES_IMPACTED_TESTS
} = require('../../packages/dd-trace/src/plugins/util/test')
const { DD_HOST_CPU_COUNT } = require('../../packages/dd-trace/src/plugins/util/env')
const { NODE_MAJOR } = require('../../version')

const NUM_RETRIES_EFD = 3

Expand Down Expand Up @@ -399,7 +400,10 @@ versions.forEach((version) => {
})

// total code coverage only works for >=2.0.0
if (version === 'latest') {
// v4 dropped support for Node 18. Every test but this once passes, so we'll leave them
// for now. The breaking change is in https://github.com/vitest-dev/vitest/commit/9a0bf2254
// shipped in https://github.com/vitest-dev/vitest/releases/tag/v4.0.0-beta.12
if (version === 'latest' && NODE_MAJOR >= 20) {
const coverageProviders = ['v8', 'istanbul']

coverageProviders.forEach((coverageProvider) => {
Expand Down
20 changes: 4 additions & 16 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "dd-trace",
"version": "5.74.0",
"version": "5.74.1",
"description": "Datadog APM tracing client for JavaScript",
"main": "index.js",
"typings": "index.d.ts",
Expand Down Expand Up @@ -158,25 +158,13 @@
"tlhunter-sorted-set": "^0.1.0",
"ttl-set": "^1.0.0"
},
"peerDependencies": {
"@openfeature/core": "^1.9.0",
"@openfeature/server-sdk": "~1.20.0"
},
"peerDependenciesMeta": {
"@openfeature/core": {
"optional": true
},
"@openfeature/server-sdk": {
"optional": true
}
},
"devDependencies": {
"@babel/helpers": "^7.27.6",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.29.0",
"@msgpack/msgpack": "^3.1.2",
"@openfeature/core": "^1.8.1",
"@openfeature/server-sdk": "~1.20.0",
"@openfeature/core": "^1.9.0",
"@openfeature/server-sdk": "^1.20.0",
"@stylistic/eslint-plugin": "^5.0.0",
"@types/chai": "^4.3.16",
"@types/mocha": "^10.0.10",
Expand Down Expand Up @@ -214,7 +202,7 @@
"tap": "^16.3.10",
"tiktoken": "^1.0.21",
"typescript": "^5.9.2",
"workerpool": "^9.2.0",
"workerpool": "^10.0.0",
"yaml": "^2.8.0",
"yarn-deduplicate": "^6.0.2"
}
Expand Down
Loading
Loading