dd-trace 5.84.0 → 5.86.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.
- package/ci/cypress/polyfills.js +1 -1
- package/ci/init.js +5 -5
- package/ext/exporters.js +1 -1
- package/ext/formats.js +1 -1
- package/ext/index.js +1 -1
- package/ext/kinds.js +1 -1
- package/ext/priority.js +1 -1
- package/ext/scopes.js +1 -1
- package/ext/tags.js +1 -1
- package/ext/types.js +1 -1
- package/index.d.ts +96 -24
- package/initialize.mjs +47 -31
- package/loader-hook.mjs +35 -22
- package/package.json +34 -31
- package/packages/datadog-code-origin/index.js +12 -10
- package/packages/datadog-core/src/storage.js +30 -12
- package/packages/datadog-core/src/utils/src/pick.js +2 -2
- package/packages/datadog-esbuild/index.js +75 -79
- package/packages/datadog-esbuild/src/log.js +32 -0
- package/packages/datadog-esbuild/src/utils.js +12 -8
- package/packages/datadog-instrumentations/src/aerospike.js +3 -3
- package/packages/datadog-instrumentations/src/ai.js +5 -5
- package/packages/datadog-instrumentations/src/amqp10.js +1 -1
- package/packages/datadog-instrumentations/src/amqplib.js +1 -1
- package/packages/datadog-instrumentations/src/anthropic.js +3 -3
- package/packages/datadog-instrumentations/src/apollo-server.js +4 -4
- package/packages/datadog-instrumentations/src/apollo.js +2 -2
- package/packages/datadog-instrumentations/src/avsc.js +1 -1
- package/packages/datadog-instrumentations/src/aws-sdk.js +4 -4
- package/packages/datadog-instrumentations/src/azure-event-hubs.js +2 -2
- package/packages/datadog-instrumentations/src/azure-functions.js +1 -1
- package/packages/datadog-instrumentations/src/azure-service-bus.js +1 -1
- package/packages/datadog-instrumentations/src/body-parser.js +2 -2
- package/packages/datadog-instrumentations/src/bunyan.js +1 -1
- package/packages/datadog-instrumentations/src/cassandra-driver.js +1 -1
- package/packages/datadog-instrumentations/src/child_process.js +7 -7
- package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +17 -16
- package/packages/datadog-instrumentations/src/cookie-parser.js +1 -1
- package/packages/datadog-instrumentations/src/couchbase.js +8 -6
- package/packages/datadog-instrumentations/src/crypto.js +1 -1
- package/packages/datadog-instrumentations/src/cucumber.js +19 -19
- package/packages/datadog-instrumentations/src/cypress.js +1 -1
- package/packages/datadog-instrumentations/src/dns.js +2 -2
- package/packages/datadog-instrumentations/src/elasticsearch.js +2 -2
- package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +2 -2
- package/packages/datadog-instrumentations/src/express-session.js +1 -1
- package/packages/datadog-instrumentations/src/express.js +4 -4
- package/packages/datadog-instrumentations/src/fastify.js +1 -1
- package/packages/datadog-instrumentations/src/fetch.js +2 -2
- package/packages/datadog-instrumentations/src/fs.js +7 -7
- package/packages/datadog-instrumentations/src/generic-pool.js +2 -2
- package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +8 -8
- package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +4 -4
- package/packages/datadog-instrumentations/src/google-genai.js +1 -1
- package/packages/datadog-instrumentations/src/graphql.js +10 -10
- package/packages/datadog-instrumentations/src/grpc/client.js +9 -13
- package/packages/datadog-instrumentations/src/grpc/types.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/bundler-register.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/check-require-cache.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/extract-package-and-module-path.js +2 -2
- package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/register.js +7 -7
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/langchain.js +55 -55
- package/packages/datadog-instrumentations/src/helpers/rewriter/transforms.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/router-helper.js +7 -7
- package/packages/datadog-instrumentations/src/helpers/shared-utils.js +1 -1
- package/packages/datadog-instrumentations/src/hono.js +6 -6
- package/packages/datadog-instrumentations/src/http/client.js +1 -1
- package/packages/datadog-instrumentations/src/http/server.js +4 -4
- package/packages/datadog-instrumentations/src/http2/server.js +1 -1
- package/packages/datadog-instrumentations/src/ioredis.js +1 -1
- package/packages/datadog-instrumentations/src/iovalkey.js +1 -1
- package/packages/datadog-instrumentations/src/jest.js +196 -66
- package/packages/datadog-instrumentations/src/kafkajs.js +9 -8
- package/packages/datadog-instrumentations/src/knex.js +2 -2
- package/packages/datadog-instrumentations/src/koa.js +3 -1
- package/packages/datadog-instrumentations/src/ldapjs.js +1 -1
- package/packages/datadog-instrumentations/src/light-my-request.js +1 -1
- package/packages/datadog-instrumentations/src/limitd-client.js +1 -1
- package/packages/datadog-instrumentations/src/mariadb.js +1 -1
- package/packages/datadog-instrumentations/src/memcached.js +1 -1
- package/packages/datadog-instrumentations/src/mocha/common.js +3 -3
- package/packages/datadog-instrumentations/src/mocha/main.js +33 -24
- package/packages/datadog-instrumentations/src/mocha/utils.js +15 -11
- package/packages/datadog-instrumentations/src/mocha/worker.js +4 -4
- package/packages/datadog-instrumentations/src/moleculer/server.js +1 -1
- package/packages/datadog-instrumentations/src/mongodb-core.js +3 -3
- package/packages/datadog-instrumentations/src/mongodb.js +7 -7
- package/packages/datadog-instrumentations/src/mongoose.js +10 -10
- package/packages/datadog-instrumentations/src/mquery.js +6 -6
- package/packages/datadog-instrumentations/src/multer.js +1 -1
- package/packages/datadog-instrumentations/src/mysql.js +1 -1
- package/packages/datadog-instrumentations/src/net.js +6 -6
- package/packages/datadog-instrumentations/src/next.js +6 -6
- package/packages/datadog-instrumentations/src/nyc.js +34 -2
- package/packages/datadog-instrumentations/src/openai.js +24 -24
- package/packages/datadog-instrumentations/src/oracledb.js +2 -2
- package/packages/datadog-instrumentations/src/otel-sdk-trace.js +1 -1
- package/packages/datadog-instrumentations/src/passport-http.js +1 -1
- package/packages/datadog-instrumentations/src/passport-local.js +1 -1
- package/packages/datadog-instrumentations/src/passport-utils.js +1 -1
- package/packages/datadog-instrumentations/src/passport.js +1 -1
- package/packages/datadog-instrumentations/src/pg.js +3 -3
- package/packages/datadog-instrumentations/src/pino.js +2 -2
- package/packages/datadog-instrumentations/src/playwright.js +59 -59
- package/packages/datadog-instrumentations/src/prisma.js +216 -75
- package/packages/datadog-instrumentations/src/promise-js.js +1 -1
- package/packages/datadog-instrumentations/src/promise.js +1 -1
- package/packages/datadog-instrumentations/src/protobufjs.js +6 -6
- package/packages/datadog-instrumentations/src/q.js +2 -2
- package/packages/datadog-instrumentations/src/redis.js +2 -2
- package/packages/datadog-instrumentations/src/rhea.js +5 -5
- package/packages/datadog-instrumentations/src/router.js +8 -8
- package/packages/datadog-instrumentations/src/selenium.js +3 -3
- package/packages/datadog-instrumentations/src/sequelize.js +1 -1
- package/packages/datadog-instrumentations/src/sharedb.js +2 -2
- package/packages/datadog-instrumentations/src/tedious.js +1 -1
- package/packages/datadog-instrumentations/src/undici.js +2 -2
- package/packages/datadog-instrumentations/src/url.js +5 -5
- package/packages/datadog-instrumentations/src/vitest.js +56 -45
- package/packages/datadog-instrumentations/src/when.js +1 -1
- package/packages/datadog-instrumentations/src/winston.js +1 -1
- package/packages/datadog-instrumentations/src/ws.js +150 -41
- package/packages/datadog-plugin-aerospike/src/index.js +4 -4
- package/packages/datadog-plugin-ai/src/index.js +1 -1
- package/packages/datadog-plugin-ai/src/tracing.js +2 -2
- package/packages/datadog-plugin-ai/src/utils.js +1 -1
- package/packages/datadog-plugin-amqp10/src/consumer.js +2 -2
- package/packages/datadog-plugin-amqp10/src/index.js +1 -1
- package/packages/datadog-plugin-amqp10/src/producer.js +2 -2
- package/packages/datadog-plugin-amqplib/src/client.js +2 -2
- package/packages/datadog-plugin-amqplib/src/consumer.js +2 -2
- package/packages/datadog-plugin-amqplib/src/index.js +1 -1
- package/packages/datadog-plugin-amqplib/src/producer.js +2 -2
- package/packages/datadog-plugin-amqplib/src/util.js +1 -1
- package/packages/datadog-plugin-anthropic/src/index.js +1 -1
- package/packages/datadog-plugin-anthropic/src/tracing.js +2 -2
- package/packages/datadog-plugin-apollo/src/gateway/fetch.js +1 -1
- package/packages/datadog-plugin-apollo/src/gateway/index.js +1 -1
- package/packages/datadog-plugin-apollo/src/gateway/request.js +5 -5
- package/packages/datadog-plugin-apollo/src/index.js +1 -1
- package/packages/datadog-plugin-avsc/src/schema_iterator.js +3 -3
- package/packages/datadog-plugin-aws-sdk/src/base.js +11 -10
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +24 -24
- package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +6 -6
- package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +3 -3
- package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/s3.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +5 -5
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +12 -12
- package/packages/datadog-plugin-aws-sdk/src/util.js +1 -1
- package/packages/datadog-plugin-azure-event-hubs/src/index.js +1 -1
- package/packages/datadog-plugin-azure-event-hubs/src/producer.js +3 -3
- package/packages/datadog-plugin-azure-functions/src/index.js +11 -10
- package/packages/datadog-plugin-azure-service-bus/src/index.js +1 -1
- package/packages/datadog-plugin-azure-service-bus/src/producer.js +3 -3
- package/packages/datadog-plugin-bullmq/src/consumer.js +2 -2
- package/packages/datadog-plugin-bullmq/src/index.js +1 -1
- package/packages/datadog-plugin-bullmq/src/producer.js +11 -11
- package/packages/datadog-plugin-cassandra-driver/src/index.js +2 -2
- package/packages/datadog-plugin-child_process/src/index.js +2 -2
- package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +5 -5
- package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
- package/packages/datadog-plugin-couchbase/src/index.js +3 -3
- package/packages/datadog-plugin-cucumber/src/index.js +17 -23
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +73 -56
- package/packages/datadog-plugin-cypress/src/plugin.js +1 -1
- package/packages/datadog-plugin-cypress/src/support.js +56 -9
- package/packages/datadog-plugin-dd-trace-api/src/index.js +1 -1
- package/packages/datadog-plugin-dns/src/index.js +1 -1
- package/packages/datadog-plugin-dns/src/lookup.js +2 -2
- package/packages/datadog-plugin-dns/src/lookup_service.js +3 -3
- package/packages/datadog-plugin-dns/src/resolve.js +2 -2
- package/packages/datadog-plugin-dns/src/reverse.js +2 -2
- package/packages/datadog-plugin-elasticsearch/src/index.js +2 -2
- package/packages/datadog-plugin-express/src/index.js +1 -1
- package/packages/datadog-plugin-fastify/src/index.js +1 -1
- package/packages/datadog-plugin-fs/src/index.js +2 -2
- package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +2 -2
- package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +10 -10
- package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +1 -1
- package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +11 -10
- package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +6 -6
- package/packages/datadog-plugin-google-cloud-vertexai/src/index.js +1 -1
- package/packages/datadog-plugin-google-cloud-vertexai/src/tracing.js +2 -2
- package/packages/datadog-plugin-google-cloud-vertexai/src/utils.js +1 -1
- package/packages/datadog-plugin-google-genai/src/index.js +1 -1
- package/packages/datadog-plugin-google-genai/src/tracing.js +2 -2
- package/packages/datadog-plugin-graphql/src/execute.js +2 -2
- package/packages/datadog-plugin-graphql/src/index.js +2 -2
- package/packages/datadog-plugin-graphql/src/parse.js +1 -1
- package/packages/datadog-plugin-graphql/src/resolve.js +6 -6
- package/packages/datadog-plugin-graphql/src/utils.js +1 -1
- package/packages/datadog-plugin-graphql/src/validate.js +2 -2
- package/packages/datadog-plugin-grpc/src/client.js +3 -3
- package/packages/datadog-plugin-grpc/src/index.js +1 -1
- package/packages/datadog-plugin-grpc/src/server.js +3 -3
- package/packages/datadog-plugin-grpc/src/util.js +2 -2
- package/packages/datadog-plugin-http/src/client.js +10 -10
- package/packages/datadog-plugin-http/src/index.js +1 -1
- package/packages/datadog-plugin-http/src/server.js +23 -8
- package/packages/datadog-plugin-http2/src/client.js +6 -6
- package/packages/datadog-plugin-http2/src/index.js +1 -1
- package/packages/datadog-plugin-http2/src/server.js +1 -1
- package/packages/datadog-plugin-jest/src/index.js +67 -31
- package/packages/datadog-plugin-jest/src/util.js +8 -2
- package/packages/datadog-plugin-kafkajs/src/consumer.js +5 -5
- package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
- package/packages/datadog-plugin-kafkajs/src/producer.js +5 -5
- package/packages/datadog-plugin-kafkajs/src/utils.js +1 -1
- package/packages/datadog-plugin-langchain/src/tokens.js +2 -2
- package/packages/datadog-plugin-langchain/src/tracing.js +4 -4
- package/packages/datadog-plugin-memcached/src/index.js +2 -2
- package/packages/datadog-plugin-mocha/src/index.js +15 -27
- package/packages/datadog-plugin-moleculer/src/client.js +1 -1
- package/packages/datadog-plugin-moleculer/src/index.js +1 -1
- package/packages/datadog-plugin-moleculer/src/server.js +2 -2
- package/packages/datadog-plugin-moleculer/src/util.js +1 -1
- package/packages/datadog-plugin-mongodb-core/src/index.js +5 -5
- package/packages/datadog-plugin-mysql/src/index.js +2 -2
- package/packages/datadog-plugin-net/src/ipc.js +2 -2
- package/packages/datadog-plugin-net/src/tcp.js +4 -4
- package/packages/datadog-plugin-next/src/index.js +4 -4
- package/packages/datadog-plugin-nyc/src/index.js +60 -0
- package/packages/datadog-plugin-openai/src/index.js +1 -1
- package/packages/datadog-plugin-openai/src/services.js +3 -3
- package/packages/datadog-plugin-openai/src/stream-helpers.js +1 -1
- package/packages/datadog-plugin-openai/src/tracing.js +10 -10
- package/packages/datadog-plugin-oracledb/src/connection-parser.js +1 -1
- package/packages/datadog-plugin-oracledb/src/index.js +1 -1
- package/packages/datadog-plugin-pg/src/index.js +2 -2
- package/packages/datadog-plugin-playwright/src/index.js +22 -19
- package/packages/datadog-plugin-prisma/src/datadog-tracing-helper.js +118 -0
- package/packages/datadog-plugin-prisma/src/index.js +132 -10
- package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +3 -3
- package/packages/datadog-plugin-redis/src/index.js +2 -2
- package/packages/datadog-plugin-restify/src/index.js +1 -1
- package/packages/datadog-plugin-rhea/src/consumer.js +2 -2
- package/packages/datadog-plugin-rhea/src/index.js +1 -1
- package/packages/datadog-plugin-rhea/src/producer.js +2 -2
- package/packages/datadog-plugin-router/src/index.js +31 -22
- package/packages/datadog-plugin-selenium/src/index.js +2 -2
- package/packages/datadog-plugin-sharedb/src/index.js +2 -2
- package/packages/datadog-plugin-tedious/src/index.js +2 -2
- package/packages/datadog-plugin-undici/src/index.js +5 -5
- package/packages/datadog-plugin-vitest/src/index.js +42 -25
- package/packages/datadog-plugin-ws/src/close.js +10 -11
- package/packages/datadog-plugin-ws/src/index.js +1 -1
- package/packages/datadog-plugin-ws/src/producer.js +8 -9
- package/packages/datadog-plugin-ws/src/receiver.js +8 -9
- package/packages/datadog-plugin-ws/src/server.js +25 -12
- package/packages/datadog-plugin-ws/src/util.js +48 -16
- package/packages/datadog-shimmer/src/shimmer.js +3 -3
- package/packages/dd-trace/index.js +2 -2
- package/packages/dd-trace/src/agent/info.js +2 -2
- package/packages/dd-trace/src/agent/url.js +1 -1
- package/packages/dd-trace/src/aiguard/client.js +3 -3
- package/packages/dd-trace/src/aiguard/sdk.js +6 -6
- package/packages/dd-trace/src/aiguard/tags.js +1 -1
- package/packages/dd-trace/src/analytics_sampler.js +1 -1
- package/packages/dd-trace/src/appsec/activation.js +1 -1
- package/packages/dd-trace/src/appsec/addresses.js +1 -1
- package/packages/dd-trace/src/appsec/api_security_sampler.js +1 -1
- package/packages/dd-trace/src/appsec/blocked_templates.js +1 -1
- package/packages/dd-trace/src/appsec/blocking.js +5 -5
- package/packages/dd-trace/src/appsec/channels.js +1 -1
- package/packages/dd-trace/src/appsec/graphql.js +13 -13
- package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-base-analyzer.js +6 -5
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +2 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-rule-type.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +148 -148
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +148 -148
- package/packages/dd-trace/src/appsec/iast/analyzers/index.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +7 -8
- package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +2 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/set-cookies-header-interceptor.js +2 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +2 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +3 -3
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-cipher-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-hash-analyzer.js +2 -2
- package/packages/dd-trace/src/appsec/iast/context/context-plugin.js +3 -3
- package/packages/dd-trace/src/appsec/iast/iast-context.js +6 -3
- package/packages/dd-trace/src/appsec/iast/iast-plugin.js +17 -9
- package/packages/dd-trace/src/appsec/iast/index.js +2 -2
- package/packages/dd-trace/src/appsec/iast/overhead-controller.js +9 -9
- package/packages/dd-trace/src/appsec/iast/path-line.js +7 -6
- package/packages/dd-trace/src/appsec/iast/security-controls/index.js +11 -11
- package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +49 -17
- package/packages/dd-trace/src/appsec/iast/tags.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/constants.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/csi-methods.js +2 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/filter.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +2 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +3 -6
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +2 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +5 -5
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +4 -4
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +5 -5
- package/packages/dd-trace/src/appsec/iast/taint-tracking/secure-marks.js +6 -4
- package/packages/dd-trace/src/appsec/iast/taint-tracking/source-types.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +8 -8
- package/packages/dd-trace/src/appsec/iast/telemetry/iast-metric.js +4 -4
- package/packages/dd-trace/src/appsec/iast/telemetry/namespaces.js +2 -2
- package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +6 -6
- package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +2 -2
- package/packages/dd-trace/src/appsec/iast/utils.js +3 -3
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/constants.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/range-utils.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/hardcoded-password-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +6 -6
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/tainted-range-based-sensitive-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +8 -8
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +12 -11
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +5 -5
- package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +4 -4
- package/packages/dd-trace/src/appsec/index.js +20 -22
- package/packages/dd-trace/src/appsec/rasp/command_injection.js +3 -3
- package/packages/dd-trace/src/appsec/rasp/fs-plugin.js +4 -4
- package/packages/dd-trace/src/appsec/rasp/index.js +2 -2
- package/packages/dd-trace/src/appsec/rasp/lfi.js +5 -5
- package/packages/dd-trace/src/appsec/rasp/sql_injection.js +2 -2
- package/packages/dd-trace/src/appsec/rasp/ssrf.js +1 -1
- package/packages/dd-trace/src/appsec/rasp/utils.js +4 -4
- package/packages/dd-trace/src/appsec/rc-products.js +1 -1
- package/packages/dd-trace/src/appsec/remote_config.js +3 -3
- package/packages/dd-trace/src/appsec/reporter.js +11 -11
- package/packages/dd-trace/src/appsec/rule_manager.js +1 -1
- package/packages/dd-trace/src/appsec/sdk/index.js +1 -1
- package/packages/dd-trace/src/appsec/sdk/set_user.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/track_event.js +7 -7
- package/packages/dd-trace/src/appsec/sdk/user_blocking.js +1 -1
- package/packages/dd-trace/src/appsec/sdk/utils.js +1 -1
- package/packages/dd-trace/src/appsec/stack_trace.js +5 -5
- package/packages/dd-trace/src/appsec/telemetry/common.js +3 -3
- package/packages/dd-trace/src/appsec/telemetry/index.js +5 -5
- package/packages/dd-trace/src/appsec/telemetry/rasp.js +3 -3
- package/packages/dd-trace/src/appsec/telemetry/user.js +4 -4
- package/packages/dd-trace/src/appsec/telemetry/waf.js +3 -3
- package/packages/dd-trace/src/appsec/user_tracking.js +7 -7
- package/packages/dd-trace/src/appsec/waf/diagnostics.js +2 -2
- package/packages/dd-trace/src/appsec/waf/index.js +1 -1
- package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +2 -2
- package/packages/dd-trace/src/azure_metadata.js +16 -9
- package/packages/dd-trace/src/baggage.js +1 -1
- package/packages/dd-trace/src/ci-visibility/coverage-report-discovery.js +82 -0
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +5 -5
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +9 -9
- package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +9 -9
- package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +8 -7
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +4 -3
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +5 -3
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +2 -0
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +4 -3
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +37 -11
- package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +22 -22
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +20 -1
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +1 -1
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +8 -8
- package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +3 -3
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +17 -12
- package/packages/dd-trace/src/ci-visibility/requests/upload-coverage-report.js +107 -0
- package/packages/dd-trace/src/ci-visibility/telemetry.js +38 -2
- package/packages/dd-trace/src/ci-visibility/test-api-manual/test-api-manual-plugin.js +1 -1
- package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +50 -7
- package/packages/dd-trace/src/ci-visibility/test-optimization-cache.js +61 -0
- package/packages/dd-trace/src/config/defaults.js +1 -1
- package/packages/dd-trace/src/config/git_properties.js +1 -1
- package/packages/dd-trace/src/config/helper.js +2 -2
- package/packages/dd-trace/src/config/index.js +612 -622
- package/packages/dd-trace/src/config/remote_config.js +1 -1
- package/packages/dd-trace/src/config/stable.js +2 -2
- package/packages/dd-trace/src/config/supported-configurations.json +1 -0
- package/packages/dd-trace/src/constants.js +3 -3
- package/packages/dd-trace/src/crashtracking/crashtracker.js +6 -6
- package/packages/dd-trace/src/datastreams/checkpointer.js +1 -1
- package/packages/dd-trace/src/datastreams/context.js +1 -1
- package/packages/dd-trace/src/datastreams/encoding.js +1 -1
- package/packages/dd-trace/src/datastreams/fnv.js +1 -1
- package/packages/dd-trace/src/datastreams/index.js +8 -8
- package/packages/dd-trace/src/datastreams/pathway.js +5 -3
- package/packages/dd-trace/src/datastreams/processor.js +14 -12
- package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +27 -25
- package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +1 -1
- package/packages/dd-trace/src/datastreams/size.js +3 -3
- package/packages/dd-trace/src/datastreams/writer.js +3 -3
- package/packages/dd-trace/src/debugger/config.js +2 -1
- package/packages/dd-trace/src/debugger/constants.js +7 -0
- package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +14 -10
- package/packages/dd-trace/src/debugger/devtools_client/condition.js +2 -2
- package/packages/dd-trace/src/debugger/devtools_client/config.js +4 -5
- package/packages/dd-trace/src/debugger/devtools_client/defaults.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/index.js +32 -25
- package/packages/dd-trace/src/debugger/devtools_client/inspector_promises_polyfill.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/log.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/send.js +54 -10
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +94 -37
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +4 -4
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +7 -7
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +2 -2
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/symbols.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot-pruner.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +10 -1
- package/packages/dd-trace/src/debugger/devtools_client/state.js +65 -8
- package/packages/dd-trace/src/debugger/devtools_client/status.js +9 -8
- package/packages/dd-trace/src/debugger/index.js +95 -37
- package/packages/dd-trace/src/dogstatsd.js +14 -9
- package/packages/dd-trace/src/encode/0.4.js +7 -6
- package/packages/dd-trace/src/encode/agentless-ci-visibility.js +8 -8
- package/packages/dd-trace/src/encode/coverage-ci-visibility.js +3 -3
- package/packages/dd-trace/src/encode/span-stats.js +2 -2
- package/packages/dd-trace/src/encode/tags-processors.js +1 -1
- package/packages/dd-trace/src/exporters/agent/index.js +1 -1
- package/packages/dd-trace/src/exporters/agent/writer.js +2 -2
- package/packages/dd-trace/src/exporters/common/agents.js +1 -1
- package/packages/dd-trace/src/exporters/common/buffering-exporter.js +2 -2
- package/packages/dd-trace/src/exporters/common/docker.js +11 -7
- package/packages/dd-trace/src/exporters/common/request.js +41 -21
- package/packages/dd-trace/src/exporters/common/url-to-http-options-polyfill.js +2 -2
- package/packages/dd-trace/src/exporters/common/writer.js +2 -0
- package/packages/dd-trace/src/exporters/span-stats/index.js +1 -1
- package/packages/dd-trace/src/exporters/span-stats/writer.js +3 -3
- package/packages/dd-trace/src/external-logger/src/index.js +4 -4
- package/packages/dd-trace/src/flare/index.js +3 -3
- package/packages/dd-trace/src/guardrails/telemetry.js +1 -1
- package/packages/dd-trace/src/heap_snapshots.js +1 -1
- package/packages/dd-trace/src/id.js +2 -2
- package/packages/dd-trace/src/iitm.js +1 -1
- package/packages/dd-trace/src/lambda/context.js +27 -0
- package/packages/dd-trace/src/lambda/handler.js +6 -19
- package/packages/dd-trace/src/lambda/runtime/errors.js +1 -1
- package/packages/dd-trace/src/lambda/runtime/ritm.js +3 -3
- package/packages/dd-trace/src/llmobs/constants/tags.js +1 -1
- package/packages/dd-trace/src/llmobs/constants/text.js +1 -1
- package/packages/dd-trace/src/llmobs/constants/writers.js +1 -1
- package/packages/dd-trace/src/llmobs/index.js +2 -4
- package/packages/dd-trace/src/llmobs/noop.js +2 -2
- package/packages/dd-trace/src/llmobs/plugins/ai/index.js +8 -8
- package/packages/dd-trace/src/llmobs/plugins/ai/util.js +2 -2
- package/packages/dd-trace/src/llmobs/plugins/anthropic.js +5 -5
- package/packages/dd-trace/src/llmobs/plugins/base.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +8 -8
- package/packages/dd-trace/src/llmobs/plugins/genai/index.js +2 -2
- package/packages/dd-trace/src/llmobs/plugins/genai/util.js +15 -15
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +2 -2
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +5 -5
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +3 -3
- package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/openai/index.js +17 -17
- package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +3 -3
- package/packages/dd-trace/src/llmobs/plugins/vertexai.js +6 -6
- package/packages/dd-trace/src/llmobs/sdk.js +11 -11
- package/packages/dd-trace/src/llmobs/span_processor.js +6 -6
- package/packages/dd-trace/src/llmobs/tagger.js +4 -4
- package/packages/dd-trace/src/llmobs/telemetry.js +8 -8
- package/packages/dd-trace/src/llmobs/util.js +1 -1
- package/packages/dd-trace/src/llmobs/writers/base.js +9 -9
- package/packages/dd-trace/src/llmobs/writers/evaluations.js +5 -5
- package/packages/dd-trace/src/llmobs/writers/spans.js +3 -3
- package/packages/dd-trace/src/llmobs/writers/util.js +1 -1
- package/packages/dd-trace/src/log/channels.js +2 -2
- package/packages/dd-trace/src/log/index.js +2 -2
- package/packages/dd-trace/src/log/log.js +1 -1
- package/packages/dd-trace/src/log/writer.js +2 -6
- package/packages/dd-trace/src/noop/span.js +2 -2
- package/packages/dd-trace/src/openfeature/constants/constants.js +1 -1
- package/packages/dd-trace/src/openfeature/flagging_provider.js +4 -4
- package/packages/dd-trace/src/openfeature/index.js +2 -2
- package/packages/dd-trace/src/openfeature/noop.js +3 -3
- package/packages/dd-trace/src/openfeature/remote_config.js +1 -1
- package/packages/dd-trace/src/openfeature/writers/base.js +12 -12
- package/packages/dd-trace/src/openfeature/writers/exposures.js +10 -10
- package/packages/dd-trace/src/openfeature/writers/util.js +1 -1
- package/packages/dd-trace/src/opentelemetry/context_manager.js +48 -29
- package/packages/dd-trace/src/opentelemetry/logs/index.js +2 -2
- package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +2 -2
- package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +10 -10
- package/packages/dd-trace/src/opentelemetry/metrics/constants.js +3 -3
- package/packages/dd-trace/src/opentelemetry/metrics/index.js +2 -2
- package/packages/dd-trace/src/opentelemetry/metrics/instruments.js +3 -3
- package/packages/dd-trace/src/opentelemetry/metrics/meter.js +1 -1
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +11 -11
- package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +18 -18
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +6 -6
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +10 -7
- package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +3 -3
- package/packages/dd-trace/src/opentelemetry/span.js +8 -8
- package/packages/dd-trace/src/opentelemetry/span_context.js +1 -1
- package/packages/dd-trace/src/opentelemetry/span_processor.js +1 -1
- package/packages/dd-trace/src/opentelemetry/tracer.js +4 -4
- package/packages/dd-trace/src/opentracing/propagation/log.js +2 -2
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +14 -12
- package/packages/dd-trace/src/opentracing/propagation/text_map_dsm.js +2 -0
- package/packages/dd-trace/src/opentracing/span.js +20 -20
- package/packages/dd-trace/src/opentracing/span_context.js +3 -3
- package/packages/dd-trace/src/opentracing/tracer.js +3 -3
- package/packages/dd-trace/src/payload-tagging/config/index.js +1 -1
- package/packages/dd-trace/src/payload-tagging/index.js +1 -1
- package/packages/dd-trace/src/payload-tagging/tagging.js +2 -2
- package/packages/dd-trace/src/plugin_manager.js +6 -6
- package/packages/dd-trace/src/plugins/apollo.js +4 -4
- package/packages/dd-trace/src/plugins/ci_plugin.js +164 -37
- package/packages/dd-trace/src/plugins/database.js +1 -1
- package/packages/dd-trace/src/plugins/index.js +1 -1
- package/packages/dd-trace/src/plugins/log_plugin.js +2 -2
- package/packages/dd-trace/src/plugins/outbound.js +9 -8
- package/packages/dd-trace/src/plugins/plugin.js +17 -7
- package/packages/dd-trace/src/plugins/producer.js +6 -5
- package/packages/dd-trace/src/plugins/tracing.js +37 -8
- package/packages/dd-trace/src/plugins/util/ci.js +40 -40
- package/packages/dd-trace/src/plugins/util/env.js +2 -2
- package/packages/dd-trace/src/plugins/util/git-cache.js +2 -2
- package/packages/dd-trace/src/plugins/util/git.js +46 -47
- package/packages/dd-trace/src/plugins/util/inferred_proxy.js +6 -6
- package/packages/dd-trace/src/plugins/util/ip_extractor.js +3 -3
- package/packages/dd-trace/src/plugins/util/llm.js +1 -1
- package/packages/dd-trace/src/plugins/util/stacktrace.js +3 -3
- package/packages/dd-trace/src/plugins/util/tags.js +1 -1
- package/packages/dd-trace/src/plugins/util/test.js +49 -41
- package/packages/dd-trace/src/plugins/util/url.js +1 -1
- package/packages/dd-trace/src/plugins/util/urlfilter.js +1 -1
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +2 -2
- package/packages/dd-trace/src/plugins/util/web.js +13 -12
- package/packages/dd-trace/src/priority_sampler.js +4 -4
- package/packages/dd-trace/src/process-tags/index.js +2 -2
- package/packages/dd-trace/src/profiler.js +1 -1
- package/packages/dd-trace/src/profiling/config.js +14 -22
- package/packages/dd-trace/src/profiling/constants.js +2 -2
- package/packages/dd-trace/src/profiling/exporter_cli.js +3 -3
- package/packages/dd-trace/src/profiling/exporters/agent.js +28 -29
- package/packages/dd-trace/src/profiling/exporters/event_serializer.js +8 -8
- package/packages/dd-trace/src/profiling/index.js +1 -1
- package/packages/dd-trace/src/profiling/libuv-size.js +1 -1
- package/packages/dd-trace/src/profiling/loggers/console.js +1 -1
- package/packages/dd-trace/src/profiling/profiler.js +23 -23
- package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +1 -1
- package/packages/dd-trace/src/profiling/profilers/event_plugins/fs.js +3 -3
- package/packages/dd-trace/src/profiling/profilers/events.js +27 -19
- package/packages/dd-trace/src/profiling/profilers/shared.js +2 -2
- package/packages/dd-trace/src/profiling/profilers/wall.js +4 -4
- package/packages/dd-trace/src/profiling/tagger.js +1 -1
- package/packages/dd-trace/src/profiling/webspan-utils.js +2 -2
- package/packages/dd-trace/src/proxy.js +13 -13
- package/packages/dd-trace/src/remote_config/apply_states.js +1 -1
- package/packages/dd-trace/src/remote_config/index.js +15 -15
- package/packages/dd-trace/src/remote_config/scheduler.js +1 -1
- package/packages/dd-trace/src/ritm.js +1 -1
- package/packages/dd-trace/src/runtime_metrics/index.js +2 -2
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +3 -3
- package/packages/dd-trace/src/serverless.js +1 -1
- package/packages/dd-trace/src/service-naming/extra-services.js +1 -1
- package/packages/dd-trace/src/service-naming/index.js +1 -1
- package/packages/dd-trace/src/service-naming/schemas/v0/graphql.js +3 -3
- package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +25 -25
- package/packages/dd-trace/src/service-naming/schemas/v0/serverless.js +3 -3
- package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +18 -18
- package/packages/dd-trace/src/service-naming/schemas/v0/web.js +23 -23
- package/packages/dd-trace/src/service-naming/schemas/v0/websocket.js +9 -9
- package/packages/dd-trace/src/service-naming/schemas/v1/graphql.js +3 -3
- package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +21 -21
- package/packages/dd-trace/src/service-naming/schemas/v1/serverless.js +3 -3
- package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +17 -17
- package/packages/dd-trace/src/service-naming/schemas/v1/web.js +23 -23
- package/packages/dd-trace/src/service-naming/schemas/v1/websocket.js +9 -9
- package/packages/dd-trace/src/span_format.js +4 -4
- package/packages/dd-trace/src/span_sampler.js +1 -1
- package/packages/dd-trace/src/span_stats.js +11 -11
- package/packages/dd-trace/src/spanleak.js +1 -1
- package/packages/dd-trace/src/standalone/index.js +1 -1
- package/packages/dd-trace/src/standalone/product.js +2 -2
- package/packages/dd-trace/src/standalone/tracesource.js +1 -1
- package/packages/dd-trace/src/startup-log.js +3 -2
- package/packages/dd-trace/src/tagger.js +3 -1
- package/packages/dd-trace/src/telemetry/dependencies.js +4 -4
- package/packages/dd-trace/src/telemetry/endpoints.js +4 -4
- package/packages/dd-trace/src/telemetry/index.js +1 -1
- package/packages/dd-trace/src/telemetry/logs/index.js +2 -2
- package/packages/dd-trace/src/telemetry/logs/log-collector.js +2 -2
- package/packages/dd-trace/src/telemetry/metrics.js +6 -6
- package/packages/dd-trace/src/telemetry/send-data.js +5 -5
- package/packages/dd-trace/src/telemetry/telemetry.js +10 -10
- package/packages/dd-trace/src/tracer.js +3 -2
- package/packages/dd-trace/src/util.js +1 -1
- package/scripts/preinstall.js +1 -1
- package/vendor/dist/@datadog/sketches-js/index.js +1 -1
- package/vendor/dist/@datadog/source-map/index.js +1 -1
- package/vendor/dist/@isaacs/ttlcache/index.js +1 -1
- package/vendor/dist/@opentelemetry/core/index.js +1 -1
- package/vendor/dist/@opentelemetry/resources/index.js +1 -1
- package/vendor/dist/astring/index.js +1 -1
- package/vendor/dist/crypto-randomuuid/index.js +1 -1
- package/vendor/dist/escape-string-regexp/index.js +1 -1
- package/vendor/dist/esquery/index.js +1 -1
- package/vendor/dist/ignore/index.js +1 -1
- package/vendor/dist/istanbul-lib-coverage/index.js +1 -1
- package/vendor/dist/jest-docblock/index.js +1 -1
- package/vendor/dist/jsonpath-plus/index.js +1 -1
- package/vendor/dist/limiter/index.js +1 -1
- package/vendor/dist/lodash.sortby/index.js +1 -1
- package/vendor/dist/lru-cache/index.js +1 -1
- package/vendor/dist/meriyah/index.js +1 -1
- package/vendor/dist/module-details-from-path/index.js +1 -1
- package/vendor/dist/mutexify/promise/index.js +1 -1
- package/vendor/dist/opentracing/index.js +1 -1
- package/vendor/dist/path-to-regexp/index.js +1 -1
- package/vendor/dist/pprof-format/index.js +1 -1
- package/vendor/dist/protobufjs/index.js +1 -1
- package/vendor/dist/protobufjs/minimal/index.js +1 -1
- package/vendor/dist/retry/index.js +1 -1
- package/vendor/dist/rfdc/index.js +1 -1
- package/vendor/dist/semifies/index.js +1 -1
- package/vendor/dist/shell-quote/index.js +1 -1
- package/vendor/dist/source-map/index.js +1 -1
- package/vendor/dist/source-map/lib/util/index.js +1 -1
- package/vendor/dist/tlhunter-sorted-set/index.js +1 -1
- package/vendor/dist/ttl-set/index.js +1 -1
- package/packages/datadog-plugin-prisma/src/client.js +0 -60
- package/packages/datadog-plugin-prisma/src/engine.js +0 -81
|
@@ -47,7 +47,7 @@ const {
|
|
|
47
47
|
getPullRequestDiff,
|
|
48
48
|
getModifiedFilesFromDiff,
|
|
49
49
|
TEST_IS_MODIFIED,
|
|
50
|
-
getPullRequestBaseBranch
|
|
50
|
+
getPullRequestBaseBranch,
|
|
51
51
|
} = require('../../dd-trace/src/plugins/util/test')
|
|
52
52
|
const { isMarkedAsUnskippable } = require('../../datadog-plugin-jest/src/util')
|
|
53
53
|
const { ORIGIN_KEY, COMPONENT } = require('../../dd-trace/src/constants')
|
|
@@ -65,7 +65,7 @@ const {
|
|
|
65
65
|
incrementCountMetric,
|
|
66
66
|
distributionMetric,
|
|
67
67
|
TELEMETRY_ITR_SKIPPED,
|
|
68
|
-
TELEMETRY_TEST_SESSION
|
|
68
|
+
TELEMETRY_TEST_SESSION,
|
|
69
69
|
} = require('../../dd-trace/src/ci-visibility/telemetry')
|
|
70
70
|
|
|
71
71
|
const {
|
|
@@ -79,14 +79,14 @@ const {
|
|
|
79
79
|
GIT_PULL_REQUEST_BASE_BRANCH_SHA,
|
|
80
80
|
GIT_COMMIT_HEAD_SHA,
|
|
81
81
|
GIT_PULL_REQUEST_BASE_BRANCH,
|
|
82
|
-
GIT_COMMIT_HEAD_MESSAGE
|
|
82
|
+
GIT_COMMIT_HEAD_MESSAGE,
|
|
83
83
|
} = require('../../dd-trace/src/plugins/util/tags')
|
|
84
84
|
const {
|
|
85
85
|
OS_VERSION,
|
|
86
86
|
OS_PLATFORM,
|
|
87
87
|
OS_ARCHITECTURE,
|
|
88
88
|
RUNTIME_NAME,
|
|
89
|
-
RUNTIME_VERSION
|
|
89
|
+
RUNTIME_VERSION,
|
|
90
90
|
} = require('../../dd-trace/src/plugins/util/env')
|
|
91
91
|
const { DD_MAJOR } = require('../../../version')
|
|
92
92
|
|
|
@@ -96,7 +96,7 @@ const CYPRESS_STATUS_TO_TEST_STATUS = {
|
|
|
96
96
|
passed: 'pass',
|
|
97
97
|
failed: 'fail',
|
|
98
98
|
pending: 'skip',
|
|
99
|
-
skipped: 'skip'
|
|
99
|
+
skipped: 'skip',
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
function getSessionStatus (summary) {
|
|
@@ -162,7 +162,7 @@ function getSkippableTests (tracer, testConfiguration) {
|
|
|
162
162
|
resolve({
|
|
163
163
|
err,
|
|
164
164
|
skippableTests,
|
|
165
|
-
correlationId
|
|
165
|
+
correlationId,
|
|
166
166
|
})
|
|
167
167
|
})
|
|
168
168
|
})
|
|
@@ -176,7 +176,7 @@ function getKnownTests (tracer, testConfiguration) {
|
|
|
176
176
|
tracer._tracer._exporter.getKnownTests(testConfiguration, (err, knownTests) => {
|
|
177
177
|
resolve({
|
|
178
178
|
err,
|
|
179
|
-
knownTests
|
|
179
|
+
knownTests,
|
|
180
180
|
})
|
|
181
181
|
})
|
|
182
182
|
})
|
|
@@ -190,7 +190,7 @@ function getTestManagementTests (tracer, testConfiguration) {
|
|
|
190
190
|
tracer._tracer._exporter.getTestManagementTests(testConfiguration, (err, testManagementTests) => {
|
|
191
191
|
resolve({
|
|
192
192
|
err,
|
|
193
|
-
testManagementTests
|
|
193
|
+
testManagementTests,
|
|
194
194
|
})
|
|
195
195
|
})
|
|
196
196
|
})
|
|
@@ -200,7 +200,7 @@ function getModifiedFiles (testEnvironmentMetadata) {
|
|
|
200
200
|
const {
|
|
201
201
|
[GIT_PULL_REQUEST_BASE_BRANCH]: pullRequestBaseBranch,
|
|
202
202
|
[GIT_PULL_REQUEST_BASE_BRANCH_SHA]: pullRequestBaseBranchSha,
|
|
203
|
-
[GIT_COMMIT_HEAD_SHA]: commitHeadSha
|
|
203
|
+
[GIT_COMMIT_HEAD_SHA]: commitHeadSha,
|
|
204
204
|
} = testEnvironmentMetadata
|
|
205
205
|
|
|
206
206
|
const baseBranchSha = pullRequestBaseBranchSha || getPullRequestBaseBranch(pullRequestBaseBranch)
|
|
@@ -271,7 +271,7 @@ class CypressPlugin {
|
|
|
271
271
|
[GIT_TAG]: tag,
|
|
272
272
|
[GIT_PULL_REQUEST_BASE_BRANCH_SHA]: pullRequestBaseSha,
|
|
273
273
|
[GIT_COMMIT_HEAD_SHA]: commitHeadSha,
|
|
274
|
-
[GIT_COMMIT_HEAD_MESSAGE]: commitHeadMessage
|
|
274
|
+
[GIT_COMMIT_HEAD_MESSAGE]: commitHeadMessage,
|
|
275
275
|
} = this.testEnvironmentMetadata
|
|
276
276
|
|
|
277
277
|
this.repositoryRoot = repositoryRoot || process.cwd()
|
|
@@ -292,7 +292,7 @@ class CypressPlugin {
|
|
|
292
292
|
tag,
|
|
293
293
|
pullRequestBaseSha,
|
|
294
294
|
commitHeadSha,
|
|
295
|
-
commitHeadMessage
|
|
295
|
+
commitHeadMessage,
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
|
|
@@ -330,8 +330,8 @@ class CypressPlugin {
|
|
|
330
330
|
isKnownTestsEnabled,
|
|
331
331
|
isTestManagementEnabled,
|
|
332
332
|
testManagementAttemptToFixRetries,
|
|
333
|
-
isImpactedTestsEnabled
|
|
334
|
-
}
|
|
333
|
+
isImpactedTestsEnabled,
|
|
334
|
+
},
|
|
335
335
|
} = libraryConfigurationResponse
|
|
336
336
|
this.isSuitesSkippingEnabled = isSuitesSkippingEnabled
|
|
337
337
|
this.isCodeCoverageEnabled = isCodeCoverageEnabled
|
|
@@ -395,16 +395,16 @@ class CypressPlugin {
|
|
|
395
395
|
tags: {
|
|
396
396
|
[COMPONENT]: TEST_FRAMEWORK_NAME,
|
|
397
397
|
...this.testEnvironmentMetadata,
|
|
398
|
-
...testSuiteSpanMetadata
|
|
398
|
+
...testSuiteSpanMetadata,
|
|
399
399
|
},
|
|
400
|
-
integrationName: TEST_FRAMEWORK_NAME
|
|
400
|
+
integrationName: TEST_FRAMEWORK_NAME,
|
|
401
401
|
})
|
|
402
402
|
}
|
|
403
403
|
|
|
404
404
|
getTestSpan ({ testName, testSuite, isUnskippable, isForcedToRun, testSourceFile, isDisabled, isQuarantined }) {
|
|
405
405
|
const testSuiteTags = {
|
|
406
406
|
[TEST_COMMAND]: this.command,
|
|
407
|
-
[TEST_MODULE]: TEST_FRAMEWORK_NAME
|
|
407
|
+
[TEST_MODULE]: TEST_FRAMEWORK_NAME,
|
|
408
408
|
}
|
|
409
409
|
if (this.testSuiteSpan) {
|
|
410
410
|
testSuiteTags[TEST_SUITE_ID] = this.testSuiteSpan.context().toSpanId()
|
|
@@ -462,9 +462,9 @@ class CypressPlugin {
|
|
|
462
462
|
[ORIGIN_KEY]: CI_APP_ORIGIN,
|
|
463
463
|
...testSpanMetadata,
|
|
464
464
|
...this.testEnvironmentMetadata,
|
|
465
|
-
...testSuiteTags
|
|
465
|
+
...testSuiteTags,
|
|
466
466
|
},
|
|
467
|
-
integrationName: TEST_FRAMEWORK_NAME
|
|
467
|
+
integrationName: TEST_FRAMEWORK_NAME,
|
|
468
468
|
})
|
|
469
469
|
}
|
|
470
470
|
|
|
@@ -473,7 +473,7 @@ class CypressPlugin {
|
|
|
473
473
|
testLevel,
|
|
474
474
|
testFramework: 'cypress',
|
|
475
475
|
isUnsupportedCIProvider: !this.ciProviderName,
|
|
476
|
-
...tags
|
|
476
|
+
...tags,
|
|
477
477
|
})
|
|
478
478
|
}
|
|
479
479
|
|
|
@@ -543,12 +543,14 @@ class CypressPlugin {
|
|
|
543
543
|
}
|
|
544
544
|
|
|
545
545
|
// `details.specs` are test files
|
|
546
|
-
details.specs
|
|
547
|
-
const
|
|
548
|
-
|
|
549
|
-
|
|
546
|
+
if (details.specs) {
|
|
547
|
+
for (const { absolute, relative } of details.specs) {
|
|
548
|
+
const isUnskippableSuite = isMarkedAsUnskippable({ path: absolute })
|
|
549
|
+
if (isUnskippableSuite) {
|
|
550
|
+
this.unskippableSuites.push(relative)
|
|
551
|
+
}
|
|
550
552
|
}
|
|
551
|
-
}
|
|
553
|
+
}
|
|
552
554
|
|
|
553
555
|
const childOf = getTestParentSpan(this.tracer)
|
|
554
556
|
|
|
@@ -573,13 +575,13 @@ class CypressPlugin {
|
|
|
573
575
|
const metadataTags = {}
|
|
574
576
|
for (const testLevel of TEST_LEVEL_EVENT_TYPES) {
|
|
575
577
|
metadataTags[testLevel] = {
|
|
576
|
-
[TEST_SESSION_NAME]: testSessionName
|
|
578
|
+
[TEST_SESSION_NAME]: testSessionName,
|
|
577
579
|
}
|
|
578
580
|
}
|
|
579
581
|
const libraryCapabilitiesTags = getLibraryCapabilitiesTags(this.constructor.id, false, this.frameworkVersion)
|
|
580
582
|
metadataTags.test = {
|
|
581
583
|
...metadataTags.test,
|
|
582
|
-
...libraryCapabilitiesTags
|
|
584
|
+
...libraryCapabilitiesTags,
|
|
583
585
|
}
|
|
584
586
|
|
|
585
587
|
this.tracer._tracer._exporter.addMetadataTags(metadataTags)
|
|
@@ -590,9 +592,9 @@ class CypressPlugin {
|
|
|
590
592
|
tags: {
|
|
591
593
|
[COMPONENT]: TEST_FRAMEWORK_NAME,
|
|
592
594
|
...this.testEnvironmentMetadata,
|
|
593
|
-
...testSessionSpanMetadata
|
|
595
|
+
...testSessionSpanMetadata,
|
|
594
596
|
},
|
|
595
|
-
integrationName: TEST_FRAMEWORK_NAME
|
|
597
|
+
integrationName: TEST_FRAMEWORK_NAME,
|
|
596
598
|
})
|
|
597
599
|
this.ciVisEvent(TELEMETRY_EVENT_CREATED, 'session')
|
|
598
600
|
|
|
@@ -601,9 +603,9 @@ class CypressPlugin {
|
|
|
601
603
|
tags: {
|
|
602
604
|
[COMPONENT]: TEST_FRAMEWORK_NAME,
|
|
603
605
|
...this.testEnvironmentMetadata,
|
|
604
|
-
...testModuleSpanMetadata
|
|
606
|
+
...testModuleSpanMetadata,
|
|
605
607
|
},
|
|
606
|
-
integrationName: TEST_FRAMEWORK_NAME
|
|
608
|
+
integrationName: TEST_FRAMEWORK_NAME,
|
|
607
609
|
})
|
|
608
610
|
this.ciVisEvent(TELEMETRY_EVENT_CREATED, 'module')
|
|
609
611
|
|
|
@@ -630,7 +632,7 @@ class CypressPlugin {
|
|
|
630
632
|
skippingType: 'test',
|
|
631
633
|
skippingCount: this.skippedTests.length,
|
|
632
634
|
hasForcedToRunSuites: this.hasForcedToRunSuites,
|
|
633
|
-
hasUnskippableSuites: this.hasUnskippableSuites
|
|
635
|
+
hasUnskippableSuites: this.hasUnskippableSuites,
|
|
634
636
|
}
|
|
635
637
|
)
|
|
636
638
|
|
|
@@ -644,7 +646,7 @@ class CypressPlugin {
|
|
|
644
646
|
this.ciVisEvent(TELEMETRY_EVENT_FINISHED, 'session')
|
|
645
647
|
incrementCountMetric(TELEMETRY_TEST_SESSION, {
|
|
646
648
|
provider: this.ciProviderName,
|
|
647
|
-
autoInjected: !!getValueFromEnvSources('DD_CIVISIBILITY_AUTO_INSTRUMENTATION_PROVIDER')
|
|
649
|
+
autoInjected: !!getValueFromEnvSources('DD_CIVISIBILITY_AUTO_INSTRUMENTATION_PROVIDER'),
|
|
648
650
|
})
|
|
649
651
|
|
|
650
652
|
finishAllTraceSpans(this.testSessionSpan)
|
|
@@ -680,19 +682,20 @@ class CypressPlugin {
|
|
|
680
682
|
log.warn('There was an error creating the test suite event.')
|
|
681
683
|
this.testSuiteSpan = this.getTestSuiteSpan({
|
|
682
684
|
testSuite: spec.relative,
|
|
683
|
-
testSuiteAbsolutePath: spec.absolute
|
|
685
|
+
testSuiteAbsolutePath: spec.absolute,
|
|
684
686
|
})
|
|
685
687
|
}
|
|
686
688
|
|
|
687
689
|
// Get tests that didn't go through `dd:afterEach`
|
|
688
690
|
// and create a skipped test span for each of them
|
|
689
|
-
|
|
691
|
+
for (const { title } of cypressTests) {
|
|
690
692
|
const cypressTestName = title.join(' ')
|
|
691
693
|
const isTestFinished = finishedTests.find(({ testName }) => cypressTestName === testName)
|
|
692
694
|
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
695
|
+
if (isTestFinished) {
|
|
696
|
+
continue
|
|
697
|
+
}
|
|
698
|
+
|
|
696
699
|
const isSkippedByItr = this.testsToSkip.find(test =>
|
|
697
700
|
cypressTestName === test.name && spec.relative === test.suite
|
|
698
701
|
)
|
|
@@ -719,7 +722,7 @@ class CypressPlugin {
|
|
|
719
722
|
}
|
|
720
723
|
|
|
721
724
|
skippedTestSpan.finish()
|
|
722
|
-
}
|
|
725
|
+
}
|
|
723
726
|
|
|
724
727
|
// Make sure that reported test statuses are the same as Cypress reports.
|
|
725
728
|
// This is not always the case, such as when an `after` hook fails:
|
|
@@ -734,13 +737,13 @@ class CypressPlugin {
|
|
|
734
737
|
return acc
|
|
735
738
|
}, {})
|
|
736
739
|
|
|
737
|
-
|
|
738
|
-
finishedTestAttempts.
|
|
740
|
+
for (const [testName, finishedTestAttempts] of Object.entries(finishedTestsByTestName)) {
|
|
741
|
+
for (const [attemptIndex, finishedTest] of finishedTestAttempts.entries()) {
|
|
739
742
|
// TODO: there could be multiple if there have been retries!
|
|
740
743
|
// potentially we need to match the test status!
|
|
741
744
|
const cypressTest = cypressTests.find(test => test.title.join(' ') === testName)
|
|
742
745
|
if (!cypressTest) {
|
|
743
|
-
|
|
746
|
+
continue
|
|
744
747
|
}
|
|
745
748
|
// finishedTests can include multiple tests with the same name if they have been retried
|
|
746
749
|
// by early flake detection. Cypress is unaware of this so .attempts does not necessarily have
|
|
@@ -766,8 +769,10 @@ class CypressPlugin {
|
|
|
766
769
|
if (cypressTest.displayError) {
|
|
767
770
|
latestError = new Error(cypressTest.displayError)
|
|
768
771
|
}
|
|
769
|
-
// Update test status
|
|
770
|
-
|
|
772
|
+
// Update test status - but NOT for quarantined tests where we intentionally
|
|
773
|
+
// report 'fail' to Datadog even though Cypress sees it as 'pass'
|
|
774
|
+
const isQuarantinedTest = finishedTest.testSpan?.context()?._tags?.[TEST_MANAGEMENT_IS_QUARANTINED] === 'true'
|
|
775
|
+
if (cypressTestStatus !== finishedTest.testStatus && !isQuarantinedTest) {
|
|
771
776
|
finishedTest.testSpan.setTag(TEST_STATUS, cypressTestStatus)
|
|
772
777
|
finishedTest.testSpan.setTag('error', latestError)
|
|
773
778
|
}
|
|
@@ -787,8 +792,8 @@ class CypressPlugin {
|
|
|
787
792
|
}
|
|
788
793
|
|
|
789
794
|
finishedTest.testSpan.finish(finishedTest.finishTime)
|
|
790
|
-
}
|
|
791
|
-
}
|
|
795
|
+
}
|
|
796
|
+
}
|
|
792
797
|
|
|
793
798
|
if (this.testSuiteSpan) {
|
|
794
799
|
const status = getSuiteStatus(stats)
|
|
@@ -817,7 +822,7 @@ class CypressPlugin {
|
|
|
817
822
|
isImpactedTestsEnabled: this.isImpactedTestsEnabled,
|
|
818
823
|
isModifiedTest: this.getIsTestModified(testSuiteAbsolutePath),
|
|
819
824
|
repositoryRoot: this.repositoryRoot,
|
|
820
|
-
isTestIsolationEnabled: this.isTestIsolationEnabled
|
|
825
|
+
isTestIsolationEnabled: this.isTestIsolationEnabled,
|
|
821
826
|
}
|
|
822
827
|
|
|
823
828
|
if (this.testSuiteSpan) {
|
|
@@ -841,11 +846,12 @@ class CypressPlugin {
|
|
|
841
846
|
return { shouldSkip: true }
|
|
842
847
|
}
|
|
843
848
|
|
|
844
|
-
//
|
|
845
|
-
|
|
846
|
-
if (!isAttemptToFix && (isDisabled || isQuarantined)) {
|
|
849
|
+
// For disabled tests (not attemptToFix), skip them
|
|
850
|
+
if (!isAttemptToFix && isDisabled) {
|
|
847
851
|
return { shouldSkip: true }
|
|
848
852
|
}
|
|
853
|
+
// Quarantined tests (not attemptToFix) run normally but their failures are caught
|
|
854
|
+
// by Cypress.on('fail') in support.js and suppressed, so Cypress sees them as passed
|
|
849
855
|
|
|
850
856
|
if (!this.activeTestSpan) {
|
|
851
857
|
this.activeTestSpan = this.getTestSpan({
|
|
@@ -854,7 +860,7 @@ class CypressPlugin {
|
|
|
854
860
|
isUnskippable,
|
|
855
861
|
isForcedToRun,
|
|
856
862
|
isDisabled,
|
|
857
|
-
isQuarantined
|
|
863
|
+
isQuarantined,
|
|
858
864
|
})
|
|
859
865
|
}
|
|
860
866
|
|
|
@@ -876,7 +882,8 @@ class CypressPlugin {
|
|
|
876
882
|
isNew,
|
|
877
883
|
isEfdRetry,
|
|
878
884
|
isAttemptToFix,
|
|
879
|
-
isModified
|
|
885
|
+
isModified,
|
|
886
|
+
isQuarantined: isQuarantinedFromSupport,
|
|
880
887
|
} = test
|
|
881
888
|
if (coverage && this.isCodeCoverageEnabled && this.tracer._tracer._exporter?.exportCoverage) {
|
|
882
889
|
const coverageFiles = getCoveredFilenamesFromCoverage(coverage)
|
|
@@ -892,7 +899,7 @@ class CypressPlugin {
|
|
|
892
899
|
sessionId: _traceId,
|
|
893
900
|
suiteId: _spanId,
|
|
894
901
|
testId: this.activeTestSpan.context()._spanId,
|
|
895
|
-
files: relativeCoverageFiles
|
|
902
|
+
files: relativeCoverageFiles,
|
|
896
903
|
}
|
|
897
904
|
this.tracer._tracer._exporter.exportCoverage(formattedCoverage)
|
|
898
905
|
}
|
|
@@ -949,13 +956,19 @@ class CypressPlugin {
|
|
|
949
956
|
}
|
|
950
957
|
}
|
|
951
958
|
|
|
959
|
+
// Ensure quarantined tests reported from support.js are tagged
|
|
960
|
+
// (This catches cases where the test ran but failed, but Cypress saw it as passed)
|
|
961
|
+
if (isQuarantinedFromSupport) {
|
|
962
|
+
this.activeTestSpan.setTag(TEST_MANAGEMENT_IS_QUARANTINED, 'true')
|
|
963
|
+
}
|
|
964
|
+
|
|
952
965
|
const finishedTest = {
|
|
953
966
|
testName,
|
|
954
967
|
testStatus,
|
|
955
968
|
finishTime: this.activeTestSpan._getTime(), // we store the finish time here
|
|
956
969
|
testSpan: this.activeTestSpan,
|
|
957
970
|
isEfdRetry,
|
|
958
|
-
isAttemptToFix
|
|
971
|
+
isAttemptToFix,
|
|
959
972
|
}
|
|
960
973
|
if (this.finishedTestsByFile[testSuite]) {
|
|
961
974
|
this.finishedTestsByFile[testSuite].push(finishedTest)
|
|
@@ -963,11 +976,15 @@ class CypressPlugin {
|
|
|
963
976
|
this.finishedTestsByFile[testSuite] = [finishedTest]
|
|
964
977
|
}
|
|
965
978
|
// test spans are finished at after:spec
|
|
979
|
+
const activeSpanTags = this.activeTestSpan.context()._tags
|
|
966
980
|
this.ciVisEvent(TELEMETRY_EVENT_FINISHED, 'test', {
|
|
967
|
-
hasCodeOwners: !!
|
|
981
|
+
hasCodeOwners: !!activeSpanTags[TEST_CODE_OWNERS],
|
|
968
982
|
isNew,
|
|
969
983
|
isRum: isRUMActive,
|
|
970
|
-
browserDriver: 'cypress'
|
|
984
|
+
browserDriver: 'cypress',
|
|
985
|
+
isQuarantined: isQuarantinedFromSupport,
|
|
986
|
+
isModified,
|
|
987
|
+
isDisabled: activeSpanTags[TEST_MANAGEMENT_IS_DISABLED] === 'true',
|
|
971
988
|
})
|
|
972
989
|
this.activeTestSpan = null
|
|
973
990
|
|
|
@@ -983,7 +1000,7 @@ class CypressPlugin {
|
|
|
983
1000
|
// eslint-disable-next-line no-console
|
|
984
1001
|
console.log(`[datadog] ${message}`)
|
|
985
1002
|
return null
|
|
986
|
-
}
|
|
1003
|
+
},
|
|
987
1004
|
}
|
|
988
1005
|
}
|
|
989
1006
|
|
|
@@ -12,6 +12,8 @@ let isModifiedTest = false
|
|
|
12
12
|
let isTestIsolationEnabled = false
|
|
13
13
|
// Array of test names that have been retried and the reason
|
|
14
14
|
const retryReasonsByTestName = new Map()
|
|
15
|
+
// Track quarantined test errors - we catch them in Cypress.on('fail') but need to report to Datadog
|
|
16
|
+
const quarantinedTestErrors = new Map()
|
|
15
17
|
|
|
16
18
|
// We need to grab the original window as soon as possible,
|
|
17
19
|
// in case the test changes the origin. If the test does change the origin,
|
|
@@ -46,17 +48,41 @@ function getTestProperties (testName) {
|
|
|
46
48
|
return { isAttemptToFix, isDisabled, isQuarantined }
|
|
47
49
|
}
|
|
48
50
|
|
|
51
|
+
// Catch test failures for quarantined tests and suppress them
|
|
52
|
+
// By not re-throwing the error, Cypress marks the test as passed
|
|
53
|
+
// This allows quarantined tests to run but not affect the exit code
|
|
54
|
+
Cypress.on('fail', (err, runnable) => {
|
|
55
|
+
if (!isTestManagementEnabled) {
|
|
56
|
+
throw err
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const testName = runnable.fullTitle()
|
|
60
|
+
const { isQuarantined, isAttemptToFix } = getTestProperties(testName)
|
|
61
|
+
|
|
62
|
+
// For pure quarantined tests (not attemptToFix), suppress the failure
|
|
63
|
+
// This makes the test "pass" from Cypress's perspective while we still track the error
|
|
64
|
+
if (isQuarantined && !isAttemptToFix) {
|
|
65
|
+
// Store the error so we can report it to Datadog in afterEach
|
|
66
|
+
quarantinedTestErrors.set(testName, err)
|
|
67
|
+
// Don't re-throw - this prevents Cypress from marking the test as failed
|
|
68
|
+
return
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// For all other tests (including attemptToFix), let the error propagate normally
|
|
72
|
+
throw err
|
|
73
|
+
})
|
|
74
|
+
|
|
49
75
|
function getRetriedTests (test, numRetries, tags) {
|
|
50
76
|
const retriedTests = []
|
|
51
77
|
for (let retryIndex = 0; retryIndex < numRetries; retryIndex++) {
|
|
52
78
|
// TODO: signal in framework logs that this is a retry.
|
|
53
79
|
// TODO: Change it so these tests are allowed to fail.
|
|
54
80
|
const clonedTest = test.clone()
|
|
55
|
-
|
|
81
|
+
for (const tag of tags) {
|
|
56
82
|
if (tag) {
|
|
57
83
|
clonedTest[tag] = true
|
|
58
84
|
}
|
|
59
|
-
}
|
|
85
|
+
}
|
|
60
86
|
retriedTests.push(clonedTest)
|
|
61
87
|
}
|
|
62
88
|
return retriedTests
|
|
@@ -108,7 +134,7 @@ Cypress.mocha.getRunner().runTests = function (suite, fn) {
|
|
|
108
134
|
retriedTests = getRetriedTests(test, earlyFlakeDetectionNumRetries, [
|
|
109
135
|
'_ddIsModified',
|
|
110
136
|
'_ddIsEfdRetry',
|
|
111
|
-
isKnownTestsEnabled && isNewTest(test) && '_ddIsNew'
|
|
137
|
+
isKnownTestsEnabled && isNewTest(test) && '_ddIsNew',
|
|
112
138
|
])
|
|
113
139
|
} else if (isNew && isEarlyFlakeDetectionEnabled) {
|
|
114
140
|
retryMessage = 'to detect flakes because it is new'
|
|
@@ -141,7 +167,7 @@ beforeEach(function () {
|
|
|
141
167
|
|
|
142
168
|
cy.task('dd:beforeEach', {
|
|
143
169
|
testName,
|
|
144
|
-
testSuite: Cypress.mocha.getRootSuite().file
|
|
170
|
+
testSuite: Cypress.mocha.getRootSuite().file,
|
|
145
171
|
}).then(({ traceId, shouldSkip }) => {
|
|
146
172
|
Cypress.env('traceId', traceId)
|
|
147
173
|
if (shouldSkip) {
|
|
@@ -156,7 +182,7 @@ beforeEach(function () {
|
|
|
156
182
|
before(function () {
|
|
157
183
|
cy.task('dd:testSuiteStart', {
|
|
158
184
|
testSuite: Cypress.mocha.getRootSuite().file,
|
|
159
|
-
testSuiteAbsolutePath: Cypress.spec && Cypress.spec.absolute
|
|
185
|
+
testSuiteAbsolutePath: Cypress.spec && Cypress.spec.absolute,
|
|
160
186
|
}).then((suiteConfig) => {
|
|
161
187
|
if (suiteConfig) {
|
|
162
188
|
isEarlyFlakeDetectionEnabled = suiteConfig.isEarlyFlakeDetectionEnabled
|
|
@@ -185,16 +211,31 @@ after(() => {
|
|
|
185
211
|
|
|
186
212
|
afterEach(function () {
|
|
187
213
|
const currentTest = Cypress.mocha.getRunner().suite.ctx.currentTest
|
|
214
|
+
const testName = currentTest.fullTitle()
|
|
215
|
+
|
|
216
|
+
// Check if this was a quarantined test that we suppressed the failure for
|
|
217
|
+
const quarantinedError = quarantinedTestErrors.get(testName)
|
|
218
|
+
const isQuarantinedTestThatFailed = !!quarantinedError
|
|
219
|
+
|
|
220
|
+
// For quarantined tests, convert Error to a serializable format for cy.task
|
|
221
|
+
const errorToReport = isQuarantinedTestThatFailed
|
|
222
|
+
? { message: quarantinedError.message, stack: quarantinedError.stack }
|
|
223
|
+
: currentTest.err
|
|
224
|
+
|
|
188
225
|
const testInfo = {
|
|
189
|
-
testName
|
|
226
|
+
testName,
|
|
190
227
|
testSuite: Cypress.mocha.getRootSuite().file,
|
|
191
228
|
testSuiteAbsolutePath: Cypress.spec && Cypress.spec.absolute,
|
|
192
|
-
state
|
|
193
|
-
|
|
229
|
+
// For quarantined tests, report the actual state (failed) to Datadog, not what Cypress thinks (passed)
|
|
230
|
+
state: isQuarantinedTestThatFailed ? 'failed' : currentTest.state,
|
|
231
|
+
// For quarantined tests, include the actual error that was suppressed
|
|
232
|
+
error: errorToReport,
|
|
194
233
|
isNew: currentTest._ddIsNew,
|
|
195
234
|
isEfdRetry: currentTest._ddIsEfdRetry,
|
|
196
235
|
isAttemptToFix: currentTest._ddIsAttemptToFix,
|
|
197
|
-
isModified: currentTest._ddIsModified
|
|
236
|
+
isModified: currentTest._ddIsModified,
|
|
237
|
+
// Mark quarantined tests that failed so the plugin knows to tag them appropriately
|
|
238
|
+
isQuarantined: isQuarantinedTestThatFailed,
|
|
198
239
|
}
|
|
199
240
|
try {
|
|
200
241
|
testInfo.testSourceLine = Cypress.mocha.getRunner().currentRunnable.invocationDetails.line
|
|
@@ -209,5 +250,11 @@ afterEach(function () {
|
|
|
209
250
|
} catch {
|
|
210
251
|
// ignore error and continue
|
|
211
252
|
}
|
|
253
|
+
|
|
254
|
+
// Clean up the quarantined error tracking
|
|
255
|
+
if (isQuarantinedTestThatFailed) {
|
|
256
|
+
quarantinedTestErrors.delete(testName)
|
|
257
|
+
}
|
|
258
|
+
|
|
212
259
|
cy.task('dd:afterEach', { test: testInfo, coverage })
|
|
213
260
|
})
|
|
@@ -30,7 +30,7 @@ module.exports = class DdTraceApiPlugin extends Plugin {
|
|
|
30
30
|
const counter = apiMetrics.count('public_api.called', [
|
|
31
31
|
`name:${name.replaceAll(':', '.')}`,
|
|
32
32
|
'api_version:v1',
|
|
33
|
-
injectionEnabledTag
|
|
33
|
+
injectionEnabledTag,
|
|
34
34
|
])
|
|
35
35
|
|
|
36
36
|
// For v1, APIs are 1:1 with their internal equivalents, so we can just
|
|
@@ -14,11 +14,11 @@ class DNSLookupServicePlugin extends ClientPlugin {
|
|
|
14
14
|
resource: `${address}:${port}`,
|
|
15
15
|
kind: 'client',
|
|
16
16
|
meta: {
|
|
17
|
-
'dns.address': address
|
|
17
|
+
'dns.address': address,
|
|
18
18
|
},
|
|
19
19
|
metrics: {
|
|
20
|
-
'dns.port': port
|
|
21
|
-
}
|
|
20
|
+
'dns.port': port,
|
|
21
|
+
},
|
|
22
22
|
}, ctx)
|
|
23
23
|
|
|
24
24
|
return ctx.currentStore
|
|
@@ -20,8 +20,8 @@ class ElasticsearchPlugin extends DatabasePlugin {
|
|
|
20
20
|
[`${this.system}.url`]: params.path,
|
|
21
21
|
[`${this.system}.method`]: params.method,
|
|
22
22
|
[`${this.system}.body`]: body,
|
|
23
|
-
[`${this.system}.params`]: JSON.stringify(params.querystring || params.query)
|
|
24
|
-
}
|
|
23
|
+
[`${this.system}.params`]: JSON.stringify(params.querystring || params.query),
|
|
24
|
+
},
|
|
25
25
|
}, ctx)
|
|
26
26
|
|
|
27
27
|
return ctx.currentStore
|
|
@@ -37,8 +37,8 @@ class FsPlugin extends TracingPlugin {
|
|
|
37
37
|
'file.mode': mode,
|
|
38
38
|
'file.path': path || '',
|
|
39
39
|
'file.src': params.src || params.oldPath || params.existingPath || params.target,
|
|
40
|
-
'file.uid': uid || ''
|
|
41
|
-
}
|
|
40
|
+
'file.uid': uid || '',
|
|
41
|
+
},
|
|
42
42
|
}, ctx)
|
|
43
43
|
|
|
44
44
|
return ctx.currentStore
|