@@ -998,6 +998,93 @@ describe(`jest@${JEST_VERSION} commonJS`, () => {
998998 } )
999999 } )
10001000
1001+ context ( 'when jest is using worker threads' , ( ) => {
1002+ onlyLatestIt ( 'ignores non-array worker-thread messages' , ( done ) => {
1003+ childProcess = fork ( testFile , {
1004+ cwd,
1005+ env : {
1006+ ...getCiVisAgentlessConfig ( receiver . port ) ,
1007+ TESTS_TO_RUN : 'jest-plugin-tests/jest-worker-message' ,
1008+ USE_WORKER_THREADS : 'true' ,
1009+ } ,
1010+ stdio : 'pipe' ,
1011+ } )
1012+ childProcess . stdout ?. on ( 'data' , ( chunk ) => {
1013+ testOutput += chunk . toString ( )
1014+ } )
1015+ childProcess . stderr ?. on ( 'data' , ( chunk ) => {
1016+ testOutput += chunk . toString ( )
1017+ } )
1018+
1019+ Promise . all ( [
1020+ once ( childProcess , 'message' ) ,
1021+ receiver . gatherPayloads ( ( { url } ) => url === '/api/v2/citestcycle' , 5000 ) ,
1022+ ] ) . then ( ( [ , eventsRequests ] ) => {
1023+ const tests = eventsRequests . map ( ( { payload } ) => payload )
1024+ . flatMap ( ( { events } ) => events )
1025+ . filter ( event => event . type === 'test' )
1026+ . map ( event => event . content )
1027+
1028+ assert . strictEqual ( tests . length , 1 )
1029+ assert . strictEqual (
1030+ tests [ 0 ] . meta [ TEST_NAME ] ,
1031+ 'jest-worker-message passes after sending a non-array worker message'
1032+ )
1033+ assert . strictEqual ( tests [ 0 ] . meta [ TEST_STATUS ] , 'pass' )
1034+ assert . doesNotMatch ( testOutput , / T y p e E r r o r / )
1035+ done ( )
1036+ } ) . catch ( done )
1037+ } )
1038+
1039+ onlyLatestIt ( 'reports tests when using agentless' , ( done ) => {
1040+ childProcess = fork ( testFile , {
1041+ cwd,
1042+ env : {
1043+ ...getCiVisAgentlessConfig ( receiver . port ) ,
1044+ USE_WORKER_THREADS : 'true' ,
1045+ } ,
1046+ stdio : 'pipe' ,
1047+ } )
1048+
1049+ receiver . gatherPayloads ( ( { url } ) => url === '/api/v2/citestcycle' , 5000 ) . then ( eventsRequests => {
1050+ const events = eventsRequests . map ( ( { payload } ) => payload )
1051+ . flatMap ( ( { events } ) => events )
1052+ const eventTypes = events . map ( event => event . type )
1053+ assertObjectContains ( eventTypes , [ 'test' , 'test_suite_end' , 'test_session_end' , 'test_module_end' ] )
1054+
1055+ const tests = events . filter ( event => event . type === 'test' ) . map ( event => event . content )
1056+ assert . ok ( tests . length >= 2 )
1057+ tests . forEach ( testEvent => {
1058+ assert . strictEqual ( testEvent . meta [ TEST_STATUS ] , 'pass' )
1059+ } )
1060+
1061+ done ( )
1062+ } ) . catch ( done )
1063+ } )
1064+
1065+ onlyLatestIt ( 'reports tests when using evp proxy' , ( done ) => {
1066+ receiver . setInfoResponse ( { endpoints : [ '/evp_proxy/v2' ] } )
1067+ childProcess = fork ( testFile , {
1068+ cwd,
1069+ env : {
1070+ ...getCiVisEvpProxyConfig ( receiver . port ) ,
1071+ USE_WORKER_THREADS : 'true' ,
1072+ } ,
1073+ stdio : 'pipe' ,
1074+ } )
1075+
1076+ receiver . gatherPayloads ( ( { url } ) => url === '/evp_proxy/v2/api/v2/citestcycle' , 5000 )
1077+ . then ( eventsRequests => {
1078+ const eventTypes = eventsRequests . map ( ( { payload } ) => payload )
1079+ . flatMap ( ( { events } ) => events )
1080+ . map ( event => event . type )
1081+
1082+ assertObjectContains ( eventTypes , [ 'test' , 'test_suite_end' , 'test_session_end' , 'test_module_end' ] )
1083+ done ( )
1084+ } ) . catch ( done )
1085+ } )
1086+ } )
1087+
10011088 it ( 'reports timeout error message' , ( done ) => {
10021089 childProcess = fork ( testFile , {
10031090 cwd,
0 commit comments