@elastic/synthetics 1.0.0-beta.2 → 1.0.0-beta.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/CHANGELOG.md +235 -0
  2. package/NOTICE.txt +250 -0
  3. package/README.md +2 -1
  4. package/dist/cli.js +87 -56
  5. package/dist/cli.js.map +1 -1
  6. package/dist/common_types.d.ts +116 -14
  7. package/dist/common_types.d.ts.map +1 -1
  8. package/dist/config.d.ts +2 -5
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +5 -5
  11. package/dist/config.js.map +1 -1
  12. package/dist/core/browser-service.js +5 -5
  13. package/dist/core/browser-service.js.map +1 -1
  14. package/dist/core/expect.d.ts +177 -0
  15. package/dist/core/expect.d.ts.map +1 -0
  16. package/dist/core/expect.js +33 -0
  17. package/dist/core/expect.js.map +1 -0
  18. package/dist/core/gatherer.d.ts +4 -7
  19. package/dist/core/gatherer.d.ts.map +1 -1
  20. package/dist/core/gatherer.js +39 -12
  21. package/dist/core/gatherer.js.map +1 -1
  22. package/dist/core/index.d.ts +5 -5
  23. package/dist/core/index.d.ts.map +1 -1
  24. package/dist/core/index.js +2 -2
  25. package/dist/core/index.js.map +1 -1
  26. package/dist/core/logger.d.ts +0 -1
  27. package/dist/core/logger.d.ts.map +1 -1
  28. package/dist/core/logger.js +3 -16
  29. package/dist/core/logger.js.map +1 -1
  30. package/dist/core/runner.d.ts +54 -45
  31. package/dist/core/runner.d.ts.map +1 -1
  32. package/dist/core/runner.js +181 -71
  33. package/dist/core/runner.js.map +1 -1
  34. package/dist/dsl/journey.d.ts +13 -4
  35. package/dist/dsl/journey.d.ts.map +1 -1
  36. package/dist/dsl/journey.js +40 -1
  37. package/dist/dsl/journey.js.map +1 -1
  38. package/dist/formatter/javascript.d.ts +73 -0
  39. package/dist/formatter/javascript.d.ts.map +1 -0
  40. package/dist/formatter/javascript.js +274 -0
  41. package/dist/formatter/javascript.js.map +1 -0
  42. package/dist/helpers.d.ts +33 -12
  43. package/dist/helpers.d.ts.map +1 -1
  44. package/dist/helpers.js +108 -54
  45. package/dist/helpers.js.map +1 -1
  46. package/dist/index.d.ts +8 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +6 -7
  49. package/dist/index.js.map +1 -1
  50. package/dist/parse_args.d.ts +5 -2
  51. package/dist/parse_args.d.ts.map +1 -1
  52. package/dist/parse_args.js +59 -16
  53. package/dist/parse_args.js.map +1 -1
  54. package/dist/plugins/browser-console.d.ts +5 -8
  55. package/dist/plugins/browser-console.d.ts.map +1 -1
  56. package/dist/plugins/browser-console.js +27 -8
  57. package/dist/plugins/browser-console.js.map +1 -1
  58. package/dist/plugins/network.d.ts +23 -20
  59. package/dist/plugins/network.d.ts.map +1 -1
  60. package/dist/plugins/network.js +149 -124
  61. package/dist/plugins/network.js.map +1 -1
  62. package/dist/plugins/performance.d.ts +5 -5
  63. package/dist/plugins/performance.d.ts.map +1 -1
  64. package/dist/plugins/performance.js +5 -5
  65. package/dist/plugins/performance.js.map +1 -1
  66. package/dist/plugins/plugin-manager.d.ts +11 -11
  67. package/dist/plugins/plugin-manager.d.ts.map +1 -1
  68. package/dist/plugins/plugin-manager.js +40 -24
  69. package/dist/plugins/plugin-manager.js.map +1 -1
  70. package/dist/plugins/tracing.d.ts +10 -25
  71. package/dist/plugins/tracing.d.ts.map +1 -1
  72. package/dist/plugins/tracing.js +40 -26
  73. package/dist/plugins/tracing.js.map +1 -1
  74. package/dist/reporters/base.d.ts +0 -1
  75. package/dist/reporters/base.d.ts.map +1 -1
  76. package/dist/reporters/base.js +34 -32
  77. package/dist/reporters/base.js.map +1 -1
  78. package/dist/reporters/json.d.ts +46 -59
  79. package/dist/reporters/json.d.ts.map +1 -1
  80. package/dist/reporters/json.js +188 -70
  81. package/dist/reporters/json.js.map +1 -1
  82. package/dist/reporters/junit.d.ts.map +1 -1
  83. package/dist/reporters/junit.js +7 -7
  84. package/dist/reporters/junit.js.map +1 -1
  85. package/dist/sdk/lh-trace-processor.d.ts +304 -0
  86. package/dist/sdk/lh-trace-processor.d.ts.map +1 -0
  87. package/dist/sdk/lh-trace-processor.js +832 -0
  88. package/dist/sdk/lh-trace-processor.js.map +1 -0
  89. package/dist/sdk/trace-metrics.d.ts +61 -0
  90. package/dist/sdk/trace-metrics.d.ts.map +1 -0
  91. package/dist/sdk/trace-metrics.js +252 -0
  92. package/dist/sdk/trace-metrics.js.map +1 -0
  93. package/dist/sdk/trace-processor.d.ts +106 -0
  94. package/dist/sdk/trace-processor.d.ts.map +1 -0
  95. package/dist/sdk/trace-processor.js +74 -0
  96. package/dist/sdk/trace-processor.js.map +1 -0
  97. package/dist/tsconfig.tsbuildinfo +1 -1575
  98. package/package.json +27 -16
  99. package/src/cli.ts +68 -45
  100. package/src/common_types.ts +138 -14
  101. package/src/config.ts +2 -5
  102. package/src/core/expect.ts +187 -0
  103. package/src/core/gatherer.ts +48 -24
  104. package/src/core/index.ts +6 -6
  105. package/src/core/logger.ts +1 -12
  106. package/src/core/runner.ts +259 -112
  107. package/src/dsl/journey.ts +28 -6
  108. package/src/formatter/javascript.ts +330 -0
  109. package/src/helpers.ts +114 -24
  110. package/src/index.ts +7 -6
  111. package/src/parse_args.ts +97 -22
  112. package/src/plugins/browser-console.ts +30 -13
  113. package/src/plugins/network.ts +175 -159
  114. package/src/plugins/performance.ts +7 -7
  115. package/src/plugins/plugin-manager.ts +47 -36
  116. package/src/plugins/tracing.ts +43 -54
  117. package/src/reporters/base.ts +29 -23
  118. package/src/reporters/json.ts +259 -80
  119. package/src/reporters/junit.ts +1 -1
  120. package/src/sdk/lh-trace-processor.ts +1033 -0
  121. package/src/sdk/trace-metrics.ts +287 -0
  122. package/src/sdk/trace-processor.ts +147 -0
