From 616359d3860ddb785416a7e8793d2c1567e1e19b Mon Sep 17 00:00:00 2001 From: "eric.navarro" Date: Thu, 6 Jul 2023 17:18:10 +0200 Subject: [PATCH 1/8] Add framework type checking --- packages/datadog-plugin-cypress/src/plugin.js | 5 ++++- packages/dd-trace/src/plugins/ci_plugin.js | 11 +++++++++-- packages/dd-trace/src/plugins/util/ci.js | 8 ++++++++ packages/dd-trace/src/plugins/util/test.js | 4 ++-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/packages/datadog-plugin-cypress/src/plugin.js b/packages/datadog-plugin-cypress/src/plugin.js index 2a6d209079b..d39a14ada92 100644 --- a/packages/datadog-plugin-cypress/src/plugin.js +++ b/packages/datadog-plugin-cypress/src/plugin.js @@ -22,6 +22,9 @@ const { getTestSuitePath, addIntelligentTestRunnerSpanTags } = require('../../dd-trace/src/plugins/util/test') +const { + getTestType +} = require('../../dd-trace/src/plugins/util/ci') const { ORIGIN_KEY, COMPONENT } = require('../../dd-trace/src/constants') const log = require('../../dd-trace/src/log') @@ -37,7 +40,7 @@ const CYPRESS_STATUS_TO_TEST_STATUS = { function getTestSpanMetadata (tracer, testName, testSuite, cypressConfig) { const childOf = getTestParentSpan(tracer) - const commonTags = getTestCommonTags(testName, testSuite, cypressConfig.version) + const commonTags = getTestCommonTags(testName, testSuite, cypressConfig.version, getTestType(TEST_FRAMEWORK_NAME)) return { childOf, diff --git a/packages/dd-trace/src/plugins/ci_plugin.js b/packages/dd-trace/src/plugins/ci_plugin.js index db7474618d5..a348f0810bd 100644 --- a/packages/dd-trace/src/plugins/ci_plugin.js +++ b/packages/dd-trace/src/plugins/ci_plugin.js @@ -12,8 +12,12 @@ const { TEST_MODULE_ID, TEST_SESSION_ID, TEST_COMMAND, - TEST_MODULE + TEST_MODULE, + TEST_FRAMEWORK } = require('./util/test') +const { + getTestType +} = require('./util/ci') const Plugin = require('./plugin') const { COMPONENT } = require('../constants') const log = require('../log') @@ -111,7 +115,10 @@ module.exports = class CiPlugin extends Plugin { const childOf = getTestParentSpan(this.tracer) let testTags = { - ...getTestCommonTags(testName, testSuite, this.frameworkVersion), + ...getTestCommonTags(testName, + testSuite, + this.frameworkVersion, + getTestType(this.testEnvironmentMetadata[TEST_FRAMEWORK])), [COMPONENT]: this.constructor.id, ...extraTags } diff --git a/packages/dd-trace/src/plugins/util/ci.js b/packages/dd-trace/src/plugins/util/ci.js index 31d0ca7b3c5..f815b21b94b 100644 --- a/packages/dd-trace/src/plugins/util/ci.js +++ b/packages/dd-trace/src/plugins/util/ci.js @@ -81,6 +81,13 @@ function filterSensitiveInfoFromRepository (repositoryUrl) { } } +function getTestType (frameworkName) { + if (frameworkName === 'playwright' || frameworkName === 'cypress') { + return 'browser' + } + return 'test' +} + function resolveTilde (filePath) { if (!filePath || typeof filePath !== 'string') { return '' @@ -94,6 +101,7 @@ function resolveTilde (filePath) { module.exports = { normalizeRef, + getTestType, getCIMetadata () { const { env } = process diff --git a/packages/dd-trace/src/plugins/util/test.js b/packages/dd-trace/src/plugins/util/test.js index 0cfdaf22cce..76ab35dc096 100644 --- a/packages/dd-trace/src/plugins/util/test.js +++ b/packages/dd-trace/src/plugins/util/test.js @@ -188,10 +188,10 @@ function getTestParentSpan (tracer) { }) } -function getTestCommonTags (name, suite, version) { +function getTestCommonTags (name, suite, version, testType = 'test') { return { [SPAN_TYPE]: 'test', - [TEST_TYPE]: 'test', + [TEST_TYPE]: testType, [SAMPLING_RULE_DECISION]: 1, [SAMPLING_PRIORITY]: AUTO_KEEP, [TEST_NAME]: name, From 17bc729304d51422956f8a4ea6ac75d8058ddf77 Mon Sep 17 00:00:00 2001 From: Eric Navarro <137877238+ericlaz@users.noreply.github.com> Date: Fri, 7 Jul 2023 11:40:58 +0200 Subject: [PATCH 2/8] Improve code readability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Juan Antonio Fernández de Alba --- packages/datadog-plugin-cypress/src/plugin.js | 2 +- packages/dd-trace/src/plugins/ci_plugin.js | 2 +- packages/dd-trace/src/plugins/util/ci.js | 4 ++-- packages/dd-trace/src/plugins/util/test.js | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/datadog-plugin-cypress/src/plugin.js b/packages/datadog-plugin-cypress/src/plugin.js index d39a14ada92..b15df350a12 100644 --- a/packages/datadog-plugin-cypress/src/plugin.js +++ b/packages/datadog-plugin-cypress/src/plugin.js @@ -40,7 +40,7 @@ const CYPRESS_STATUS_TO_TEST_STATUS = { function getTestSpanMetadata (tracer, testName, testSuite, cypressConfig) { const childOf = getTestParentSpan(tracer) - const commonTags = getTestCommonTags(testName, testSuite, cypressConfig.version, getTestType(TEST_FRAMEWORK_NAME)) + const commonTags = getTestCommonTags(testName, testSuite, cypressConfig.version, TEST_FRAMEWORK_NAME) return { childOf, diff --git a/packages/dd-trace/src/plugins/ci_plugin.js b/packages/dd-trace/src/plugins/ci_plugin.js index a348f0810bd..8ed1ebcf6b0 100644 --- a/packages/dd-trace/src/plugins/ci_plugin.js +++ b/packages/dd-trace/src/plugins/ci_plugin.js @@ -118,7 +118,7 @@ module.exports = class CiPlugin extends Plugin { ...getTestCommonTags(testName, testSuite, this.frameworkVersion, - getTestType(this.testEnvironmentMetadata[TEST_FRAMEWORK])), + this.constructor.id, [COMPONENT]: this.constructor.id, ...extraTags } diff --git a/packages/dd-trace/src/plugins/util/ci.js b/packages/dd-trace/src/plugins/util/ci.js index f815b21b94b..40711c6a7c3 100644 --- a/packages/dd-trace/src/plugins/util/ci.js +++ b/packages/dd-trace/src/plugins/util/ci.js @@ -81,8 +81,8 @@ function filterSensitiveInfoFromRepository (repositoryUrl) { } } -function getTestType (frameworkName) { - if (frameworkName === 'playwright' || frameworkName === 'cypress') { +function getTestTypeFromFramework (testFramework) { + if (testFramework === 'playwright' || testFramework === 'cypress') { return 'browser' } return 'test' diff --git a/packages/dd-trace/src/plugins/util/test.js b/packages/dd-trace/src/plugins/util/test.js index 76ab35dc096..b2b60ef82fa 100644 --- a/packages/dd-trace/src/plugins/util/test.js +++ b/packages/dd-trace/src/plugins/util/test.js @@ -188,10 +188,10 @@ function getTestParentSpan (tracer) { }) } -function getTestCommonTags (name, suite, version, testType = 'test') { +function getTestCommonTags (name, suite, version, testFramework) { return { [SPAN_TYPE]: 'test', - [TEST_TYPE]: testType, + [TEST_TYPE]: getTestType(testFramework), [SAMPLING_RULE_DECISION]: 1, [SAMPLING_PRIORITY]: AUTO_KEEP, [TEST_NAME]: name, From f9772d956de4398940707474552679464b6436f8 Mon Sep 17 00:00:00 2001 From: "eric.navarro" Date: Fri, 7 Jul 2023 12:08:04 +0200 Subject: [PATCH 3/8] Fix imports --- packages/datadog-plugin-cypress/src/plugin.js | 3 --- packages/dd-trace/src/plugins/ci_plugin.js | 8 ++------ packages/dd-trace/src/plugins/util/ci.js | 2 +- packages/dd-trace/src/plugins/util/test.js | 4 ++-- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/packages/datadog-plugin-cypress/src/plugin.js b/packages/datadog-plugin-cypress/src/plugin.js index b15df350a12..759daa8a55e 100644 --- a/packages/datadog-plugin-cypress/src/plugin.js +++ b/packages/datadog-plugin-cypress/src/plugin.js @@ -22,9 +22,6 @@ const { getTestSuitePath, addIntelligentTestRunnerSpanTags } = require('../../dd-trace/src/plugins/util/test') -const { - getTestType -} = require('../../dd-trace/src/plugins/util/ci') const { ORIGIN_KEY, COMPONENT } = require('../../dd-trace/src/constants') const log = require('../../dd-trace/src/log') diff --git a/packages/dd-trace/src/plugins/ci_plugin.js b/packages/dd-trace/src/plugins/ci_plugin.js index 8ed1ebcf6b0..6f8638621df 100644 --- a/packages/dd-trace/src/plugins/ci_plugin.js +++ b/packages/dd-trace/src/plugins/ci_plugin.js @@ -12,12 +12,8 @@ const { TEST_MODULE_ID, TEST_SESSION_ID, TEST_COMMAND, - TEST_MODULE, - TEST_FRAMEWORK + TEST_MODULE } = require('./util/test') -const { - getTestType -} = require('./util/ci') const Plugin = require('./plugin') const { COMPONENT } = require('../constants') const log = require('../log') @@ -118,7 +114,7 @@ module.exports = class CiPlugin extends Plugin { ...getTestCommonTags(testName, testSuite, this.frameworkVersion, - this.constructor.id, + this.constructor.id), [COMPONENT]: this.constructor.id, ...extraTags } diff --git a/packages/dd-trace/src/plugins/util/ci.js b/packages/dd-trace/src/plugins/util/ci.js index 40711c6a7c3..8dcd8bef260 100644 --- a/packages/dd-trace/src/plugins/util/ci.js +++ b/packages/dd-trace/src/plugins/util/ci.js @@ -101,7 +101,7 @@ function resolveTilde (filePath) { module.exports = { normalizeRef, - getTestType, + getTestTypeFromFramework, getCIMetadata () { const { env } = process diff --git a/packages/dd-trace/src/plugins/util/test.js b/packages/dd-trace/src/plugins/util/test.js index b2b60ef82fa..0338a621a86 100644 --- a/packages/dd-trace/src/plugins/util/test.js +++ b/packages/dd-trace/src/plugins/util/test.js @@ -6,7 +6,7 @@ const ignore = require('ignore') const { getGitMetadata } = require('./git') const { getUserProviderGitMetadata } = require('./user-provided-git') -const { getCIMetadata } = require('./ci') +const { getCIMetadata, getTestTypeFromFramework } = require('./ci') const { getRuntimeAndOSMetadata } = require('./env') const { GIT_BRANCH, @@ -191,7 +191,7 @@ function getTestParentSpan (tracer) { function getTestCommonTags (name, suite, version, testFramework) { return { [SPAN_TYPE]: 'test', - [TEST_TYPE]: getTestType(testFramework), + [TEST_TYPE]: getTestTypeFromFramework(testFramework), [SAMPLING_RULE_DECISION]: 1, [SAMPLING_PRIORITY]: AUTO_KEEP, [TEST_NAME]: name, From c9d46ae43fd56cb978c96451dbb0fd3ef1e79124 Mon Sep 17 00:00:00 2001 From: Eric Navarro <137877238+ericlaz@users.noreply.github.com> Date: Fri, 7 Jul 2023 14:30:37 +0200 Subject: [PATCH 4/8] Fix styling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Juan Antonio Fernández de Alba --- packages/dd-trace/src/plugins/ci_plugin.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/dd-trace/src/plugins/ci_plugin.js b/packages/dd-trace/src/plugins/ci_plugin.js index 6f8638621df..4809972dd2d 100644 --- a/packages/dd-trace/src/plugins/ci_plugin.js +++ b/packages/dd-trace/src/plugins/ci_plugin.js @@ -111,10 +111,12 @@ module.exports = class CiPlugin extends Plugin { const childOf = getTestParentSpan(this.tracer) let testTags = { - ...getTestCommonTags(testName, + ...getTestCommonTags( + testName, testSuite, this.frameworkVersion, - this.constructor.id), + this.constructor.id + ), [COMPONENT]: this.constructor.id, ...extraTags } From 7faa785704ee38ee0ef3dd8e9e43307dd8ad4ee5 Mon Sep 17 00:00:00 2001 From: "eric.navarro" Date: Fri, 7 Jul 2023 15:31:33 +0200 Subject: [PATCH 5/8] Add cypress and playwright tests --- integration-tests/playwright/playwright.spec.js | 4 ++-- packages/datadog-plugin-cypress/test/index.spec.js | 4 ++-- packages/dd-trace/src/plugins/util/ci.js | 8 -------- packages/dd-trace/src/plugins/util/test.js | 9 ++++++++- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/integration-tests/playwright/playwright.spec.js b/integration-tests/playwright/playwright.spec.js index 914315b105d..37b2d576184 100644 --- a/integration-tests/playwright/playwright.spec.js +++ b/integration-tests/playwright/playwright.spec.js @@ -13,7 +13,7 @@ const { } = require('../helpers') const { FakeCiVisIntake } = require('../ci-visibility-intake') const webAppServer = require('../ci-visibility/web-app-server') -const { TEST_STATUS, TEST_SOURCE_START } = require('../../packages/dd-trace/src/plugins/util/test') +const { TEST_STATUS, TEST_SOURCE_START, TEST_TYPE } = require('../../packages/dd-trace/src/plugins/util/test') // TODO: remove when 2.x support is removed. // This is done because from playwright@>=1.22.0 node 12 is not supported @@ -73,7 +73,7 @@ versions.forEach((version) => { assert.equal(testSessionEvent.content.meta[TEST_STATUS], 'fail') assert.include(testModuleEvent.content.resource, 'test_module.playwright test') assert.equal(testModuleEvent.content.meta[TEST_STATUS], 'fail') - + assert.equal(testSessionEvent.content.meta[TEST_TYPE], 'browser') assert.includeMembers(testSuiteEvents.map(suite => suite.content.resource), [ 'test_suite.todo-list-page-test.js', 'test_suite.landing-page-test.js', diff --git a/packages/datadog-plugin-cypress/test/index.spec.js b/packages/datadog-plugin-cypress/test/index.spec.js index ba8c8825c76..293855ca522 100644 --- a/packages/datadog-plugin-cypress/test/index.spec.js +++ b/packages/datadog-plugin-cypress/test/index.spec.js @@ -78,7 +78,7 @@ describe('Plugin', function () { [TEST_STATUS]: 'pass', [TEST_SUITE]: 'cypress/integration/integration-test.js', [TEST_SOURCE_FILE]: 'cypress/integration/integration-test.js', - [TEST_TYPE]: 'test', + [TEST_TYPE]: 'browser', [ORIGIN_KEY]: CI_APP_ORIGIN, [TEST_IS_RUM_ACTIVE]: 'true', [TEST_CODE_OWNERS]: JSON.stringify(['@datadog']), @@ -103,7 +103,7 @@ describe('Plugin', function () { [TEST_STATUS]: 'fail', [TEST_SUITE]: 'cypress/integration/integration-test.js', [TEST_SOURCE_FILE]: 'cypress/integration/integration-test.js', - [TEST_TYPE]: 'test', + [TEST_TYPE]: 'browser', [ORIGIN_KEY]: CI_APP_ORIGIN, [ERROR_TYPE]: 'AssertionError', [TEST_IS_RUM_ACTIVE]: 'true', diff --git a/packages/dd-trace/src/plugins/util/ci.js b/packages/dd-trace/src/plugins/util/ci.js index 8dcd8bef260..31d0ca7b3c5 100644 --- a/packages/dd-trace/src/plugins/util/ci.js +++ b/packages/dd-trace/src/plugins/util/ci.js @@ -81,13 +81,6 @@ function filterSensitiveInfoFromRepository (repositoryUrl) { } } -function getTestTypeFromFramework (testFramework) { - if (testFramework === 'playwright' || testFramework === 'cypress') { - return 'browser' - } - return 'test' -} - function resolveTilde (filePath) { if (!filePath || typeof filePath !== 'string') { return '' @@ -101,7 +94,6 @@ function resolveTilde (filePath) { module.exports = { normalizeRef, - getTestTypeFromFramework, getCIMetadata () { const { env } = process diff --git a/packages/dd-trace/src/plugins/util/test.js b/packages/dd-trace/src/plugins/util/test.js index 0338a621a86..7650afcb817 100644 --- a/packages/dd-trace/src/plugins/util/test.js +++ b/packages/dd-trace/src/plugins/util/test.js @@ -6,7 +6,7 @@ const ignore = require('ignore') const { getGitMetadata } = require('./git') const { getUserProviderGitMetadata } = require('./user-provided-git') -const { getCIMetadata, getTestTypeFromFramework } = require('./ci') +const { getCIMetadata } = require('./ci') const { getRuntimeAndOSMetadata } = require('./env') const { GIT_BRANCH, @@ -173,6 +173,13 @@ function getTestParametersString (parametersByTestName, testName) { } } +function getTestTypeFromFramework (testFramework) { + if (testFramework === 'playwright' || testFramework === 'cypress') { + return 'browser' + } + return 'test' +} + function finishAllTraceSpans (span) { span.context()._trace.started.forEach(traceSpan => { if (traceSpan !== span) { From 25116adb60c55fb80436043d3b0f6c5d74ba4a05 Mon Sep 17 00:00:00 2001 From: "eric.navarro" Date: Fri, 7 Jul 2023 15:57:00 +0200 Subject: [PATCH 6/8] Change browser conditions to detect all playwright instances --- packages/dd-trace/src/plugins/util/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dd-trace/src/plugins/util/test.js b/packages/dd-trace/src/plugins/util/test.js index 7650afcb817..b63929be43b 100644 --- a/packages/dd-trace/src/plugins/util/test.js +++ b/packages/dd-trace/src/plugins/util/test.js @@ -174,7 +174,7 @@ function getTestParametersString (parametersByTestName, testName) { } function getTestTypeFromFramework (testFramework) { - if (testFramework === 'playwright' || testFramework === 'cypress') { + if (testFramework.contains('playwright') || testFramework.contains('cypress')) { return 'browser' } return 'test' From fbeeae891319b572742b30b5fe47d64797302590 Mon Sep 17 00:00:00 2001 From: "eric.navarro" Date: Fri, 7 Jul 2023 16:08:48 +0200 Subject: [PATCH 7/8] Fix include string --- packages/dd-trace/src/plugins/util/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dd-trace/src/plugins/util/test.js b/packages/dd-trace/src/plugins/util/test.js index b63929be43b..d6f83968ef6 100644 --- a/packages/dd-trace/src/plugins/util/test.js +++ b/packages/dd-trace/src/plugins/util/test.js @@ -174,7 +174,7 @@ function getTestParametersString (parametersByTestName, testName) { } function getTestTypeFromFramework (testFramework) { - if (testFramework.contains('playwright') || testFramework.contains('cypress')) { + if (testFramework.includes('playwright') || testFramework.includes('cypress')) { return 'browser' } return 'test' From d3f4b18de8810e820914f1dcc41c2eb90fa6d37f Mon Sep 17 00:00:00 2001 From: "eric.navarro" Date: Fri, 7 Jul 2023 16:40:02 +0200 Subject: [PATCH 8/8] Fix some suites still being reported as test type --- integration-tests/playwright/playwright.spec.js | 1 + packages/dd-trace/src/plugins/util/test.js | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/integration-tests/playwright/playwright.spec.js b/integration-tests/playwright/playwright.spec.js index 37b2d576184..f78e2a78032 100644 --- a/integration-tests/playwright/playwright.spec.js +++ b/integration-tests/playwright/playwright.spec.js @@ -74,6 +74,7 @@ versions.forEach((version) => { assert.include(testModuleEvent.content.resource, 'test_module.playwright test') assert.equal(testModuleEvent.content.meta[TEST_STATUS], 'fail') assert.equal(testSessionEvent.content.meta[TEST_TYPE], 'browser') + assert.equal(testModuleEvent.content.meta[TEST_TYPE], 'browser') assert.includeMembers(testSuiteEvents.map(suite => suite.content.resource), [ 'test_suite.todo-list-page-test.js', 'test_suite.landing-page-test.js', diff --git a/packages/dd-trace/src/plugins/util/test.js b/packages/dd-trace/src/plugins/util/test.js index d6f83968ef6..bf500631b93 100644 --- a/packages/dd-trace/src/plugins/util/test.js +++ b/packages/dd-trace/src/plugins/util/test.js @@ -174,7 +174,7 @@ function getTestParametersString (parametersByTestName, testName) { } function getTestTypeFromFramework (testFramework) { - if (testFramework.includes('playwright') || testFramework.includes('cypress')) { + if (testFramework === 'playwright' || testFramework === 'cypress') { return 'browser' } return 'test' @@ -276,12 +276,12 @@ function getCodeOwnersForFilename (filename, entries) { return null } -function getTestLevelCommonTags (command, testFrameworkVersion) { +function getTestLevelCommonTags (command, testFrameworkVersion, testFramework) { return { [TEST_FRAMEWORK_VERSION]: testFrameworkVersion, [LIBRARY_VERSION]: ddTraceVersion, [TEST_COMMAND]: command, - [TEST_TYPE]: 'test' + [TEST_TYPE]: getTestTypeFromFramework(testFramework) } } @@ -291,7 +291,7 @@ function getTestSessionCommonTags (command, testFrameworkVersion, testFramework) [RESOURCE_NAME]: `test_session.${command}`, [TEST_MODULE]: testFramework, [TEST_TOOLCHAIN]: getPkgManager(), - ...getTestLevelCommonTags(command, testFrameworkVersion) + ...getTestLevelCommonTags(command, testFrameworkVersion, testFramework) } } @@ -300,7 +300,7 @@ function getTestModuleCommonTags (command, testFrameworkVersion, testFramework) [SPAN_TYPE]: 'test_module_end', [RESOURCE_NAME]: `test_module.${command}`, [TEST_MODULE]: testFramework, - ...getTestLevelCommonTags(command, testFrameworkVersion) + ...getTestLevelCommonTags(command, testFrameworkVersion, testFramework) } } @@ -310,7 +310,7 @@ function getTestSuiteCommonTags (command, testFrameworkVersion, testSuite, testF [RESOURCE_NAME]: `test_suite.${testSuite}`, [TEST_MODULE]: testFramework, [TEST_SUITE]: testSuite, - ...getTestLevelCommonTags(command, testFrameworkVersion) + ...getTestLevelCommonTags(command, testFrameworkVersion, testFramework) } }