Skip to content

Commit 46a09e4

Browse files
[test optimization] Use test optimization request module (#7540)
1 parent 02c42bc commit 46a09e4

12 files changed

Lines changed: 372 additions & 36 deletions

File tree

integration-tests/cucumber/cucumber.spec.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1320,11 +1320,14 @@ describe(`cucumber@${version} commonJS`, () => {
13201320
receiver.setKnownTests({
13211321
cucumber: {},
13221322
})
1323+
// Request module waits before retrying — need longer gather timeout
13231324
const eventsPromise = receiver
13241325
.gatherPayloadsMaxTimeout(({ url }) => url.endsWith('/api/v2/citestcycle'), payloads => {
13251326
const events = payloads.flatMap(({ payload }) => payload.events)
13261327

1327-
const testSession = events.find(event => event.type === 'test_session_end').content
1328+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
1329+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
1330+
const testSession = testSessionEnd.content
13281331
assert.ok(!(TEST_EARLY_FLAKE_ENABLED in testSession.meta))
13291332
const tests = events.filter(event => event.type === 'test').map(event => event.content)
13301333

@@ -1333,7 +1336,7 @@ describe(`cucumber@${version} commonJS`, () => {
13331336
test.meta[TEST_IS_NEW] === 'true'
13341337
)
13351338
assert.strictEqual(newTests.length, 0)
1336-
})
1339+
}, 60000)
13371340

13381341
childProcess = exec(
13391342
runTestsCommand,
@@ -2750,15 +2753,18 @@ describe(`cucumber@${version} commonJS`, () => {
27502753
})
27512754
receiver.setTestManagementTestsResponseCode(500)
27522755

2756+
// Request module waits before retrying — need longer gather timeout
27532757
const eventsPromise = receiver
27542758
.gatherPayloadsMaxTimeout(({ url }) => url.endsWith('/api/v2/citestcycle'), (payloads) => {
27552759
const events = payloads.flatMap(({ payload }) => payload.events)
2756-
const testSession = events.find(event => event.type === 'test_session_end').content
2760+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
2761+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
2762+
const testSession = testSessionEnd.content
27572763
assert.ok(!(TEST_MANAGEMENT_ENABLED in testSession.meta))
27582764
const tests = events.filter(event => event.type === 'test').map(event => event.content)
27592765
// it is not retried
27602766
assert.strictEqual(tests.length, 1)
2761-
})
2767+
}, 60000)
27622768

27632769
childProcess = exec(
27642770
'./node_modules/.bin/cucumber-js ci-visibility/features-test-management/attempt-to-fix.feature',

integration-tests/cypress/cypress.spec.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1510,18 +1510,21 @@ moduleTypes.forEach(({
15101510
...restEnvVars
15111511
} = getCiVisEvpProxyConfig(receiver.port)
15121512

1513+
// Request module waits before retrying; browser runs are slow — need longer gather timeout
15131514
const receiverPromise = receiver
15141515
.gatherPayloadsMaxTimeout(({ url }) => url.endsWith('/api/v2/citestcycle'), payloads => {
15151516
const events = payloads.flatMap(({ payload }) => payload.events)
1516-
const testSession = events.find(event => event.type === 'test_session_end').content
1517+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
1518+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
1519+
const testSession = testSessionEnd.content
15171520
assert.ok(!(TEST_EARLY_FLAKE_ENABLED in testSession.meta))
15181521

15191522
const tests = events.filter(event => event.type === 'test').map(event => event.content)
15201523
assert.strictEqual(tests.length, 2)
15211524

15221525
const newTests = tests.filter(test => test.meta[TEST_IS_NEW] === 'true')
15231526
assert.strictEqual(newTests.length, 0)
1524-
}, 25000)
1527+
}, 120000)
15251528

15261529
const specToRun = 'cypress/e2e/spec.cy.js'
15271530

@@ -2896,15 +2899,18 @@ moduleTypes.forEach(({
28962899
})
28972900
receiver.setTestManagementTestsResponseCode(500)
28982901

2902+
// Request module waits before retrying; browser runs are slow — need longer gather timeout
28992903
const eventsPromise = receiver
29002904
.gatherPayloadsMaxTimeout(({ url }) => url.endsWith('/api/v2/citestcycle'), (payloads) => {
29012905
const events = payloads.flatMap(({ payload }) => payload.events)
2902-
const testSession = events.find(event => event.type === 'test_session_end').content
2906+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
2907+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
2908+
const testSession = testSessionEnd.content
29032909
assert.ok(!(TEST_MANAGEMENT_ENABLED in testSession.meta))
29042910
const tests = events.filter(event => event.type === 'test').map(event => event.content)
29052911
// it is not retried
29062912
assert.strictEqual(tests.length, 1)
2907-
}, 25000)
2913+
}, 120000)
29082914

29092915
const {
29102916
NODE_OPTIONS,

integration-tests/jest/jest.spec.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2921,11 +2921,14 @@ describe(`jest@${JEST_VERSION} commonJS`, () => {
29212921
known_tests_enabled: true,
29222922
})
29232923

2924+
// Request module waits before retrying — need longer gather timeout
29242925
const eventsPromise = receiver
29252926
.gatherPayloadsMaxTimeout(({ url }) => url.endsWith('/api/v2/citestcycle'), (payloads) => {
29262927
const events = payloads.flatMap(({ payload }) => payload.events)
29272928

2928-
const testSession = events.find(event => event.type === 'test_session_end').content
2929+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
2930+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
2931+
const testSession = testSessionEnd.content
29292932
assert.ok(!(TEST_EARLY_FLAKE_ENABLED in testSession.meta))
29302933

29312934
const tests = events.filter(event => event.type === 'test').map(event => event.content)
@@ -2935,7 +2938,7 @@ describe(`jest@${JEST_VERSION} commonJS`, () => {
29352938
test => test.meta[TEST_IS_NEW] === 'true'
29362939
)
29372940
assert.strictEqual(newTests.length, 0)
2938-
})
2941+
}, 60000)
29392942

29402943
childProcess = exec(
29412944
runTestsCommand,
@@ -5930,15 +5933,18 @@ describe(`jest@${JEST_VERSION} commonJS`, () => {
59305933
})
59315934
receiver.setTestManagementTestsResponseCode(500)
59325935

5936+
// Request module waits before retrying — need longer gather timeout
59335937
const eventsPromise = receiver
59345938
.gatherPayloadsMaxTimeout(({ url }) => url.endsWith('/api/v2/citestcycle'), (payloads) => {
59355939
const events = payloads.flatMap(({ payload }) => payload.events)
5936-
const testSession = events.find(event => event.type === 'test_session_end').content
5940+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
5941+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
5942+
const testSession = testSessionEnd.content
59375943
assert.ok(!(TEST_MANAGEMENT_ENABLED in testSession.meta))
59385944
const tests = events.filter(event => event.type === 'test').map(event => event.content)
59395945
// it is not retried
59405946
assert.strictEqual(tests.length, 1)
5941-
})
5947+
}, 60000)
59425948

