Skip to content

Commit 3c8fe63

Browse files
authored
[test-optimization] [SDTEST-2144] Fix it.failing in combination with EFD (#5857)
1 parent ec706ad commit 3c8fe63

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const { expect } = require('chai')
2+
3+
describe('failing', () => {
4+
it.failing('can report failed tests', () => {
5+
expect(1 + 2).to.equal(4)
6+
})
7+
8+
it.failing('can report failing tests as failures', () => {
9+
expect(1 + 2).to.equal(3) // this passes but it should fail! So the test.status should be fail
10+
})
11+
})

integration-tests/jest/jest.spec.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2365,6 +2365,68 @@ describe('jest CommonJS', () => {
23652365
}).catch(done)
23662366
})
23672367
})
2368+
2369+
it('does not retry when it.failing is used', (done) => {
2370+
receiver.setInfoResponse({ endpoints: ['/evp_proxy/v4'] })
2371+
const NUM_RETRIES_EFD = 3
2372+
receiver.setSettings({
2373+
early_flake_detection: {
2374+
enabled: true,
2375+
slow_test_retries: {
2376+
'5s': NUM_RETRIES_EFD
2377+
},
2378+
faulty_session_threshold: 100
2379+
},
2380+
known_tests_enabled: true
2381+
})
2382+
const eventsPromise = receiver
2383+
.gatherPayloadsMaxTimeout(({ url }) => url.endsWith('/api/v2/citestcycle'), (payloads) => {
2384+
const events = payloads.flatMap(({ payload }) => payload.events)
2385+
2386+
const testSession = events.find(event => event.type === 'test_session_end').content
2387+
assert.propertyVal(testSession.meta, TEST_EARLY_FLAKE_ENABLED, 'true')
2388+
2389+
const tests = events.filter(event => event.type === 'test').map(event => event.content)
2390+
2391+
const newTests = tests.filter(test =>
2392+
test.meta[TEST_SUITE] === 'ci-visibility/jest/failing-test.js'
2393+
)
2394+
newTests.forEach(test => {
2395+
assert.notProperty(test.meta, TEST_IS_NEW)
2396+
})
2397+
assert.equal(newTests.length, 2)
2398+
2399+
const passingTests = tests.filter(test =>
2400+
test.meta[TEST_NAME] === 'failing can report failed tests'
2401+
)
2402+
const failingTests = tests.filter(test =>
2403+
test.meta[TEST_NAME] === 'failing can report failing tests as failures'
2404+
)
2405+
passingTests.forEach(test => {
2406+
assert.equal(test.meta[TEST_STATUS], 'pass')
2407+
})
2408+
failingTests.forEach(test => {
2409+
assert.equal(test.meta[TEST_STATUS], 'fail')
2410+
})
2411+
2412+
const retriedTests = newTests.filter(test => test.meta[TEST_IS_RETRY] === 'true')
2413+
assert.equal(retriedTests.length, 0)
2414+
})
2415+
2416+
childProcess = exec(
2417+
runTestsWithCoverageCommand,
2418+
{
2419+
cwd,
2420+
env: { ...getCiVisEvpProxyConfig(receiver.port), TESTS_TO_RUN: 'jest/failing-test' },
2421+
stdio: 'inherit'
2422+
}
2423+
)
2424+
childProcess.on('exit', () => {
2425+
eventsPromise.then(() => {
2426+
done()
2427+
}).catch(done)
2428+
})
2429+
})
23682430
})
23692431

23702432
context('flaky test retries', () => {

packages/datadog-instrumentations/src/jest.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,10 @@ function getWrappedEnvironment (BaseEnvironment, jestVersion) {
425425
if (event.name === 'add_test') {
426426
const originalTestName = this.getTestNameFromAddTestEvent(event, state)
427427

428+
if (event.failing) {
429+
return
430+
}
431+
428432
const isSkipped = event.mode === 'todo' || event.mode === 'skip'
429433
if (this.isTestManagementTestsEnabled) {
430434
const isAttemptToFix = this.testManagementTestsForThisSuite?.attemptToFix?.includes(originalTestName)

0 commit comments

Comments
 (0)