Skip to content

Commit 7e6a62a

Browse files
authoredDec 31, 2023
fix: match jest json output by making json reporter output ndjson-compatible (#4824)
1 parent 5053a5d commit 7e6a62a

File tree

2 files changed

+5
-485
lines changed

2 files changed

+5
-485
lines changed
 

‎packages/vitest/src/node/reporters/json.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ export class JsonReporter implements Reporter {
148148
testResults,
149149
}
150150

151-
await this.writeReport(JSON.stringify(result, null, 2))
151+
await this.writeReport(JSON.stringify(result))
152152
}
153153

154154
async onFinished(files = this.ctx.state.getFiles()) {

‎test/reporters/tests/__snapshots__/reporters.spec.ts.snap

+4-484
Original file line numberDiff line numberDiff line change
@@ -506,508 +506,28 @@ exports[`json reporter with outputFile 1`] = `
506506
"
507507
`;
508508
509-
exports[`json reporter with outputFile 2`] = `
510-
"{
511-
"numTotalTestSuites": 3,
512-
"numPassedTestSuites": 3,
513-
"numFailedTestSuites": 0,
514-
"numPendingTestSuites": 0,
515-
"numTotalTests": 9,
516-
"numPassedTests": 8,
517-
"numFailedTests": 1,
518-
"numPendingTests": 0,
519-
"numTodoTests": 1,
520-
"startTime": 1642587001759,
521-
"success": false,
522-
"testResults": [
523-
{
524-
"assertionResults": [
525-
{
526-
"ancestorTitles": [
527-
"suite",
528-
"inner suite"
529-
],
530-
"fullName": "suite inner suite Math.sqrt()",
531-
"status": "failed",
532-
"title": "Math.sqrt()",
533-
"duration": 1.4422860145568848,
534-
"failureMessages": [
535-
"expected 2.23606797749979 to equal 2"
536-
],
537-
"location": {
538-
"line": 8,
539-
"column": 32
540-
}
541-
},
542-
{
543-
"ancestorTitles": [
544-
"suite"
545-
],
546-
"fullName": "suite JSON",
547-
"status": "passed",
548-
"title": "JSON",
549-
"duration": 1.0237109661102295,
550-
"failureMessages": []
551-
},
552-
{
553-
"ancestorTitles": [
554-
"suite"
555-
],
556-
"fullName": "suite async with timeout",
557-
"status": "skipped",
558-
"title": "async with timeout",
559-
"failureMessages": []
560-
},
561-
{
562-
"ancestorTitles": [
563-
"suite"
564-
],
565-
"fullName": "suite timeout",
566-
"status": "passed",
567-
"title": "timeout",
568-
"duration": 100.50598406791687,
569-
"failureMessages": []
570-
},
571-
{
572-
"ancestorTitles": [
573-
"suite"
574-
],
575-
"fullName": "suite callback setup success ",
576-
"status": "passed",
577-
"title": "callback setup success ",
578-
"duration": 20.184875011444092,
579-
"failureMessages": []
580-
},
581-
{
582-
"ancestorTitles": [
583-
"suite"
584-
],
585-
"fullName": "suite callback test success ",
586-
"status": "passed",
587-
"title": "callback test success ",
588-
"duration": 0.33245420455932617,
589-
"failureMessages": []
590-
},
591-
{
592-
"ancestorTitles": [
593-
"suite"
594-
],
595-
"fullName": "suite callback setup success done(false)",
596-
"status": "passed",
597-
"title": "callback setup success done(false)",
598-
"duration": 19.738605976104736,
599-
"failureMessages": []
600-
},
601-
{
602-
"ancestorTitles": [
603-
"suite"
604-
],
605-
"fullName": "suite callback test success done(false)",
606-
"status": "passed",
607-
"title": "callback test success done(false)",
608-
"duration": 0.1923508644104004,
609-
"failureMessages": []
610-
},
611-
{
612-
"ancestorTitles": [
613-
"suite"
614-
],
615-
"fullName": "suite todo test",
616-
"status": "todo",
617-
"title": "todo test",
618-
"failureMessages": []
619-
}
620-
],
621-
"startTime": 1642587001759,
622-
"endTime": 1642587001759,
623-
"status": "failed",
624-
"message": "",
625-
"name": "/vitest/test/core/test/basic.test.ts"
626-
}
627-
]
628-
}"
629-
`;
509+
exports[`json reporter with outputFile 2`] = `"{"numTotalTestSuites":3,"numPassedTestSuites":3,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":9,"numPassedTests":8,"numFailedTests":1,"numPendingTests":0,"numTodoTests":1,"startTime":1642587001759,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":["suite","inner suite"],"fullName":"suite inner suite Math.sqrt()","status":"failed","title":"Math.sqrt()","duration":1.4422860145568848,"failureMessages":["expected 2.23606797749979 to equal 2"],"location":{"line":8,"column":32}},{"ancestorTitles":["suite"],"fullName":"suite JSON","status":"passed","title":"JSON","duration":1.0237109661102295,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite async with timeout","status":"skipped","title":"async with timeout","failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite timeout","status":"passed","title":"timeout","duration":100.50598406791687,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback setup success ","status":"passed","title":"callback setup success ","duration":20.184875011444092,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback test success ","status":"passed","title":"callback test success ","duration":0.33245420455932617,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback setup success done(false)","status":"passed","title":"callback setup success done(false)","duration":19.738605976104736,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback test success done(false)","status":"passed","title":"callback test success done(false)","duration":0.1923508644104004,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite todo test","status":"todo","title":"todo test","failureMessages":[]}],"startTime":1642587001759,"endTime":1642587001759,"status":"failed","message":"","name":"/vitest/test/core/test/basic.test.ts"}]}"`;
630510
631511
exports[`json reporter with outputFile in non-existing directory 1`] = `
632512
"JSON report written to <process-cwd>/jsonReportDirectory/deeply/nested/report.json
633513
"
634514
`;
635515
636-
exports[`json reporter with outputFile in non-existing directory 2`] = `
637-
"{
638-
"numTotalTestSuites": 3,
639-
"numPassedTestSuites": 3,
640-
"numFailedTestSuites": 0,
641-
"numPendingTestSuites": 0,
642-
"numTotalTests": 9,
643-
"numPassedTests": 8,
644-
"numFailedTests": 1,
645-
"numPendingTests": 0,
646-
"numTodoTests": 1,
647-
"startTime": 1642587001759,
648-
"success": false,
649-
"testResults": [
650-
{
651-
"assertionResults": [
652-
{
653-
"ancestorTitles": [
654-
"suite",
655-
"inner suite"
656-
],
657-
"fullName": "suite inner suite Math.sqrt()",
658-
"status": "failed",
659-
"title": "Math.sqrt()",
660-
"duration": 1.4422860145568848,
661-
"failureMessages": [
662-
"expected 2.23606797749979 to equal 2"
663-
],
664-
"location": {
665-
"line": 8,
666-
"column": 32
667-
}
668-
},
669-
{
670-
"ancestorTitles": [
671-
"suite"
672-
],
673-
"fullName": "suite JSON",
674-
"status": "passed",
675-
"title": "JSON",
676-
"duration": 1.0237109661102295,
677-
"failureMessages": []
678-
},
679-
{
680-
"ancestorTitles": [
681-
"suite"
682-
],
683-
"fullName": "suite async with timeout",
684-
"status": "skipped",
685-
"title": "async with timeout",
686-
"failureMessages": []
687-
},
688-
{
689-
"ancestorTitles": [
690-
"suite"
691-
],
692-
"fullName": "suite timeout",
693-
"status": "passed",
694-
"title": "timeout",
695-
"duration": 100.50598406791687,
696-
"failureMessages": []
697-
},
698-
{
699-
"ancestorTitles": [
700-
"suite"
701-
],
702-
"fullName": "suite callback setup success ",
703-
"status": "passed",
704-
"title": "callback setup success ",
705-
"duration": 20.184875011444092,
706-
"failureMessages": []
707-
},
708-
{
709-
"ancestorTitles": [
710-
"suite"
711-
],
712-
"fullName": "suite callback test success ",
713-
"status": "passed",
714-
"title": "callback test success ",
715-
"duration": 0.33245420455932617,
716-
"failureMessages": []
717-
},
718-
{
719-
"ancestorTitles": [
720-
"suite"
721-
],
722-
"fullName": "suite callback setup success done(false)",
723-
"status": "passed",
724-
"title": "callback setup success done(false)",
725-
"duration": 19.738605976104736,
726-
"failureMessages": []
727-
},
728-
{
729-
"ancestorTitles": [
730-
"suite"
731-
],
732-
"fullName": "suite callback test success done(false)",
733-
"status": "passed",
734-
"title": "callback test success done(false)",
735-
"duration": 0.1923508644104004,
736-
"failureMessages": []
737-
},
738-
{
739-
"ancestorTitles": [
740-
"suite"
741-
],
742-
"fullName": "suite todo test",
743-
"status": "todo",
744-
"title": "todo test",
745-
"failureMessages": []
746-
}
747-
],
748-
"startTime": 1642587001759,
749-
"endTime": 1642587001759,
750-
"status": "failed",
751-
"message": "",
752-
"name": "/vitest/test/core/test/basic.test.ts"
753-
}
754-
]
755-
}"
756-
`;
516+
exports[`json reporter with outputFile in non-existing directory 2`] = `"{"numTotalTestSuites":3,"numPassedTestSuites":3,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":9,"numPassedTests":8,"numFailedTests":1,"numPendingTests":0,"numTodoTests":1,"startTime":1642587001759,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":["suite","inner suite"],"fullName":"suite inner suite Math.sqrt()","status":"failed","title":"Math.sqrt()","duration":1.4422860145568848,"failureMessages":["expected 2.23606797749979 to equal 2"],"location":{"line":8,"column":32}},{"ancestorTitles":["suite"],"fullName":"suite JSON","status":"passed","title":"JSON","duration":1.0237109661102295,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite async with timeout","status":"skipped","title":"async with timeout","failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite timeout","status":"passed","title":"timeout","duration":100.50598406791687,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback setup success ","status":"passed","title":"callback setup success ","duration":20.184875011444092,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback test success ","status":"passed","title":"callback test success ","duration":0.33245420455932617,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback setup success done(false)","status":"passed","title":"callback setup success done(false)","duration":19.738605976104736,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback test success done(false)","status":"passed","title":"callback test success done(false)","duration":0.1923508644104004,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite todo test","status":"todo","title":"todo test","failureMessages":[]}],"startTime":1642587001759,"endTime":1642587001759,"status":"failed","message":"","name":"/vitest/test/core/test/basic.test.ts"}]}"`;
757517
758518
exports[`json reporter with outputFile object 1`] = `
759519
"JSON report written to <process-cwd>/report_object.json
760520
"
761521
`;
762522
763-
exports[`json reporter with outputFile object 2`] = `
764-
"{
765-
"numTotalTestSuites": 3,
766-
"numPassedTestSuites": 3,
767-
"numFailedTestSuites": 0,
768-
"numPendingTestSuites": 0,
769-
"numTotalTests": 9,
770-
"numPassedTests": 8,
771-
"numFailedTests": 1,
772-
"numPendingTests": 0,
773-
"numTodoTests": 1,
774-
"startTime": 1642587001759,
775-
"success": false,
776-
"testResults": [
777-
{
778-
"assertionResults": [
779-
{
780-
"ancestorTitles": [
781-
"suite",
782-
"inner suite"
783-
],
784-
"fullName": "suite inner suite Math.sqrt()",
785-
"status": "failed",
786-
"title": "Math.sqrt()",
787-
"duration": 1.4422860145568848,
788-
"failureMessages": [
789-
"expected 2.23606797749979 to equal 2"
790-
],
791-
"location": {
792-
"line": 8,
793-
"column": 32
794-
}
795-
},
796-
{
797-
"ancestorTitles": [
798-
"suite"
799-
],
800-
"fullName": "suite JSON",
801-
"status": "passed",
802-
"title": "JSON",
803-
"duration": 1.0237109661102295,
804-
"failureMessages": []
805-
},
806-
{
807-
"ancestorTitles": [
808-
"suite"
809-
],
810-
"fullName": "suite async with timeout",
811-
"status": "skipped",
812-
"title": "async with timeout",
813-
"failureMessages": []
814-
},
815-
{
816-
"ancestorTitles": [
817-
"suite"
818-
],
819-
"fullName": "suite timeout",
820-
"status": "passed",
821-
"title": "timeout",
822-
"duration": 100.50598406791687,
823-
"failureMessages": []
824-
},
825-
{
826-
"ancestorTitles": [
827-
"suite"
828-
],
829-
"fullName": "suite callback setup success ",
830-
"status": "passed",
831-
"title": "callback setup success ",
832-
"duration": 20.184875011444092,
833-
"failureMessages": []
834-
},
835-
{
836-
"ancestorTitles": [
837-
"suite"
838-
],
839-
"fullName": "suite callback test success ",
840-
"status": "passed",
841-
"title": "callback test success ",
842-
"duration": 0.33245420455932617,
843-
"failureMessages": []
844-
},
845-
{
846-
"ancestorTitles": [
847-
"suite"
848-
],
849-
"fullName": "suite callback setup success done(false)",
850-
"status": "passed",
851-
"title": "callback setup success done(false)",
852-
"duration": 19.738605976104736,
853-
"failureMessages": []
854-
},
855-
{
856-
"ancestorTitles": [
857-
"suite"
858-
],
859-
"fullName": "suite callback test success done(false)",
860-
"status": "passed",
861-
"title": "callback test success done(false)",
862-
"duration": 0.1923508644104004,
863-
"failureMessages": []
864-
},
865-
{
866-
"ancestorTitles": [
867-
"suite"
868-
],
869-
"fullName": "suite todo test",
870-
"status": "todo",
871-
"title": "todo test",
872-
"failureMessages": []
873-
}
874-
],
875-
"startTime": 1642587001759,
876-
"endTime": 1642587001759,
877-
"status": "failed",
878-
"message": "",
879-
"name": "/vitest/test/core/test/basic.test.ts"
880-
}
881-
]
882-
}"
883-
`;
523+
exports[`json reporter with outputFile object 2`] = `"{"numTotalTestSuites":3,"numPassedTestSuites":3,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":9,"numPassedTests":8,"numFailedTests":1,"numPendingTests":0,"numTodoTests":1,"startTime":1642587001759,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":["suite","inner suite"],"fullName":"suite inner suite Math.sqrt()","status":"failed","title":"Math.sqrt()","duration":1.4422860145568848,"failureMessages":["expected 2.23606797749979 to equal 2"],"location":{"line":8,"column":32}},{"ancestorTitles":["suite"],"fullName":"suite JSON","status":"passed","title":"JSON","duration":1.0237109661102295,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite async with timeout","status":"skipped","title":"async with timeout","failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite timeout","status":"passed","title":"timeout","duration":100.50598406791687,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback setup success ","status":"passed","title":"callback setup success ","duration":20.184875011444092,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback test success ","status":"passed","title":"callback test success ","duration":0.33245420455932617,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback setup success done(false)","status":"passed","title":"callback setup success done(false)","duration":19.738605976104736,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback test success done(false)","status":"passed","title":"callback test success done(false)","duration":0.1923508644104004,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite todo test","status":"todo","title":"todo test","failureMessages":[]}],"startTime":1642587001759,"endTime":1642587001759,"status":"failed","message":"","name":"/vitest/test/core/test/basic.test.ts"}]}"`;
884524
885525
exports[`json reporter with outputFile object in non-existing directory 1`] = `
886526
"JSON report written to <process-cwd>/jsonReportDirectory_object/deeply/nested/report.json
887527
"
888528
`;
889529
890-
exports[`json reporter with outputFile object in non-existing directory 2`] = `
891-
"{
892-
"numTotalTestSuites": 3,
893-
"numPassedTestSuites": 3,
894-
"numFailedTestSuites": 0,
895-
"numPendingTestSuites": 0,
896-
"numTotalTests": 9,
897-
"numPassedTests": 8,
898-
"numFailedTests": 1,
899-
"numPendingTests": 0,
900-
"numTodoTests": 1,
901-
"startTime": 1642587001759,
902-
"success": false,
903-
"testResults": [
904-
{
905-
"assertionResults": [
906-
{
907-
"ancestorTitles": [
908-
"suite",
909-
"inner suite"
910-
],
911-
"fullName": "suite inner suite Math.sqrt()",
912-
"status": "failed",
913-
"title": "Math.sqrt()",
914-
"duration": 1.4422860145568848,
915-
"failureMessages": [
916-
"expected 2.23606797749979 to equal 2"
917-
],
918-
"location": {
919-
"line": 8,
920-
"column": 32
921-
}
922-
},
923-
{
924-
"ancestorTitles": [
925-
"suite"
926-
],
927-
"fullName": "suite JSON",
928-
"status": "passed",
929-
"title": "JSON",
930-
"duration": 1.0237109661102295,
931-
"failureMessages": []
932-
},
933-
{
934-
"ancestorTitles": [
935-
"suite"
936-
],
937-
"fullName": "suite async with timeout",
938-
"status": "skipped",
939-
"title": "async with timeout",
940-
"failureMessages": []
941-
},
942-
{
943-
"ancestorTitles": [
944-
"suite"
945-
],
946-
"fullName": "suite timeout",
947-
"status": "passed",
948-
"title": "timeout",
949-
"duration": 100.50598406791687,
950-
"failureMessages": []
951-
},
952-
{
953-
"ancestorTitles": [
954-
"suite"
955-
],
956-
"fullName": "suite callback setup success ",
957-
"status": "passed",
958-
"title": "callback setup success ",
959-
"duration": 20.184875011444092,
960-
"failureMessages": []
961-
},
962-
{
963-
"ancestorTitles": [
964-
"suite"
965-
],
966-
"fullName": "suite callback test success ",
967-
"status": "passed",
968-
"title": "callback test success ",
969-
"duration": 0.33245420455932617,
970-
"failureMessages": []
971-
},
972-
{
973-
"ancestorTitles": [
974-
"suite"
975-
],
976-
"fullName": "suite callback setup success done(false)",
977-
"status": "passed",
978-
"title": "callback setup success done(false)",
979-
"duration": 19.738605976104736,
980-
"failureMessages": []
981-
},
982-
{
983-
"ancestorTitles": [
984-
"suite"
985-
],
986-
"fullName": "suite callback test success done(false)",
987-
"status": "passed",
988-
"title": "callback test success done(false)",
989-
"duration": 0.1923508644104004,
990-
"failureMessages": []
991-
},
992-
{
993-
"ancestorTitles": [
994-
"suite"
995-
],
996-
"fullName": "suite todo test",
997-
"status": "todo",
998-
"title": "todo test",
999-
"failureMessages": []
1000-
}
1001-
],
1002-
"startTime": 1642587001759,
1003-
"endTime": 1642587001759,
1004-
"status": "failed",
1005-
"message": "",
1006-
"name": "/vitest/test/core/test/basic.test.ts"
1007-
}
1008-
]
1009-
}"
1010-
`;
530+
exports[`json reporter with outputFile object in non-existing directory 2`] = `"{"numTotalTestSuites":3,"numPassedTestSuites":3,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":9,"numPassedTests":8,"numFailedTests":1,"numPendingTests":0,"numTodoTests":1,"startTime":1642587001759,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":["suite","inner suite"],"fullName":"suite inner suite Math.sqrt()","status":"failed","title":"Math.sqrt()","duration":1.4422860145568848,"failureMessages":["expected 2.23606797749979 to equal 2"],"location":{"line":8,"column":32}},{"ancestorTitles":["suite"],"fullName":"suite JSON","status":"passed","title":"JSON","duration":1.0237109661102295,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite async with timeout","status":"skipped","title":"async with timeout","failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite timeout","status":"passed","title":"timeout","duration":100.50598406791687,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback setup success ","status":"passed","title":"callback setup success ","duration":20.184875011444092,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback test success ","status":"passed","title":"callback test success ","duration":0.33245420455932617,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback setup success done(false)","status":"passed","title":"callback setup success done(false)","duration":19.738605976104736,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite callback test success done(false)","status":"passed","title":"callback test success done(false)","duration":0.1923508644104004,"failureMessages":[]},{"ancestorTitles":["suite"],"fullName":"suite todo test","status":"todo","title":"todo test","failureMessages":[]}],"startTime":1642587001759,"endTime":1642587001759,"status":"failed","message":"","name":"/vitest/test/core/test/basic.test.ts"}]}"`;
1011531
1012532
exports[`tap reporter 1`] = `
1013533
"TAP version 13

0 commit comments

Comments
 (0)
Please sign in to comment.