59435949
childProcess = exec(runTestsCommand, {
59445950
cwd,

integration-tests/mocha/mocha.spec.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2527,11 +2527,14 @@ describe(`mocha@${MOCHA_VERSION}`, function () {
25272527
known_tests_enabled: true,
25282528
})
25292529

2530+
// Request module waits before retrying — need longer gather timeout
25302531
const eventsPromise = receiver
25312532
.gatherPayloadsMaxTimeout(({ url }) => url.endsWith('/api/v2/citestcycle'), (payloads) => {
25322533
const events = payloads.flatMap(({ payload }) => payload.events)
25332534

2534-
const testSession = events.find(event => event.type === 'test_session_end').content
2535+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
2536+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
2537+
const testSession = testSessionEnd.content
25352538
assert.ok(!(TEST_EARLY_FLAKE_ENABLED in testSession.meta))
25362539

25372540
const tests = events.filter(event => event.type === 'test').map(event => event.content)
@@ -2541,7 +2544,7 @@ describe(`mocha@${MOCHA_VERSION}`, function () {
25412544
test => test.meta[TEST_IS_NEW] === 'true'
25422545
)
25432546
assert.strictEqual(newTests.length, 0)
2544-
})
2547+
}, 60000)
25452548

25462549
childProcess = exec(
25472550
runTestsCommand,
@@ -4073,15 +4076,18 @@ describe(`mocha@${MOCHA_VERSION}`, function () {
40734076
})
40744077
receiver.setTestManagementTestsResponseCode(500)
40754078

4079+
// Request module waits before retrying — need longer gather timeout
40764080
const eventsPromise = receiver
40774081
.gatherPayloadsMaxTimeout(({ url }) => url.endsWith('/api/v2/citestcycle'), (payloads) => {
40784082
const events = payloads.flatMap(({ payload }) => payload.events)
4079-
const testSession = events.find(event => event.type === 'test_session_end').content
4083+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
4084+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
4085+
const testSession = testSessionEnd.content
40804086
assert.ok(!(TEST_MANAGEMENT_ENABLED in testSession.meta))
40814087
const tests = events.filter(event => event.type === 'test').map(event => event.content)
40824088
// it is not retried
40834089
assert.strictEqual(tests.length, 1)
4084-
})
4090+
}, 60000)
40854091

