reporter.cjs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. /* eslint-disable import/no-extraneous-dependencies */
  4. const reporters_1 = require("@jest/reporters");
  5. const reporter_js_1 = require("../utils/jestlike/reporter.cjs");
  6. class LangSmithEvalReporter extends reporters_1.DefaultReporter {
  7. async onTestResult(test, testResult, aggregatedResults) {
  8. if (testResult.failureMessage) {
  9. console.log(testResult.failureMessage);
  10. }
  11. const groupedTestResults = testResult.testResults.reduce((groups, testResult) => {
  12. const ancestorTitle = testResult.ancestorTitles.join(" > ");
  13. if (groups[ancestorTitle] === undefined) {
  14. groups[ancestorTitle] = [];
  15. }
  16. groups[ancestorTitle].push(testResult);
  17. return groups;
  18. }, {});
  19. try {
  20. for (const testGroupName of Object.keys(groupedTestResults)) {
  21. const resultGroup = groupedTestResults[testGroupName];
  22. const unskippedTests = resultGroup.filter((result) => result.status !== "pending");
  23. const overallResult = unskippedTests.length === 0
  24. ? "skip"
  25. : unskippedTests.every((result) => result.status === "passed")
  26. ? "pass"
  27. : "fail";
  28. await (0, reporter_js_1.printReporterTable)(testGroupName, resultGroup, overallResult);
  29. }
  30. }
  31. catch (e) {
  32. console.log("Failed to display LangSmith eval results:", e.message);
  33. super.onTestResult(test, testResult, aggregatedResults);
  34. }
  35. }
  36. }
  37. exports.default = LangSmithEvalReporter;