dd-trace 5.4.0 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CONTRIBUTING.md +98 -0
  2. package/README.md +8 -99
  3. package/ci/cypress/after-run.js +1 -0
  4. package/ci/cypress/after-spec.js +1 -0
  5. package/index.d.ts +1498 -1488
  6. package/package.json +3 -3
  7. package/packages/datadog-core/src/utils/src/get.js +11 -0
  8. package/packages/datadog-core/src/utils/src/has.js +14 -0
  9. package/packages/datadog-core/src/utils/src/set.js +16 -0
  10. package/packages/datadog-instrumentations/src/amqplib.js +1 -1
  11. package/packages/datadog-instrumentations/src/cucumber.js +157 -42
  12. package/packages/datadog-instrumentations/src/grpc/server.js +3 -1
  13. package/packages/datadog-instrumentations/src/jest.js +80 -40
  14. package/packages/datadog-instrumentations/src/mocha.js +4 -1
  15. package/packages/datadog-instrumentations/src/mongodb-core.js +34 -3
  16. package/packages/datadog-instrumentations/src/playwright.js +78 -16
  17. package/packages/datadog-plugin-amqplib/src/consumer.js +8 -4
  18. package/packages/datadog-plugin-amqplib/src/producer.js +3 -4
  19. package/packages/datadog-plugin-aws-sdk/src/base.js +3 -2
  20. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +60 -57
  21. package/packages/datadog-plugin-aws-sdk/src/services/sns.js +42 -22
  22. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +64 -30
  23. package/packages/datadog-plugin-cucumber/src/index.js +25 -9
  24. package/packages/datadog-plugin-cypress/src/after-run.js +3 -0
  25. package/packages/datadog-plugin-cypress/src/after-spec.js +3 -0
  26. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +625 -0
  27. package/packages/datadog-plugin-cypress/src/plugin.js +6 -549
  28. package/packages/datadog-plugin-cypress/src/support.js +50 -3
  29. package/packages/datadog-plugin-graphql/src/index.js +1 -1
  30. package/packages/datadog-plugin-graphql/src/resolve.js +10 -8
  31. package/packages/datadog-plugin-grpc/src/util.js +1 -1
  32. package/packages/datadog-plugin-jest/src/index.js +11 -2
  33. package/packages/datadog-plugin-kafkajs/src/consumer.js +4 -3
  34. package/packages/datadog-plugin-kafkajs/src/producer.js +3 -5
  35. package/packages/datadog-plugin-playwright/src/index.js +34 -3
  36. package/packages/datadog-plugin-rhea/src/consumer.js +8 -3
  37. package/packages/datadog-plugin-rhea/src/producer.js +3 -4
  38. package/packages/dd-trace/src/appsec/iast/index.js +10 -0
  39. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +18 -5
  40. package/packages/dd-trace/src/appsec/recommended.json +67 -27
  41. package/packages/dd-trace/src/appsec/remote_config/index.js +1 -1
  42. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +1 -3
  43. package/packages/dd-trace/src/config.js +451 -459
  44. package/packages/dd-trace/src/data_streams_context.js +1 -1
  45. package/packages/dd-trace/src/datastreams/pathway.js +58 -1
  46. package/packages/dd-trace/src/datastreams/processor.js +3 -5
  47. package/packages/dd-trace/src/format.js +0 -1
  48. package/packages/dd-trace/src/opentracing/propagation/text_map.js +2 -2
  49. package/packages/dd-trace/src/opentracing/span.js +4 -4
  50. package/packages/dd-trace/src/plugins/util/test.js +2 -0
  51. package/packages/dd-trace/src/plugins/util/web.js +1 -1
  52. package/packages/dd-trace/src/profiling/exporters/agent.js +77 -32
  53. package/packages/dd-trace/src/telemetry/index.js +22 -34
  54. package/packages/dd-trace/src/tracer.js +3 -3
  55. package/register.js +4 -0
  56. /package/packages/{utils → datadog-core/src/utils}/src/kebabcase.js +0 -0
  57. /package/packages/{utils → datadog-core/src/utils}/src/pick.js +0 -0
  58. /package/packages/{utils → datadog-core/src/utils}/src/uniq.js +0 -0