40864092
childProcess = exec(
40874093
runTestsCommand,

integration-tests/playwright/playwright.spec.js

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -647,21 +647,24 @@ versions.forEach((version) => {
647647
playwright: {},
648648
})
649649

650+
// Request module waits before retrying; browser runs are slow — need longer gather timeout
650651
const receiverPromise = receiver
651652
.gatherPayloadsMaxTimeout(({ url }) => url === '/api/v2/citestcycle', (payloads) => {
652653
const events = payloads.flatMap(({ payload }) => payload.events)
653654
const tests = events.filter(event => event.type === 'test').map(event => event.content)
654655

655656
assert.strictEqual(tests.length, 7)
656-
const testSession = events.find(event => event.type === 'test_session_end').content
657+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
658+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
659+
const testSession = testSessionEnd.content
657660
assert.ok(!(TEST_EARLY_FLAKE_ENABLED in testSession.meta))
658661

659662
const newTests = tests.filter(test => test.meta[TEST_IS_NEW] === 'true')
660663
assert.strictEqual(newTests.length, 0)
661664

662665
const retriedTests = tests.filter(test => test.meta[TEST_IS_RETRY] === 'true')
663666
assert.strictEqual(retriedTests.length, 0)
664-
})
667+
}, 120000)
665668

666669
childProcess = exec(
667670
'./node_modules/.bin/playwright test -c playwright.config.js',
@@ -1951,17 +1954,24 @@ versions.forEach((version) => {
19511954
})
19521955
receiver.setTestManagementTestsResponseCode(500)
19531956

1957+
// Playwright runs are slow (browser startup); need longer than default 15s to receive test_session_end
19541958
const eventsPromise = receiver
1955-
.gatherPayloadsMaxTimeout(({ url }) => url.endsWith('/api/v2/citestcycle'), (payloads) => {
1956-
const events = payloads.flatMap(({ payload }) => payload.events)
1957-
const testSession = events.find(event => event.type === 'test_session_end').content
1958-
assert.ok(!(TEST_MANAGEMENT_ENABLED in testSession.meta))
1959-
const tests = events.filter(event => event.type === 'test').map(event => event.content)
1960-
// they are not retried
1961-
assert.strictEqual(tests.length, 2)
1962-
const retriedTests = tests.filter(test => test.meta[TEST_IS_RETRY] === 'true')
1963-
assert.strictEqual(retriedTests.length, 0)
1964-
})
1959+
.gatherPayloadsMaxTimeout(
1960+
({ url }) => url.endsWith('/api/v2/citestcycle'),
1961+
(payloads) => {
1962+
const events = payloads.flatMap(({ payload }) => payload.events)
1963+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
1964+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
1965+
const testSession = testSessionEnd.content
1966+
assert.ok(!(TEST_MANAGEMENT_ENABLED in testSession.meta))
1967+
const tests = events.filter(event => event.type === 'test').map(event => event.content)
1968+
// they are not retried
1969+
assert.strictEqual(tests.length, 2)
1970+
const retriedTests = tests.filter(test => test.meta[TEST_IS_RETRY] === 'true')
1971+
assert.strictEqual(retriedTests.length, 0)
1972+
},
1973+
120000
1974+
)
19651975

19661976
childProcess = exec(
19671977
'./node_modules/.bin/playwright test -c playwright.config.js attempt-to-fix-test.js',

integration-tests/vitest/vitest.spec.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -920,6 +920,7 @@ versions.forEach((version) => {
920920
receiver.setKnownTestsResponseCode(500)
921921
receiver.setKnownTests({})
922922

923+
// Request module waits before retrying — need longer gather timeout
923924
const eventsPromise = receiver
924925
.gatherPayloadsMaxTimeout(({ url }) => url === '/api/v2/citestcycle', payloads => {
925926
const events = payloads.flatMap(({ payload }) => payload.events)
@@ -942,9 +943,11 @@ versions.forEach((version) => {
942943

943944
const failedTests = tests.filter(test => test.meta[TEST_STATUS] === 'fail')
944945
assert.strictEqual(failedTests.length, 1)
945-
const testSessionEvent = events.find(event => event.type === 'test_session_end').content
946+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
947+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
948+
const testSessionEvent = testSessionEnd.content
946949
assert.strictEqual(testSessionEvent.meta[TEST_STATUS], 'fail')
947-
})
950+
}, 60000)
948951

949952
childProcess = exec(
950953
'./node_modules/.bin/vitest run',
@@ -2010,15 +2013,18 @@ versions.forEach((version) => {
20102013
})
20112014
receiver.setTestManagementTestsResponseCode(500)
20122015

2016+
// Request module waits before retrying — need longer gather timeout
20132017
const eventsPromise = receiver
20142018
.gatherPayloadsMaxTimeout(({ url }) => url.endsWith('/api/v2/citestcycle'), (payloads) => {
20152019
const events = payloads.flatMap(({ payload }) => payload.events)
2016-
const testSession = events.find(event => event.type === 'test_session_end').content
2020+
const testSessionEnd = events.find(event => event.type === 'test_session_end')
2021+
assert.ok(testSessionEnd, 'expected test_session_end event in payloads')
2022+
const testSession = testSessionEnd.content
20172023
assert.ok(!(TEST_MANAGEMENT_ENABLED in testSession.meta))
20182024
const tests = events.filter(event => event.type === 'test').map(event => event.content)
20192025
// it is not retried
20202026
assert.strictEqual(tests.length, 1)
2021-
})
2027+
}, 60000)
20222028

20232029
childProcess = exec(
20242030
'./node_modules/.bin/vitest run',

packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict'
22

3-
const request = require('../../exporters/common/request')
3+
const request = require('../requests/request')
44
const id = require('../../id')
55
const log = require('../../log')
66
const { getValueFromEnvSources } = require('../../config/helper')

packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict'
22

3-
const request = require('../../exporters/common/request')
3+
const request = require('../requests/request')
44
const log = require('../../log')
55
const { getValueFromEnvSources } = require('../../config/helper')
66
const {

packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict'
22

3-
const request = require('../../exporters/common/request')
43
const id = require('../../id')
54
const log = require('../../log')
65
const { getValueFromEnvSources } = require('../../config/helper')
@@ -13,6 +12,7 @@ const {
1312
TELEMETRY_GIT_REQUESTS_SETTINGS_RESPONSE,
1413
} = require('../telemetry')
1514
const { writeSettingsToCache } = require('../test-optimization-cache')
15+
const request = require('./request')
1616

1717
const DEFAULT_EARLY_FLAKE_DETECTION_NUM_RETRIES = 2
1818
const DEFAULT_EARLY_FLAKE_DETECTION_ERROR_THRESHOLD = 30

0 commit comments

Comments
 (0)