execution-metrics.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var ExecutionMetrics = (function () {
  4. function ExecutionMetrics() {
  5. this.successfulSpecs = 0;
  6. this.failedSpecs = 0;
  7. this.pendingSpecs = 0;
  8. this.skippedSpecs = 0;
  9. this.totalSpecsDefined = 0;
  10. this.executedSpecs = 0;
  11. this.globalErrors = [];
  12. this.random = false;
  13. }
  14. ExecutionMetrics.pluralize = function (count) {
  15. return count > 1 ? "s" : "";
  16. };
  17. ExecutionMetrics.prototype.start = function (suiteInfo) {
  18. this.startTime = (new Date()).getTime();
  19. this.totalSpecsDefined = suiteInfo && suiteInfo.totalSpecsDefined ? suiteInfo.totalSpecsDefined : 0;
  20. };
  21. ExecutionMetrics.prototype.stop = function (runDetails) {
  22. var totalSpecs = this.failedSpecs + this.successfulSpecs + this.pendingSpecs;
  23. this.duration = this.formatDuration((new Date()).getTime() - this.startTime);
  24. this.executedSpecs = this.failedSpecs + this.successfulSpecs;
  25. this.totalSpecsDefined = this.totalSpecsDefined ? this.totalSpecsDefined : totalSpecs;
  26. this.skippedSpecs = this.totalSpecsDefined - totalSpecs;
  27. this.random = runDetails.order.random;
  28. this.seed = runDetails.order.seed;
  29. };
  30. ExecutionMetrics.prototype.startSpec = function () {
  31. this.specStartTime = (new Date()).getTime();
  32. };
  33. ExecutionMetrics.prototype.stopSpec = function (result) {
  34. result.duration = this.formatDuration((new Date()).getTime() - this.specStartTime);
  35. };
  36. ExecutionMetrics.prototype.formatDuration = function (durationInMs) {
  37. var duration = "";
  38. var durationInSecs = durationInMs / 1000;
  39. var durationInMins;
  40. var durationInHrs;
  41. if (durationInSecs < 1) {
  42. return durationInSecs + " sec" + ExecutionMetrics.pluralize(durationInSecs);
  43. }
  44. durationInSecs = Math.round(durationInSecs);
  45. if (durationInSecs < 60) {
  46. return durationInSecs + " sec" + ExecutionMetrics.pluralize(durationInSecs);
  47. }
  48. durationInMins = Math.floor(durationInSecs / 60);
  49. durationInSecs = durationInSecs % 60;
  50. if (durationInSecs) {
  51. duration = " " + durationInSecs + " sec" + ExecutionMetrics.pluralize(durationInSecs);
  52. }
  53. if (durationInMins < 60) {
  54. return durationInMins + " min" + ExecutionMetrics.pluralize(durationInMins) + duration;
  55. }
  56. durationInHrs = Math.floor(durationInMins / 60);
  57. durationInMins = durationInMins % 60;
  58. if (durationInMins) {
  59. duration = " " + durationInMins + " min" + ExecutionMetrics.pluralize(durationInMins) + duration;
  60. }
  61. return durationInHrs + " hour" + ExecutionMetrics.pluralize(durationInHrs) + duration;
  62. };
  63. return ExecutionMetrics;
  64. }());
  65. exports.ExecutionMetrics = ExecutionMetrics;
  66. //# sourceMappingURL=execution-metrics.js.map