@@ -22,35 +22,20 @@
22
22
  * THE SOFTWARE.
23
23
  *
24
24
  */
25
- import { CDPSession } from 'playwright-chromium';
26
- import { FilmStrip } from '../common_types';
27
- /**
28
- * Trace Event Format
29
- * https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU
30
- */
31
- declare type TraceEvent = {
32
- name: string;
33
- cat: string;
34
- pid: number;
35
- tid: number;
36
- ph?: string;
37
- args?: {
38
- snapshot: string;
39
- };
40
- /**
41
- * Platform specific monotonic non decreasing clock time
42
- * https://source.chromium.org/chromium/chromium/src/+/master:base/time/time.h;l=936;bpv=0;bpt=0
43
- */
44
- ts: number;
25
+ import { Driver, PluginOutput } from '../common_types';
26
+ export declare type TraceOptions = {
27
+ filmstrips?: boolean;
28
+ trace?: boolean;
45
29
  };
46
- export declare function filterFilmstrips(traceEvents: Array<TraceEvent>): Array<FilmStrip>;
47
30
  /**
48
- * Custom Tracer that only traces the filmstrips
31
+ * Custom Tracer that listenes for events from specified categories
49
32
  * https://chromedevtools.github.io/devtools-protocol/tot/Tracing/
50
33
  */
51
34
  export declare class Tracing {
52
- start(client: CDPSession): Promise<void>;
53
- stop(client: CDPSession): Promise<TraceEvent[]>;
35
+ private driver;
36
+ private options;
37
+ constructor(driver: Driver, options: TraceOptions);
38
+ start(): Promise<void>;
39
+ stop(): Promise<Partial<PluginOutput>>;
54
40
  }
55
- export {};
56
41
  //# sourceMappingURL=tracing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/plugins/tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C;;;GAGG;AACH,aAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IAEb,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,MAAM,CAAC;IAEZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,GAC7B,KAAK,CAAC,SAAS,CAAC,CAelB;AAED;;;GAGG;AACH,qBAAa,OAAO;IACZ,KAAK,CAAC,MAAM,EAAE,UAAU;IAmBxB,IAAI,CAAC,MAAM,EAAE,UAAU;CAgB9B"}
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/plugins/tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIvD,oBAAY,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,qBAAa,OAAO;IACN,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,OAAO;gBAA/B,MAAM,EAAE,MAAM,EAAU,OAAO,EAAE,YAAY;IAE3D,KAAK;IAkCL,IAAI;CA0BX"}
@@ -24,48 +24,53 @@
24
24
  *
25
25
  */
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.Tracing = exports.filterFilmstrips = void 0;
28
- const helpers_1 = require("../helpers");
29
- function filterFilmstrips(traceEvents) {
30
- const events = traceEvents.filter(event => {
31
- const { args, cat, name } = event;
32
- return (name === 'Screenshot' &&
33
- cat === 'disabled-by-default-devtools.screenshot' &&
34
- (args === null || args === void 0 ? void 0 : args.snapshot));
35
- });
36
- return events.map(event => ({
37
- snapshot: event.args.snapshot,
38
- ts: event.ts,
39
- startTime: helpers_1.convertTraceTimestamp(event.ts),
40
- }));
41
- }
42
- exports.filterFilmstrips = filterFilmstrips;
27
+ exports.Tracing = void 0;
28
+ const trace_metrics_1 = require("../sdk/trace-metrics");
29
+ const trace_processor_1 = require("../sdk/trace-processor");
43
30
  /**
44
- * Custom Tracer that only traces the filmstrips
31
+ * Custom Tracer that listenes for events from specified categories
45
32
  * https://chromedevtools.github.io/devtools-protocol/tot/Tracing/
46
33
  */
47
34
  class Tracing {
48
- async start(client) {
35
+ constructor(driver, options) {
36
+ this.driver = driver;
37
+ this.options = options;
38
+ }
39
+ async start() {
49
40
  const includedCategories = [
50
41
  // exclude all default categories
51
42
  '-*',
52
- // capture screenshots
53
- 'disabled-by-default-devtools.screenshot',
54
43
  ];
55
- await client.send('Tracing.start', {
44
+ if (this.options.filmstrips) {
45
+ // capture screenshots - up to 450 max for each trace (https://goo.gl/rBfhn4)
46
+ includedCategories.push('disabled-by-default-devtools.screenshot');
47
+ }
48
+ if (this.options.trace) {
49
+ includedCategories.push(
50
+ // Used instead of 'toplevel' in Chrome 71+
51
+ 'disabled-by-default-lighthouse',
52
+ // Cumulative Layout Shift metric
53
+ 'loading',
54
+ // UserTiming marks/measures
55
+ 'blink.user_timing',
56
+ // Most of the events we need are from these two categories
57
+ // Includes FCP, LCP, Main thread frames, process, etc.
58
+ 'devtools.timeline', 'disabled-by-default-devtools.timeline');
59
+ }
60
+ await this.driver.client.send('Tracing.start', {
56
61
  /**
57
62
  * Using `ReportEvents` makes gathering trace events
58
63
  * much faster as opposed to using `ReturnAsStream` mode
59
64
  */
60
65
  transferMode: 'ReportEvents',
61
- traceConfig: {
62
- includedCategories,
63
- },
66
+ categories: includedCategories.join(','),
67
+ options: 'sampling-frequency=10000', // 1000 is default
64
68
  });
65
69
  }
66
- async stop(client) {
70
+ async stop() {
67
71
  const events = [];
68
72
  const collectListener = payload => events.push(...payload.value);
73
+ const { client } = this.driver;
69
74
  client.on('Tracing.dataCollected', collectListener);
70
75
  const [traceEvents] = await Promise.all([
71
76
  new Promise(resolve => client.once('Tracing.tracingComplete', () => {
@@ -74,7 +79,16 @@ class Tracing {
74
79
  })),
75
80
  client.send('Tracing.end'),
76
81
  ]);
77
- return traceEvents;
82
+ const output = {};
83
+ if (this.options.filmstrips) {
84
+ output.filmstrips = trace_metrics_1.Filmstrips.compute(traceEvents);
85
+ }
86
+ if (this.options.trace) {
87
+ Object.assign(output, {
88
+ ...trace_processor_1.TraceProcessor.computeTrace(traceEvents),
89
+ });
90
+ }
91
+ return output;
78
92
  }
79
93
  }
80
94
  exports.Tracing = Tracing;
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/plugins/tracing.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AAIH,wCAAmD;AA0BnD,SAAgB,gBAAgB,CAC9B,WAA8B;IAE9B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACxC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAClC,OAAO,CACL,IAAI,KAAK,YAAY;YACrB,GAAG,KAAK,yCAAyC;aACjD,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAA,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ;QAC7B,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,SAAS,EAAE,+BAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;KAC3C,CAAC,CAAC,CAAC;AACN,CAAC;AAjBD,4CAiBC;AAED;;;GAGG;AACH,MAAa,OAAO;IAClB,KAAK,CAAC,KAAK,CAAC,MAAkB;QAC5B,MAAM,kBAAkB,GAAG;YACzB,iCAAiC;YACjC,IAAI;YACJ,sBAAsB;YACtB,yCAAyC;SAC1C,CAAC;QACF,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;YACjC;;;eAGG;YACH,YAAY,EAAE,cAAc;YAC5B,WAAW,EAAE;gBACX,kBAAkB;aACnB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAkB;QAC3B,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,CAAC,EAAE,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;QAEpD,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CACpB,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;gBAC1C,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;gBACrD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CACH;YACD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,WAAgC,CAAC;IAC1C,CAAC;CACF;AApCD,0BAoCC"}
1
+ {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/plugins/tracing.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AAGH,wDAAkD;AAClD,4DAAoE;AAOpE;;;GAGG;AACH,MAAa,OAAO;IAClB,YAAoB,MAAc,EAAU,OAAqB;QAA7C,WAAM,GAAN,MAAM,CAAQ;QAAU,YAAO,GAAP,OAAO,CAAc;IAAG,CAAC;IAErE,KAAK,CAAC,KAAK;QACT,MAAM,kBAAkB,GAAG;YACzB,iCAAiC;YACjC,IAAI;SACL,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,6EAA6E;YAC7E,kBAAkB,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;SACpE;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACtB,kBAAkB,CAAC,IAAI;YACrB,2CAA2C;YAC3C,gCAAgC;YAChC,iCAAiC;YACjC,SAAS;YACT,4BAA4B;YAC5B,mBAAmB;YACnB,2DAA2D;YAC3D,uDAAuD;YACvD,mBAAmB,EACnB,uCAAuC,CACxC,CAAC;SACH;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;YAC7C;;;eAGG;YACH,YAAY,EAAE,cAAc;YAC5B,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;YACxC,OAAO,EAAE,0BAA0B,EAAE,kBAAkB;SACxD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,MAAM,CAAC,EAAE,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;QAEpD,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CACpB,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;gBAC1C,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;gBACrD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CACH;YACD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,MAAM,GAA0B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,MAAM,CAAC,UAAU,GAAG,0BAAU,CAAC,OAAO,CAAC,WAAgC,CAAC,CAAC;SAC1E;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACtB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;gBACpB,GAAG,gCAAc,CAAC,YAAY,CAAC,WAAgC,CAAC;aACjE,CAAC,CAAC;SACJ;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA/DD,0BA+DC"}
@@ -30,7 +30,6 @@ export default class BaseReporter {
30
30
  stream: SonicBoom;
31
31
  fd: number;
32
32
  constructor(runner: Runner, options?: ReporterOptions);
33
- close(): void;
34
33
  _registerListeners(): void;
35
34
  write(message: any): void;
36
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/reporters/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,MAAM,MAAM,gBAAgB,CAAC;AAQpC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyB7C,MAAM,CAAC,OAAO,OAAO,YAAY;IAIZ,MAAM,EAAE,MAAM;IAHjC,MAAM,EAAE,SAAS,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;gBAEQ,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB;IAOhE,KAAK;IAmBL,kBAAkB;IAsClB,KAAK,CAAC,OAAO,KAAA;CAMd"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/reporters/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,MAAM,MAAM,gBAAgB,CAAC;AAQpC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyB7C,MAAM,CAAC,OAAO,OAAO,YAAY;IAIZ,MAAM,EAAE,MAAM;IAHjC,MAAM,EAAE,SAAS,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;gBAEQ,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB;IAiBhE,kBAAkB;IAqDlB,KAAK,CAAC,OAAO,KAAA;CAMd"}
@@ -32,21 +32,21 @@ const colors_1 = require("kleur/colors");
32
32
  const helpers_1 = require("../helpers");
33
33
  function renderError(error) {
34
34
  let output = '';
35
- const outer = helpers_1.indent('');
36
- const inner = helpers_1.indent(outer);
35
+ const outer = (0, helpers_1.indent)('');
36
+ const inner = (0, helpers_1.indent)(outer);
37
37
  const container = outer + '---\n';
38
38
  output += container;
39
39
  let stack = error.stack;
40
40
  if (stack) {
41
41
  output += inner + 'stack: |-\n';
42
- stack = helpers_1.rewriteErrorStack(stack, helpers_1.findPWLogsIndexes(stack));
42
+ stack = (0, helpers_1.rewriteErrorStack)(stack, (0, helpers_1.findPWLogsIndexes)(stack));
43
43
  const lines = String(stack).split('\n');
44
44
  for (const line of lines) {
45
45
  output += inner + ' ' + line + '\n';
46
46
  }
47
47
  }
48
48
  output += container;
49
- return colors_1.red(output);
49
+ return (0, colors_1.red)(output);
50
50
  }
51
51
  function renderDuration(durationMs) {
52
52
  return parseInt(durationMs);
@@ -55,28 +55,17 @@ class BaseReporter {
55
55
  constructor(runner, options = {}) {
56
56
  this.runner = runner;
57
57
  this.fd = options.fd || process.stdout.fd;
58
- this.stream = new sonic_boom_1.default({ fd: this.fd, sync: true });
58
+ /**
59
+ * minLength is set to 1 byte to make sure we flush the
60
+ * content even if its the last byte on the stream buffer
61
+ * before destroying the pipe with underlying file descriptor
62
+ */
63
+ this.stream = new sonic_boom_1.default({ fd: this.fd, sync: true, minLength: 1 });
64
+ // flushSync is used here to make sure all the data from the underlying
65
+ // SonicBoom stream buffer is completely written to the fd before closing
66
+ // the process
67
+ this.runner.on('end', () => this.stream.flushSync());
59
68
  this._registerListeners();
60
- this.runner.on('end', () => this.close());
61
- }
62
- close() {
63
- if (this.fd <= 2) {
64
- /**
65
- * For stdout/stderr we destroy stream once data is written and run
66
- * it as the last listener giving enough room for
67
- * other reporters to write to stream
68
- */
69
- setImmediate(() => this.stream.end());
70
- }
71
- else {
72
- /**
73
- * If the user has passed a custom FD we don't close the FD, but we do flush it
74
- * to give them more control. This is important because FDs should only be closed
75
- * once, and the primary use case for custom FDs is being called by heartbeat, which
76
- * closes the FD after the process exits
77
- */
78
- this.stream.flush();
79
- }
80
69
  }
81
70
  _registerListeners() {
82
71
  const result = {
@@ -89,22 +78,35 @@ class BaseReporter {
89
78
  });
90
79
  this.runner.on('step:end', ({ step, start, end, error, status }) => {
91
80
  const message = `${helpers_1.symbols[status]} Step: '${step.name}' ${status} (${renderDuration((end - start) * 1000)} ms)`;
92
- this.write(helpers_1.indent(message));
81
+ this.write((0, helpers_1.indent)(message));
93
82
  error && this.write(renderError(error));
94
83
  result[status]++;
95
84
  });
85
+ this.runner.on('journey:end', ({ error }) => {
86
+ const { failed, succeeded, skipped } = result;
87
+ const total = failed + succeeded + skipped;
88
+ /**
89
+ * Render the error on the terminal only when no steps could
90
+ * be executed which means the error happened in one of the hooks
91
+ */
92
+ if (total === 0 && error) {
93
+ this.write(renderError(error));
94
+ }
95
+ });
96
96
  this.runner.on('end', () => {
97
97
  const { failed, succeeded, skipped } = result;
98
98
  const total = failed + succeeded + skipped;
99
+ let message = '\n';
99
100
  if (total === 0) {
100
- this.write('No tests found!');
101
+ message = 'No tests found!';
102
+ message += ` (${renderDuration((0, helpers_1.now)())} ms) \n`;
103
+ this.write(message);
101
104
  return;
102
105
  }
103
- let message = '\n';
104
- message += succeeded > 0 ? colors_1.green(` ${succeeded} passed`) : '';
105
- message += failed > 0 ? colors_1.red(` ${failed} failed`) : '';
106
- message += skipped > 0 ? colors_1.cyan(` ${skipped} skipped`) : '';
107
- message += ` (${renderDuration(helpers_1.now())} ms) \n`;
106
+ message += succeeded > 0 ? (0, colors_1.green)(` ${succeeded} passed`) : '';
107
+ message += failed > 0 ? (0, colors_1.red)(` ${failed} failed`) : '';
108
+ message += skipped > 0 ? (0, colors_1.cyan)(` ${skipped} skipped`) : '';
109
+ message += ` (${renderDuration((0, helpers_1.now)())} ms) \n`;
108
110
  this.write(message);
109
111
  });
110
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/reporters/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/reporters/base.ts"],"names":[],"mappings":"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"}
@@ -22,36 +22,57 @@
22
22
  * THE SOFTWARE.
23
23
  *
24
24
  */
25
+ /// <reference types="node" />
25
26
  import BaseReporter from './base';
26
27
  import { Journey, Step } from '../dsl';
27
- import { NetworkInfo, StatusValue } from '../common_types';
28
- import { Protocol } from 'playwright-chromium/types/protocol';
29
- import { Metrics } from '../plugins';
30
- declare type OutputType = 'synthetics/metadata' | 'journey/register' | 'journey/start' | 'step/screenshot' | 'step/end' | 'journey/network_info' | 'journey/filmstrips' | 'journey/browserconsole' | 'journey/end';
28
+ import { NetworkInfo, NetworkConditions, TraceOutput, StatusValue, PerfMetrics, Params, Screenshot } from '../common_types';
29
+ import { PageMetrics } from '../plugins';
30
+ declare type OutputType = 'synthetics/metadata' | 'journey/register' | 'journey/start' | 'screenshot/block' | 'step/screenshot_ref' | 'step/screenshot' | 'step/metrics' | 'step/filmstrips' | 'step/end' | 'journey/network_info' | 'journey/browserconsole' | 'journey/end';
31
31
  declare type Payload = {
32
32
  source?: string;
33
33
  start?: number;
34
34
  end?: number;
35
35
  url?: string;
36
- status?: StatusValue | number;
37
- metrics?: Metrics;
38
- params?: Record<string, unknown>;
36
+ status?: StatusValue;
37
+ pagemetrics?: PageMetrics;
38
+ params?: Params;
39
39
  type?: OutputType;
40
40
  text?: string;
41
41
  index?: number;
42
+ network_conditions?: NetworkConditions;
42
43
  };
43
44
  declare type OutputFields = {
44
45
  type: OutputType;
46
+ _id?: string;
45
47
  journey?: Journey;
46
48
  timestamp?: number;
47
49
  url?: string;
48
- step?: Partial<Step>;
50
+ step?: Partial<Step> & {
51
+ duration?: {
52
+ us: number;
53
+ };
54
+ };
49
55
  error?: Error;
50
56
  root_fields?: Record<string, unknown>;
51
- payload?: Payload | NetworkInfo;
57
+ payload?: Payload;
52
58
  blob?: string;
53
59
  blob_mime?: string;
54
60
  };
61
+ declare type ScreenshotBlob = {
62
+ blob: string;
63
+ id: string;
64
+ };
65
+ declare type ScreenshotReference = {
66
+ width: number;
67
+ height: number;
68
+ blocks: Array<{
69
+ hash: string;
70
+ top: number;
71
+ left: number;
72
+ width: number;
73
+ height: number;
74
+ }>;
75
+ };
55
76
  export declare function formatNetworkFields(network: NetworkInfo): {
56
77
  ecs: {
57
78
  url: string;
@@ -62,57 +83,10 @@ export declare function formatNetworkFields(network: NetworkInfo): {
62
83
  };
63
84
  http: {
64
85
  version: number;
65
- request: {
66
- body: {
67
- bytes: number;
68
- content: string;
69
- };
70
- referrer: string;
71
- url: string;
72
- urlFragment?: string;
73
- method: string;
74
- headers: Protocol.Network.Headers;
75
- postData?: string;
76
- hasPostData?: boolean;
77
- postDataEntries?: Protocol.Network.PostDataEntry[];
78
- mixedContentType?: Protocol.Security.MixedContentType;
79
- initialPriority: Protocol.Network.ResourcePriority;
80
- referrerPolicy: "unsafe-url" | "no-referrer-when-downgrade" | "no-referrer" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin";
81
- isLinkPreload?: boolean;
82
- trustTokenParams?: Protocol.Network.TrustTokenParams;
83
- };
84
- response: {
85
- body: {
86
- bytes: number;
87
- };
88
- status_code: number;
89
- url: string;
90
- status: number;
91
- statusText: string;
92
- headers: Protocol.Network.Headers;
93
- headersText?: string;
94
- mimeType: string;
95
- requestHeaders?: Protocol.Network.Headers;
96
- requestHeadersText?: string;
97
- connectionReused: boolean;
98
- connectionId: number;
99
- remoteIPAddress?: string;
100
- remotePort?: number;
101
- fromDiskCache?: boolean;
102
- fromServiceWorker?: boolean;
103
- fromPrefetchCache?: boolean;
104
- encodedDataLength: number;
105
- timing?: Protocol.Network.ResourceTiming;
106
- serviceWorkerResponseSource?: Protocol.Network.ServiceWorkerResponseSource;
107
- responseTime?: number;
108
- cacheStorageCacheName?: string;
109
- protocol?: string;
110
- securityState: Protocol.Security.SecurityState;
111
- securityDetails?: Protocol.Network.SecurityDetails;
112
- };
86
+ request: import("../common_types").Request;
87
+ response: import("../common_types").Response;
113
88
  };
114
89
  tls: {
115
- cipher: string;
116
90
  server: {
117
91
  x509: {
118
92
  issuer: {
@@ -131,9 +105,22 @@ export declare function formatNetworkFields(network: NetworkInfo): {
131
105
  };
132
106
  payload: Partial<NetworkInfo>;
133
107
  };
108
+ export declare function getScreenshotBlocks(screenshot: Buffer): Promise<{
109
+ blocks: ScreenshotBlob[];
110
+ reference: ScreenshotReference;
111
+ blob_mime: string;
112
+ }>;
113
+ /**
114
+ * Get all the screenshots from the cached screenshot location
115
+ * at the end of each journey and construct equally sized blocks out
116
+ * of the individual screenshot image.
117
+ */
118
+ export declare function gatherScreenshots(screenshotsPath: string, callback: (data: Screenshot) => Promise<void>): Promise<void>;
134
119
  export default class JSONReporter extends BaseReporter {
135
120
  _registerListeners(): void;
136
- writeJSON({ journey, type, timestamp, step, root_fields, error, payload, blob, blob_mime, url, }: OutputFields): void;
121
+ writeScreenshotBlocks(journey: Journey, screenshot: Screenshot): Promise<void>;
122
+ writeMetrics(journey: Journey, step: Step, type: string, events: Array<TraceOutput> | PerfMetrics): void;
123
+ writeJSON({ _id, journey, type, timestamp, step, root_fields, error, payload, blob, blob_mime, url, }: OutputFields): void;
137
124
  }
138
125
  export {};
139
126
  //# sourceMappingURL=json.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/reporters/json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrC,aAAK,UAAU,GACX,qBAAqB,GACrB,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,UAAU,GACV,sBAAsB,GACtB,oBAAoB,GACpB,wBAAwB,GACxB,aAAa,CAAC;AAElB,aAAK,OAAO,GAAG;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,aAAK,YAAY,GAAG;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAiFF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCvD;AAgCD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IACpD,kBAAkB;IA8IlB,SAAS,CAAC,EACR,OAAO,EACP,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,WAAW,EACX,KAAK,EACL,OAAO,EACP,IAAI,EACJ,SAAS,EACT,GAAG,GACJ,EAAE,YAAY;CAehB"}
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/reporters/json.ts"],"names":[],"mappings":"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"}