@@ -15,7 +15,10 @@ const {
15
15
  TEST_ITR_FORCED_RUN,
16
16
  TEST_CODE_OWNERS,
17
17
  ITR_CORRELATION_ID,
18
- TEST_SOURCE_FILE
18
+ TEST_SOURCE_FILE,
19
+ TEST_EARLY_FLAKE_IS_ENABLED,
20
+ TEST_IS_NEW,
21
+ TEST_EARLY_FLAKE_IS_RETRY
19
22
  } = require('../../dd-trace/src/plugins/util/test')
20
23
  const { RESOURCE_NAME } = require('../../../ext/tags')
21
24
  const { COMPONENT, ERROR_MESSAGE } = require('../../dd-trace/src/constants')
@@ -46,7 +49,8 @@ class CucumberPlugin extends CiPlugin {
46
49
  numSkippedSuites,
47
50
  testCodeCoverageLinesTotal,
48
51
  hasUnskippableSuites,
49
- hasForcedToRunSuites
52
+ hasForcedToRunSuites,
53
+ isEarlyFlakeDetectionEnabled
50
54
  }) => {
51
55
  const { isSuitesSkippingEnabled, isCodeCoverageEnabled } = this.libraryConfig || {}
52
56
  addIntelligentTestRunnerSpanTags(
@@ -63,6 +67,9 @@ class CucumberPlugin extends CiPlugin {
63
67
  hasForcedToRunSuites
64
68
  }
65
69
  )
70
+ if (isEarlyFlakeDetectionEnabled) {
71
+ this.testSessionSpan.setTag(TEST_EARLY_FLAKE_IS_ENABLED, 'true')
72
+ }
66
73
 
67
74
  this.testSessionSpan.setTag(TEST_STATUS, status)
68
75
  this.testModuleSpan.setTag(TEST_STATUS, status)
@@ -141,7 +148,12 @@ class CucumberPlugin extends CiPlugin {
141
148
  const store = storage.getStore()
142
149
  const testSuite = getTestSuitePath(testFileAbsolutePath, this.sourceRoot)
143
150
  const testSourceFile = getTestSuitePath(testFileAbsolutePath, this.repositoryRoot)
144
- const testSpan = this.startTestSpan(testName, testSuite, testSourceFile, testSourceLine)
151
+
152
+ const extraTags = {
153
+ [TEST_SOURCE_START]: testSourceLine,
154
+ [TEST_SOURCE_FILE]: testSourceFile
155
+ }
156
+ const testSpan = this.startTestSpan(testName, testSuite, extraTags)
145
157
 
146
158
  this.enter(testSpan, store)
147
159
  })
@@ -160,12 +172,19 @@ class CucumberPlugin extends CiPlugin {
160
172
  this.enter(span, store)
161
173
  })
162
174
 
163
- this.addSub('ci:cucumber:test:finish', ({ isStep, status, skipReason, errorMessage }) => {
175
+ this.addSub('ci:cucumber:test:finish', ({ isStep, status, skipReason, errorMessage, isNew, isEfdRetry }) => {
164
176
  const span = storage.getStore().span
165
177
  const statusTag = isStep ? 'step.status' : TEST_STATUS
166
178
 
167
179
  span.setTag(statusTag, status)
168
180
 
181
+ if (isNew) {
182
+ span.setTag(TEST_IS_NEW, 'true')
183
+ if (isEfdRetry) {
184
+ span.setTag(TEST_EARLY_FLAKE_IS_RETRY, 'true')
185
+ }
186
+ }
187
+
169
188
  if (skipReason) {
170
189
  span.setTag(TEST_SKIP_REASON, skipReason)
171
190
  }
@@ -193,15 +212,12 @@ class CucumberPlugin extends CiPlugin {
193
212
  })
194
213
  }
195
214
 
196
- startTestSpan (testName, testSuite, testSourceFile, testSourceLine) {
215
+ startTestSpan (testName, testSuite, extraTags) {
197
216
  return super.startTestSpan(
198
217
  testName,
199
218
  testSuite,
200
219
  this.testSuiteSpan,
201
- {
202
- [TEST_SOURCE_START]: testSourceLine,
203
- [TEST_SOURCE_FILE]: testSourceFile
204
- }
220
+ extraTags
205
221
  )
206
222
  }
207
223
  }
@@ -0,0 +1,3 @@
1
+ const cypressPlugin = require('./cypress-plugin')
2
+
3
+ module.exports = cypressPlugin.afterRun.bind(cypressPlugin)
@@ -0,0 +1,3 @@
1
+ const cypressPlugin = require('./cypress-plugin')
2
+
3
+ module.exports = cypressPlugin.afterSpec.bind(cypressPlugin)