Skip to content

Commit 3965634

Browse files
[ci-visibility] Fix cypress errors when using interactive mode (#2895)
1 parent 6f94c36 commit 3965634

File tree

1 file changed

+40
-33
lines changed

1 file changed

+40
-33
lines changed

packages/datadog-plugin-cypress/src/plugin.js

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ const {
2020
finishAllTraceSpans
2121
} = require('../../dd-trace/src/plugins/util/test')
2222

23+
const TEST_FRAMEWORK_NAME = 'cypress'
24+
2325
const { ORIGIN_KEY, COMPONENT } = require('../../dd-trace/src/constants')
2426

2527
const CYPRESS_STATUS_TO_TEST_STATUS = {
@@ -52,9 +54,9 @@ function getCypressVersion (details) {
5254

5355
function getCypressCommand (details) {
5456
if (!details) {
55-
return 'cypress'
57+
return TEST_FRAMEWORK_NAME
5658
}
57-
return `cypress ${details.specPattern || ''}`
59+
return `${TEST_FRAMEWORK_NAME} ${details.specPattern || ''}`
5860
}
5961

6062
function getSessionStatus (summary) {
@@ -79,7 +81,7 @@ function getSuiteStatus (suiteStats) {
7981

8082
module.exports = (on, config) => {
8183
const tracer = require('../../dd-trace')
82-
const testEnvironmentMetadata = getTestEnvironmentMetadata('cypress')
84+
const testEnvironmentMetadata = getTestEnvironmentMetadata(TEST_FRAMEWORK_NAME)
8385

8486
const codeOwnersEntries = getCodeOwnersFileEntries()
8587

@@ -96,36 +98,38 @@ module.exports = (on, config) => {
9698
command = getCypressCommand(details)
9799
frameworkVersion = getCypressVersion(details)
98100

99-
const testSessionSpanMetadata = getTestSessionCommonTags(command, frameworkVersion, 'cypress')
100-
const testModuleSpanMetadata = getTestModuleCommonTags(command, frameworkVersion, 'cypress')
101+
const testSessionSpanMetadata = getTestSessionCommonTags(command, frameworkVersion, TEST_FRAMEWORK_NAME)
102+
const testModuleSpanMetadata = getTestModuleCommonTags(command, frameworkVersion, TEST_FRAMEWORK_NAME)
101103

102-
testSessionSpan = tracer.startSpan('cypress.test_session', {
104+
testSessionSpan = tracer.startSpan(`${TEST_FRAMEWORK_NAME}.test_session`, {
103105
childOf,
104106
tags: {
105-
[COMPONENT]: 'cypress',
107+
[COMPONENT]: TEST_FRAMEWORK_NAME,
106108
...testEnvironmentMetadata,
107109
...testSessionSpanMetadata
108110
}
109111
})
110-
testModuleSpan = tracer.startSpan('cypress.test_module', {
112+
testModuleSpan = tracer.startSpan(`${TEST_FRAMEWORK_NAME}.test_module`, {
111113
childOf: testSessionSpan,
112114
tags: {
113-
[COMPONENT]: 'cypress',
115+
[COMPONENT]: TEST_FRAMEWORK_NAME,
114116
...testEnvironmentMetadata,
115117
...testModuleSpanMetadata
116118
}
117119
})
118120
})
119121

120122
on('after:run', (suiteStats) => {
121-
const testStatus = getSessionStatus(suiteStats)
122-
testModuleSpan.setTag(TEST_STATUS, testStatus)
123-
testSessionSpan.setTag(TEST_STATUS, testStatus)
123+
if (testSessionSpan && testModuleSpan) {
124+
const testStatus = getSessionStatus(suiteStats)
125+
testModuleSpan.setTag(TEST_STATUS, testStatus)
126+
testSessionSpan.setTag(TEST_STATUS, testStatus)
124127

125-
testModuleSpan.finish()
126-
testSessionSpan.finish()
128+
testModuleSpan.finish()
129+
testSessionSpan.finish()
127130

128-
finishAllTraceSpans(testSessionSpan)
131+
finishAllTraceSpans(testSessionSpan)
132+
}
129133

130134
return new Promise(resolve => {
131135
tracer._tracer._exporter._writer.flush(() => {
@@ -138,38 +142,41 @@ module.exports = (on, config) => {
138142
if (testSuiteSpan) {
139143
return null
140144
}
141-
const testSuiteSpanMetadata = getTestSuiteCommonTags(command, frameworkVersion, suite, 'cypress')
142-
testSuiteSpan = tracer.startSpan('cypress.test_suite', {
145+
const testSuiteSpanMetadata = getTestSuiteCommonTags(command, frameworkVersion, suite, TEST_FRAMEWORK_NAME)
146+
testSuiteSpan = tracer.startSpan(`${TEST_FRAMEWORK_NAME}.test_suite`, {
143147
childOf: testModuleSpan,
144148
tags: {
145-
[COMPONENT]: 'cypress',
149+
[COMPONENT]: TEST_FRAMEWORK_NAME,
146150
...testEnvironmentMetadata,
147151
...testSuiteSpanMetadata
148152
}
149153
})
150154
return null
151155
},
152156
'dd:testSuiteFinish': (suiteStats) => {
153-
const status = getSuiteStatus(suiteStats)
154-
testSuiteSpan.setTag(TEST_STATUS, status)
155-
testSuiteSpan.finish()
156-
testSuiteSpan = null
157+
if (testSuiteSpan) {
158+
const status = getSuiteStatus(suiteStats)
159+
testSuiteSpan.setTag(TEST_STATUS, status)
160+
testSuiteSpan.finish()
161+
testSuiteSpan = null
162+
}
157163
return null
158164
},
159165
'dd:beforeEach': (test) => {
160166
const { testName, testSuite } = test
161-
const testSuiteId = testSuiteSpan.context().toSpanId()
162-
const testSessionId = testSessionSpan.context().toTraceId()
163-
const testModuleId = testModuleSpan.context().toSpanId()
164167

165168
const testSuiteTags = {
166-
[TEST_SUITE_ID]: testSuiteId,
167-
[TEST_SESSION_ID]: testSessionId,
168169
[TEST_COMMAND]: command,
169-
[TEST_MODULE_ID]: testModuleId,
170170
[TEST_COMMAND]: command,
171-
[TEST_BUNDLE]: 'cypress',
172-
[TEST_MODULE]: 'cypress'
171+
[TEST_BUNDLE]: TEST_FRAMEWORK_NAME,
172+
[TEST_MODULE]: TEST_FRAMEWORK_NAME
173+
}
174+
if (testSuiteSpan) {
175+
testSuiteTags[TEST_SUITE_ID] = testSuiteSpan.context().toSpanId()
176+
}
177+
if (testSessionSpan && testModuleSpan) {
178+
testSuiteTags[TEST_SESSION_ID] = testSessionSpan.context().toTraceId()
179+
testSuiteTags[TEST_MODULE_ID] = testModuleSpan.context().toSpanId()
173180
}
174181

175182
const {
@@ -185,18 +192,18 @@ module.exports = (on, config) => {
185192
}
186193

187194
if (!activeSpan) {
188-
activeSpan = tracer.startSpan('cypress.test', {
195+
activeSpan = tracer.startSpan(`${TEST_FRAMEWORK_NAME}.test`, {
189196
childOf,
190197
tags: {
191-
[COMPONENT]: 'cypress',
198+
[COMPONENT]: TEST_FRAMEWORK_NAME,
192199
[ORIGIN_KEY]: CI_APP_ORIGIN,
193200
...testSpanMetadata,
194201
...testEnvironmentMetadata,
195202
...testSuiteTags
196203
}
197204
})
198205
}
199-
return activeSpan ? activeSpan._spanContext._traceId.toString(10) : null
206+
return activeSpan ? activeSpan.context().toTraceId() : null
200207
},
201208
'dd:afterEach': (test) => {
202209
const { state, error, isRUMActive } = test

0 commit comments

Comments
 (0)