@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.
- package/CHANGELOG.md +235 -0
- package/NOTICE.txt +250 -0
- package/README.md +2 -1
- package/dist/cli.js +87 -56
- package/dist/cli.js.map +1 -1
- package/dist/common_types.d.ts +116 -14
- package/dist/common_types.d.ts.map +1 -1
- package/dist/config.d.ts +2 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -5
- package/dist/config.js.map +1 -1
- package/dist/core/browser-service.js +5 -5
- package/dist/core/browser-service.js.map +1 -1
- package/dist/core/expect.d.ts +177 -0
- package/dist/core/expect.d.ts.map +1 -0
- package/dist/core/expect.js +33 -0
- package/dist/core/expect.js.map +1 -0
- package/dist/core/gatherer.d.ts +4 -7
- package/dist/core/gatherer.d.ts.map +1 -1
- package/dist/core/gatherer.js +39 -12
- package/dist/core/gatherer.js.map +1 -1
- package/dist/core/index.d.ts +5 -5
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/logger.d.ts +0 -1
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +3 -16
- package/dist/core/logger.js.map +1 -1
- package/dist/core/runner.d.ts +54 -45
- package/dist/core/runner.d.ts.map +1 -1
- package/dist/core/runner.js +181 -71
- package/dist/core/runner.js.map +1 -1
- package/dist/dsl/journey.d.ts +13 -4
- package/dist/dsl/journey.d.ts.map +1 -1
- package/dist/dsl/journey.js +40 -1
- package/dist/dsl/journey.js.map +1 -1
- package/dist/formatter/javascript.d.ts +73 -0
- package/dist/formatter/javascript.d.ts.map +1 -0
- package/dist/formatter/javascript.js +274 -0
- package/dist/formatter/javascript.js.map +1 -0
- package/dist/helpers.d.ts +33 -12
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +108 -54
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -7
- package/dist/index.js.map +1 -1
- package/dist/parse_args.d.ts +5 -2
- package/dist/parse_args.d.ts.map +1 -1
- package/dist/parse_args.js +59 -16
- package/dist/parse_args.js.map +1 -1
- package/dist/plugins/browser-console.d.ts +5 -8
- package/dist/plugins/browser-console.d.ts.map +1 -1
- package/dist/plugins/browser-console.js +27 -8
- package/dist/plugins/browser-console.js.map +1 -1
- package/dist/plugins/network.d.ts +23 -20
- package/dist/plugins/network.d.ts.map +1 -1
- package/dist/plugins/network.js +149 -124
- package/dist/plugins/network.js.map +1 -1
- package/dist/plugins/performance.d.ts +5 -5
- package/dist/plugins/performance.d.ts.map +1 -1
- package/dist/plugins/performance.js +5 -5
- package/dist/plugins/performance.js.map +1 -1
- package/dist/plugins/plugin-manager.d.ts +11 -11
- package/dist/plugins/plugin-manager.d.ts.map +1 -1
- package/dist/plugins/plugin-manager.js +40 -24
- package/dist/plugins/plugin-manager.js.map +1 -1
- package/dist/plugins/tracing.d.ts +10 -25
- package/dist/plugins/tracing.d.ts.map +1 -1
- package/dist/plugins/tracing.js +40 -26
- package/dist/plugins/tracing.js.map +1 -1
- package/dist/reporters/base.d.ts +0 -1
- package/dist/reporters/base.d.ts.map +1 -1
- package/dist/reporters/base.js +34 -32
- package/dist/reporters/base.js.map +1 -1
- package/dist/reporters/json.d.ts +46 -59
- package/dist/reporters/json.d.ts.map +1 -1
- package/dist/reporters/json.js +188 -70
- package/dist/reporters/json.js.map +1 -1
- package/dist/reporters/junit.d.ts.map +1 -1
- package/dist/reporters/junit.js +7 -7
- package/dist/reporters/junit.js.map +1 -1
- package/dist/sdk/lh-trace-processor.d.ts +304 -0
- package/dist/sdk/lh-trace-processor.d.ts.map +1 -0
- package/dist/sdk/lh-trace-processor.js +832 -0
- package/dist/sdk/lh-trace-processor.js.map +1 -0
- package/dist/sdk/trace-metrics.d.ts +61 -0
- package/dist/sdk/trace-metrics.d.ts.map +1 -0
- package/dist/sdk/trace-metrics.js +252 -0
- package/dist/sdk/trace-metrics.js.map +1 -0
- package/dist/sdk/trace-processor.d.ts +106 -0
- package/dist/sdk/trace-processor.d.ts.map +1 -0
- package/dist/sdk/trace-processor.js +74 -0
- package/dist/sdk/trace-processor.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1575
- package/package.json +27 -16
- package/src/cli.ts +68 -45
- package/src/common_types.ts +138 -14
- package/src/config.ts +2 -5
- package/src/core/expect.ts +187 -0
- package/src/core/gatherer.ts +48 -24
- package/src/core/index.ts +6 -6
- package/src/core/logger.ts +1 -12
- package/src/core/runner.ts +259 -112
- package/src/dsl/journey.ts +28 -6
- package/src/formatter/javascript.ts +330 -0
- package/src/helpers.ts +114 -24
- package/src/index.ts +7 -6
- package/src/parse_args.ts +97 -22
- package/src/plugins/browser-console.ts +30 -13
- package/src/plugins/network.ts +175 -159
- package/src/plugins/performance.ts +7 -7
- package/src/plugins/plugin-manager.ts +47 -36
- package/src/plugins/tracing.ts +43 -54
- package/src/reporters/base.ts +29 -23
- package/src/reporters/json.ts +259 -80
- package/src/reporters/junit.ts +1 -1
- package/src/sdk/lh-trace-processor.ts +1033 -0
- package/src/sdk/trace-metrics.ts +287 -0
- package/src/sdk/trace-processor.ts +147 -0
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MIT License
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2020-present, Elastic NV
|
|
6
|
+
*
|
|
7
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
* in the Software without restriction, including without limitation the rights
|
|
10
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
* furnished to do so, subject to the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be included in
|
|
15
|
+
* all copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
23
|
+
* THE SOFTWARE.
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.quote = exports.SyntheticsGenerator = void 0;
|
|
28
|
+
const javascript_1 = require("playwright-chromium/lib/server/supplements/recorder/javascript");
|
|
29
|
+
class SyntheticsGenerator extends javascript_1.JavaScriptLanguageGenerator {
|
|
30
|
+
constructor(isSuite) {
|
|
31
|
+
super(true);
|
|
32
|
+
this.isSuite = isSuite;
|
|
33
|
+
this.insideStep = false;
|
|
34
|
+
this.previousContext = undefined;
|
|
35
|
+
}
|
|
36
|
+
generateAction(actionInContext) {
|
|
37
|
+
const { action, pageAlias, title } = actionInContext;
|
|
38
|
+
if (action.name === 'openPage') {
|
|
39
|
+
return '';
|
|
40
|
+
}
|
|
41
|
+
// Don't cleanup page object managed by Synthetics
|
|
42
|
+
const isCleanUp = action.name === 'closePage' && pageAlias === 'page';
|
|
43
|
+
if (isCleanUp) {
|
|
44
|
+
return '';
|
|
45
|
+
}
|
|
46
|
+
let formatter = new javascript_1.JavaScriptFormatter(this.isSuite ? 2 : 0);
|
|
47
|
+
// Check if it's a new step
|
|
48
|
+
const isNewStep = this.isNewStep(actionInContext);
|
|
49
|
+
if (isNewStep) {
|
|
50
|
+
if (this.insideStep) {
|
|
51
|
+
formatter.add(this.generateStepEnd());
|
|
52
|
+
}
|
|
53
|
+
formatter.add(this.generateStepStart(title || actionTitle(action)));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
formatter = new javascript_1.JavaScriptFormatter(this.isSuite ? 4 : 2);
|
|
57
|
+
}
|
|
58
|
+
const subject = actionInContext.isMainFrame
|
|
59
|
+
? pageAlias
|
|
60
|
+
: actionInContext.frameName
|
|
61
|
+
? `${pageAlias}.frame(${formatObject({
|
|
62
|
+
name: actionInContext.frameName,
|
|
63
|
+
})})`
|
|
64
|
+
: `${pageAlias}.frame(${formatObject({
|
|
65
|
+
url: actionInContext.frameUrl,
|
|
66
|
+
})})`;
|
|
67
|
+
const signals = toSignalMap(action);
|
|
68
|
+
if (signals.dialog) {
|
|
69
|
+
formatter.add(` ${pageAlias}.once('dialog', dialog => {
|
|
70
|
+
console.log(\`Dialog message: $\{dialog.message()}\`);
|
|
71
|
+
dialog.dismiss().catch(() => {});
|
|
72
|
+
});`);
|
|
73
|
+
}
|
|
74
|
+
const emitPromiseAll = signals.waitForNavigation || signals.popup || signals.download;
|
|
75
|
+
if (emitPromiseAll) {
|
|
76
|
+
// Generate either await Promise.all([]) or
|
|
77
|
+
// const [popup1] = await Promise.all([]).
|
|
78
|
+
let leftHandSide = '';
|
|
79
|
+
if (signals.popup)
|
|
80
|
+
leftHandSide = `const [${signals.popup.popupAlias}] = `;
|
|
81
|
+
else if (signals.download)
|
|
82
|
+
leftHandSide = `const [download] = `;
|
|
83
|
+
formatter.add(`${leftHandSide}await Promise.all([`);
|
|
84
|
+
}
|
|
85
|
+
// Popup signals.
|
|
86
|
+
if (signals.popup)
|
|
87
|
+
formatter.add(`${pageAlias}.waitForEvent('popup'),`);
|
|
88
|
+
// Navigation signal.
|
|
89
|
+
if (signals.waitForNavigation)
|
|
90
|
+
formatter.add(`${pageAlias}.waitForNavigation(/*{ url: ${quote(signals.waitForNavigation.url)} }*/),`);
|
|
91
|
+
// Download signals.
|
|
92
|
+
if (signals.download)
|
|
93
|
+
formatter.add(`${pageAlias}.waitForEvent('download'),`);
|
|
94
|
+
const prefix = signals.popup || signals.waitForNavigation || signals.download
|
|
95
|
+
? ''
|
|
96
|
+
: 'await ';
|
|
97
|
+
const actionCall = super._generateActionCall(action);
|
|
98
|
+
// Add assertion from Synthetics.
|
|
99
|
+
const isAssert = action.name === 'assert' && action.isAssert;
|
|
100
|
+
if (!isAssert) {
|
|
101
|
+
const suffix = signals.waitForNavigation || emitPromiseAll ? '' : ';';
|
|
102
|
+
formatter.add(`${prefix}${subject}.${actionCall}${suffix}`);
|
|
103
|
+
if (emitPromiseAll) {
|
|
104
|
+
formatter.add(`]);`);
|
|
105
|
+
}
|
|
106
|
+
else if (signals.assertNavigation) {
|
|
107
|
+
formatter.add(` expect(${pageAlias}.url()).toBe(${quote(signals.assertNavigation.url)});`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (action.command) {
|
|
111
|
+
formatter.add(toAssertCall(pageAlias, action));
|
|
112
|
+
}
|
|
113
|
+
this.previousContext = actionInContext;
|
|
114
|
+
return formatter.format();
|
|
115
|
+
}
|
|
116
|
+
isNewStep(actioninContext) {
|
|
117
|
+
var _a;
|
|
118
|
+
const { action, frameUrl } = actioninContext;
|
|
119
|
+
if (action.name === 'navigate') {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
else if (action.name === 'click') {
|
|
123
|
+
return (((_a = this.previousContext) === null || _a === void 0 ? void 0 : _a.frameUrl) === frameUrl && action.signals.length > 0);
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
generateStepStart(name) {
|
|
128
|
+
this.insideStep = true;
|
|
129
|
+
return `step(${quote(name)}, async () => {`;
|
|
130
|
+
}
|
|
131
|
+
generateStepEnd() {
|
|
132
|
+
if (!this.insideStep) {
|
|
133
|
+
return '';
|
|
134
|
+
}
|
|
135
|
+
this.insideStep = false;
|
|
136
|
+
const formatter = new javascript_1.JavaScriptFormatter(this.isSuite ? 2 : 0);
|
|
137
|
+
formatter.add(`});`);
|
|
138
|
+
return formatter.format();
|
|
139
|
+
}
|
|
140
|
+
generateHeader() {
|
|
141
|
+
const formatter = new javascript_1.JavaScriptFormatter(0);
|
|
142
|
+
formatter.add(`
|
|
143
|
+
const { journey, step, expect } = require('@elastic/synthetics');
|
|
144
|
+
|
|
145
|
+
journey('Recorded journey', async ({ page, context }) => {`);
|
|
146
|
+
return formatter.format();
|
|
147
|
+
}
|
|
148
|
+
generateFooter() {
|
|
149
|
+
return `});`;
|
|
150
|
+
}
|
|
151
|
+
generateText(actions) {
|
|
152
|
+
const text = [];
|
|
153
|
+
if (this.isSuite) {
|
|
154
|
+
text.push(this.generateHeader());
|
|
155
|
+
}
|
|
156
|
+
for (let i = 0; i < actions.length; i++) {
|
|
157
|
+
text.push(this.generateAction(actions[i]));
|
|
158
|
+
if (i === actions.length - 1)
|
|
159
|
+
text.push(this.generateStepEnd());
|
|
160
|
+
}
|
|
161
|
+
if (this.isSuite) {
|
|
162
|
+
text.push(this.generateFooter());
|
|
163
|
+
}
|
|
164
|
+
return text.filter(t => Boolean(t)).join('\n');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.SyntheticsGenerator = SyntheticsGenerator;
|
|
168
|
+
// TODO: Replace once Playwright releases new version
|
|
169
|
+
function quote(text, char = "'") {
|
|
170
|
+
const stringified = JSON.stringify(text);
|
|
171
|
+
const escapedText = stringified
|
|
172
|
+
.substring(1, stringified.length - 1)
|
|
173
|
+
.replace(/\\"/g, '"');
|
|
174
|
+
if (char === "'")
|
|
175
|
+
return char + escapedText.replace(/[']/g, "\\'") + char;
|
|
176
|
+
if (char === '"')
|
|
177
|
+
return char + escapedText.replace(/["]/g, '\\"') + char;
|
|
178
|
+
if (char === '`')
|
|
179
|
+
return char + escapedText.replace(/[`]/g, '`') + char;
|
|
180
|
+
throw new Error('Invalid escape char');
|
|
181
|
+
}
|
|
182
|
+
exports.quote = quote;
|
|
183
|
+
function toSignalMap(action) {
|
|
184
|
+
let waitForNavigation;
|
|
185
|
+
let assertNavigation;
|
|
186
|
+
let popup;
|
|
187
|
+
let download;
|
|
188
|
+
let dialog;
|
|
189
|
+
for (const signal of action.signals) {
|
|
190
|
+
if (signal.name === 'navigation' && signal.isAsync)
|
|
191
|
+
waitForNavigation = signal;
|
|
192
|
+
else if (signal.name === 'navigation' && !signal.isAsync)
|
|
193
|
+
assertNavigation = signal;
|
|
194
|
+
else if (signal.name === 'popup')
|
|
195
|
+
popup = signal;
|
|
196
|
+
else if (signal.name === 'download')
|
|
197
|
+
download = signal;
|
|
198
|
+
else if (signal.name === 'dialog')
|
|
199
|
+
dialog = signal;
|
|
200
|
+
}
|
|
201
|
+
return {
|
|
202
|
+
waitForNavigation,
|
|
203
|
+
assertNavigation,
|
|
204
|
+
popup,
|
|
205
|
+
download,
|
|
206
|
+
dialog,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
function toAssertCall(pageAlias, action) {
|
|
210
|
+
const { command, selector, value } = action;
|
|
211
|
+
switch (command) {
|
|
212
|
+
case 'textContent':
|
|
213
|
+
case 'innerText':
|
|
214
|
+
return `expect(await ${pageAlias}.${command}(${quote(selector)})).toMatch(${quote(value)});`;
|
|
215
|
+
case 'isVisible':
|
|
216
|
+
case 'isHidden':
|
|
217
|
+
case 'isChecked':
|
|
218
|
+
case 'isEditable':
|
|
219
|
+
case 'isEnabled':
|
|
220
|
+
case 'isDisabled':
|
|
221
|
+
return `expect(await ${pageAlias}.${command}(${quote(selector)})).toBeTruthy();`;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
function formatObject(value, indent = ' ') {
|
|
225
|
+
if (typeof value === 'string')
|
|
226
|
+
return quote(value);
|
|
227
|
+
if (Array.isArray(value))
|
|
228
|
+
return `[${value.map(o => formatObject(o)).join(', ')}]`;
|
|
229
|
+
if (typeof value === 'object') {
|
|
230
|
+
const keys = Object.keys(value);
|
|
231
|
+
if (!keys.length)
|
|
232
|
+
return '{}';
|
|
233
|
+
const tokens = [];
|
|
234
|
+
for (const key of keys)
|
|
235
|
+
tokens.push(`${key}: ${formatObject(value[key])}`);
|
|
236
|
+
return `{\n${indent}${tokens.join(`,\n${indent}`)}\n}`;
|
|
237
|
+
}
|
|
238
|
+
return String(value);
|
|
239
|
+
}
|
|
240
|
+
function actionTitle(action) {
|
|
241
|
+
switch (action.name) {
|
|
242
|
+
case 'openPage':
|
|
243
|
+
return `Open new page`;
|
|
244
|
+
case 'closePage':
|
|
245
|
+
return `Close page`;
|
|
246
|
+
case 'check':
|
|
247
|
+
return `Check ${action.selector}`;
|
|
248
|
+
case 'uncheck':
|
|
249
|
+
return `Uncheck ${action.selector}`;
|
|
250
|
+
case 'click': {
|
|
251
|
+
if (action.clickCount === 1)
|
|
252
|
+
return `Click ${action.selector}`;
|
|
253
|
+
if (action.clickCount === 2)
|
|
254
|
+
return `Double click ${action.selector}`;
|
|
255
|
+
if (action.clickCount === 3)
|
|
256
|
+
return `Triple click ${action.selector}`;
|
|
257
|
+
return `${action.clickCount}× click`;
|
|
258
|
+
}
|
|
259
|
+
case 'fill':
|
|
260
|
+
return `Fill ${action.selector}`;
|
|
261
|
+
case 'setInputFiles':
|
|
262
|
+
if (action.files.length === 0)
|
|
263
|
+
return `Clear selected files`;
|
|
264
|
+
else
|
|
265
|
+
return `Upload ${action.files.join(', ')}`;
|
|
266
|
+
case 'navigate':
|
|
267
|
+
return `Go to ${action.url}`;
|
|
268
|
+
case 'press':
|
|
269
|
+
return (`Press ${action.key}` + (action.modifiers ? ' with modifiers' : ''));
|
|
270
|
+
case 'select':
|
|
271
|
+
return `Select ${action.options.join(', ')}`;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=javascript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../src/formatter/javascript.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers.d.ts
CHANGED
|
@@ -22,6 +22,12 @@
|
|
|
22
22
|
* THE SOFTWARE.
|
|
23
23
|
*
|
|
24
24
|
*/
|
|
25
|
+
/// <reference types="node" />
|
|
26
|
+
import fs from 'fs';
|
|
27
|
+
import { HooksArgs, HooksCallback, NetworkConditions } from './common_types';
|
|
28
|
+
export declare const readFileAsync: typeof fs.readFile.__promisify__;
|
|
29
|
+
export declare const writeFileAsync: typeof fs.writeFile.__promisify__;
|
|
30
|
+
export declare const mkdirAsync: typeof fs.mkdir.__promisify__;
|
|
25
31
|
export declare function noop(): void;
|
|
26
32
|
export declare function indent(lines: string, tab?: string): string;
|
|
27
33
|
export declare const symbols: {
|
|
@@ -30,34 +36,36 @@ export declare const symbols: {
|
|
|
30
36
|
succeeded: string;
|
|
31
37
|
failed: string;
|
|
32
38
|
};
|
|
39
|
+
export declare function generateUniqueId(): string;
|
|
33
40
|
export declare function generateTempPath(): string;
|
|
34
41
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
42
|
+
* Get Monotonically increasing time in seconds since
|
|
43
|
+
* an arbitrary point in the past.
|
|
44
|
+
*
|
|
45
|
+
* We internally use the monotonically increasing clock timing
|
|
46
|
+
* similar to the chrome devtools protocol network events for
|
|
47
|
+
* journey,step start/end fields to make querying in the UI easier
|
|
39
48
|
*/
|
|
40
|
-
export declare function
|
|
49
|
+
export declare function monotonicTimeInSeconds(): number;
|
|
41
50
|
/**
|
|
42
|
-
* Converts the trace events timestamp field from
|
|
43
|
-
*
|
|
44
|
-
* the internal timestamp similar to other event types (journey, step, etc)
|
|
51
|
+
* Converts the trace events timestamp field from microsecond
|
|
52
|
+
* resolution to monotonic seconds timestamp similar to other event types (journey, step, etc)
|
|
45
53
|
* Reference - https://github.com/samccone/chrome-trace-event/blob/d45bc8af3b5c53a3adfa2c5fc107b4fae054f579/lib/trace-event.ts#L21-L22
|
|
46
54
|
*
|
|
47
55
|
* Tested and verified on both Darwin and Linux
|
|
48
56
|
*/
|
|
49
|
-
export declare function
|
|
57
|
+
export declare function microSecsToSeconds(ts: number): number;
|
|
50
58
|
export declare function getTimestamp(): number;
|
|
51
59
|
/**
|
|
52
60
|
* Relative current time from the start of the current node process
|
|
53
61
|
*/
|
|
54
62
|
export declare function now(): number;
|
|
55
63
|
/**
|
|
56
|
-
* Execute all the callbacks in parallel using Promise.all
|
|
64
|
+
* Execute all the hooks callbacks in parallel using Promise.all
|
|
57
65
|
*/
|
|
58
|
-
export declare function runParallel(callbacks:
|
|
66
|
+
export declare function runParallel(callbacks: Array<HooksCallback>, args: HooksArgs): Promise<void[]>;
|
|
59
67
|
export declare function isDepInstalled(dep: any): string | false;
|
|
60
|
-
export declare function isDirectory(path: any):
|
|
68
|
+
export declare function isDirectory(path: any): boolean;
|
|
61
69
|
export declare function isFile(filePath: any): boolean;
|
|
62
70
|
/**
|
|
63
71
|
* Traverse the directory tree up from the cwd until we find
|
|
@@ -85,4 +93,17 @@ export declare function formatError(error: Error): {
|
|
|
85
93
|
message: string;
|
|
86
94
|
stack: string;
|
|
87
95
|
};
|
|
96
|
+
/**
|
|
97
|
+
* Synthetics cache path that is based on the process id to make sure
|
|
98
|
+
* each process does not modify the caching layer used by other process
|
|
99
|
+
* once we move to executing journeys in parallel
|
|
100
|
+
*/
|
|
101
|
+
export declare const CACHE_PATH: string;
|
|
102
|
+
export declare function getDurationInUs(duration: number): number;
|
|
103
|
+
export declare function megabitsToBytes(megabytes: number): number;
|
|
104
|
+
export declare function bytesToMegabits(bytes: number): number;
|
|
105
|
+
export declare const DEFAULT_NETWORK_CONDITIONS: NetworkConditions;
|
|
106
|
+
export declare function formatNetworkConditionsArgs(networkConditions: NetworkConditions): string;
|
|
107
|
+
export declare const DEFAULT_NETWORK_CONDITIONS_ARG: string;
|
|
108
|
+
export declare function parseNetworkConditions(args: string): NetworkConditions;
|
|
88
109
|
//# sourceMappingURL=helpers.d.ts.map
|
package/dist/helpers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;AAKH,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAK7E,eAAO,MAAM,aAAa,kCAAyB,CAAC;AACpD,eAAO,MAAM,cAAc,mCAA0B,CAAC;AACtD,eAAO,MAAM,UAAU,+BAAsB,CAAC;AAI9C,wBAAgB,IAAI,SAAK;AAEzB,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAQ,UAEhD;AAOD,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AAEF,wBAAgB,gBAAgB,WAE/B;AAED,wBAAgB,gBAAgB,WAE/B;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,WAGrC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,UAE5C;AAMD,wBAAgB,YAAY,WAE3B;AAED;;GAEG;AACH,wBAAgB,GAAG,WAElB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,EAC/B,IAAI,EAAE,SAAS,mBAIhB;AAED,wBAAgB,cAAc,CAAC,GAAG,KAAA,kBAMjC;AAED,wBAAgB,WAAW,CAAC,IAAI,KAAA,WAE/B;AAED,wBAAgB,MAAM,CAAC,QAAQ,KAAA,WAE9B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,KAAA,EAAE,GAAG,KAAA,OAiBvD;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,GAAG,EACnD,GAAG,SAAK,iBAeT;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBtE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAKjE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,UAiBzE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK;;;;EAWvC;AAGD;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAmD,CAAC;AAE3E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,UAE/C;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,UAEhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,UAE5C;AAED,eAAO,MAAM,0BAA0B,EAAE,iBAKxC,CAAC;AAGF,wBAAgB,2BAA2B,CACzC,iBAAiB,EAAE,iBAAiB,UAMrC;AAED,eAAO,MAAM,8BAA8B,QAE1C,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CA4BtE"}
|
package/dist/helpers.js
CHANGED
|
@@ -23,38 +23,22 @@
|
|
|
23
23
|
* THE SOFTWARE.
|
|
24
24
|
*
|
|
25
25
|
*/
|
|
26
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
27
|
-
if (k2 === undefined) k2 = k;
|
|
28
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
29
|
-
}) : (function(o, m, k, k2) {
|
|
30
|
-
if (k2 === undefined) k2 = k;
|
|
31
|
-
o[k2] = m[k];
|
|
32
|
-
}));
|
|
33
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
34
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
35
|
-
}) : function(o, v) {
|
|
36
|
-
o["default"] = v;
|
|
37
|
-
});
|
|
38
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
39
|
-
if (mod && mod.__esModule) return mod;
|
|
40
|
-
var result = {};
|
|
41
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
42
|
-
__setModuleDefault(result, mod);
|
|
43
|
-
return result;
|
|
44
|
-
};
|
|
45
26
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
27
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
28
|
};
|
|
48
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
-
exports.formatError = exports.rewriteErrorStack = exports.rewriteErrorMessage = exports.findPWLogsIndexes = exports.totalist = exports.findPkgJsonByTraversing = exports.isFile = exports.isDirectory = exports.isDepInstalled = exports.runParallel = exports.now = exports.getTimestamp = exports.
|
|
30
|
+
exports.parseNetworkConditions = exports.DEFAULT_NETWORK_CONDITIONS_ARG = exports.formatNetworkConditionsArgs = exports.DEFAULT_NETWORK_CONDITIONS = exports.bytesToMegabits = exports.megabitsToBytes = exports.getDurationInUs = exports.CACHE_PATH = exports.formatError = exports.rewriteErrorStack = exports.rewriteErrorMessage = exports.findPWLogsIndexes = exports.totalist = exports.findPkgJsonByTraversing = exports.isFile = exports.isDirectory = exports.isDepInstalled = exports.runParallel = exports.now = exports.getTimestamp = exports.microSecsToSeconds = exports.monotonicTimeInSeconds = exports.generateTempPath = exports.generateUniqueId = exports.symbols = exports.indent = exports.noop = exports.mkdirAsync = exports.writeFileAsync = exports.readFileAsync = void 0;
|
|
50
31
|
const colors_1 = require("kleur/colors");
|
|
51
32
|
const os_1 = __importDefault(require("os"));
|
|
52
33
|
const path_1 = require("path");
|
|
53
|
-
const fs_1 =
|
|
34
|
+
const fs_1 = __importDefault(require("fs"));
|
|
54
35
|
const util_1 = require("util");
|
|
55
36
|
const perf_hooks_1 = require("perf_hooks");
|
|
56
|
-
const
|
|
57
|
-
const
|
|
37
|
+
const lstatAsync = (0, util_1.promisify)(fs_1.default.lstat);
|
|
38
|
+
const readdirAsync = (0, util_1.promisify)(fs_1.default.readdir);
|
|
39
|
+
exports.readFileAsync = (0, util_1.promisify)(fs_1.default.readFile);
|
|
40
|
+
exports.writeFileAsync = (0, util_1.promisify)(fs_1.default.writeFile);
|
|
41
|
+
exports.mkdirAsync = (0, util_1.promisify)(fs_1.default.mkdir);
|
|
58
42
|
const SEPARATOR = '\n';
|
|
59
43
|
function noop() { }
|
|
60
44
|
exports.noop = noop;
|
|
@@ -62,39 +46,49 @@ function indent(lines, tab = ' ') {
|
|
|
62
46
|
return lines.replace(/^/gm, tab);
|
|
63
47
|
}
|
|
64
48
|
exports.indent = indent;
|
|
49
|
+
/**
|
|
50
|
+
* Disable unicode symbols for windows, the underlying
|
|
51
|
+
* FS stream has a known issue in windows
|
|
52
|
+
*/
|
|
53
|
+
const NO_UTF8_SUPPORT = process.platform === 'win32';
|
|
65
54
|
exports.symbols = {
|
|
66
|
-
warning: colors_1.yellow('⚠'),
|
|
67
|
-
skipped: colors_1.cyan('-'),
|
|
68
|
-
succeeded: colors_1.green('✓'),
|
|
69
|
-
failed: colors_1.red('✖'),
|
|
55
|
+
warning: (0, colors_1.yellow)(NO_UTF8_SUPPORT ? '!' : '⚠'),
|
|
56
|
+
skipped: (0, colors_1.cyan)('-'),
|
|
57
|
+
succeeded: (0, colors_1.green)(NO_UTF8_SUPPORT ? 'ok' : '✓'),
|
|
58
|
+
failed: (0, colors_1.red)(NO_UTF8_SUPPORT ? 'x' : '✖'),
|
|
70
59
|
};
|
|
60
|
+
function generateUniqueId() {
|
|
61
|
+
return `${Date.now() + Math.floor(Math.random() * 1e13)}`;
|
|
62
|
+
}
|
|
63
|
+
exports.generateUniqueId = generateUniqueId;
|
|
71
64
|
function generateTempPath() {
|
|
72
|
-
return path_1.join(os_1.default.tmpdir(), `synthetics-${
|
|
65
|
+
return (0, path_1.join)(os_1.default.tmpdir(), `synthetics-${generateUniqueId()}`);
|
|
73
66
|
}
|
|
74
67
|
exports.generateTempPath = generateTempPath;
|
|
75
68
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
69
|
+
* Get Monotonically increasing time in seconds since
|
|
70
|
+
* an arbitrary point in the past.
|
|
71
|
+
*
|
|
72
|
+
* We internally use the monotonically increasing clock timing
|
|
73
|
+
* similar to the chrome devtools protocol network events for
|
|
74
|
+
* journey,step start/end fields to make querying in the UI easier
|
|
80
75
|
*/
|
|
81
|
-
function
|
|
76
|
+
function monotonicTimeInSeconds() {
|
|
82
77
|
const hrTime = process.hrtime(); // [seconds, nanoseconds]
|
|
83
78
|
return hrTime[0] * 1 + hrTime[1] / 1e9;
|
|
84
79
|
}
|
|
85
|
-
exports.
|
|
80
|
+
exports.monotonicTimeInSeconds = monotonicTimeInSeconds;
|
|
86
81
|
/**
|
|
87
|
-
* Converts the trace events timestamp field from
|
|
88
|
-
*
|
|
89
|
-
* the internal timestamp similar to other event types (journey, step, etc)
|
|
82
|
+
* Converts the trace events timestamp field from microsecond
|
|
83
|
+
* resolution to monotonic seconds timestamp similar to other event types (journey, step, etc)
|
|
90
84
|
* Reference - https://github.com/samccone/chrome-trace-event/blob/d45bc8af3b5c53a3adfa2c5fc107b4fae054f579/lib/trace-event.ts#L21-L22
|
|
91
85
|
*
|
|
92
86
|
* Tested and verified on both Darwin and Linux
|
|
93
87
|
*/
|
|
94
|
-
function
|
|
88
|
+
function microSecsToSeconds(ts) {
|
|
95
89
|
return ts / 1e6;
|
|
96
90
|
}
|
|
97
|
-
exports.
|
|
91
|
+
exports.microSecsToSeconds = microSecsToSeconds;
|
|
98
92
|
/**
|
|
99
93
|
* Timestamp at which the current node process began.
|
|
100
94
|
*/
|
|
@@ -111,10 +105,10 @@ function now() {
|
|
|
111
105
|
}
|
|
112
106
|
exports.now = now;
|
|
113
107
|
/**
|
|
114
|
-
* Execute all the callbacks in parallel using Promise.all
|
|
108
|
+
* Execute all the hooks callbacks in parallel using Promise.all
|
|
115
109
|
*/
|
|
116
|
-
async function runParallel(callbacks) {
|
|
117
|
-
const promises = callbacks.map(cb => cb());
|
|
110
|
+
async function runParallel(callbacks, args) {
|
|
111
|
+
const promises = callbacks.map(cb => cb(args));
|
|
118
112
|
return await Promise.all(promises);
|
|
119
113
|
}
|
|
120
114
|
exports.runParallel = runParallel;
|
|
@@ -127,12 +121,12 @@ function isDepInstalled(dep) {
|
|
|
127
121
|
}
|
|
128
122
|
}
|
|
129
123
|
exports.isDepInstalled = isDepInstalled;
|
|
130
|
-
|
|
131
|
-
return (
|
|
124
|
+
function isDirectory(path) {
|
|
125
|
+
return fs_1.default.existsSync(path) && fs_1.default.statSync(path).isDirectory();
|
|
132
126
|
}
|
|
133
127
|
exports.isDirectory = isDirectory;
|
|
134
128
|
function isFile(filePath) {
|
|
135
|
-
return fs_1.default.existsSync(filePath) && fs_1.statSync(filePath).isFile();
|
|
129
|
+
return fs_1.default.existsSync(filePath) && fs_1.default.statSync(filePath).isFile();
|
|
136
130
|
}
|
|
137
131
|
exports.isFile = isFile;
|
|
138
132
|
/**
|
|
@@ -141,16 +135,16 @@ exports.isFile = isFile;
|
|
|
141
135
|
* from an NPM project.
|
|
142
136
|
*/
|
|
143
137
|
function findPkgJsonByTraversing(resolvePath, cwd) {
|
|
144
|
-
const packageJSON = path_1.resolve(resolvePath, 'package.json');
|
|
138
|
+
const packageJSON = (0, path_1.resolve)(resolvePath, 'package.json');
|
|
145
139
|
if (isFile(packageJSON)) {
|
|
146
140
|
return packageJSON;
|
|
147
141
|
}
|
|
148
|
-
const parentDirectory = path_1.dirname(resolvePath);
|
|
142
|
+
const parentDirectory = (0, path_1.dirname)(resolvePath);
|
|
149
143
|
/**
|
|
150
144
|
* We are in the system root and package.json does not exist
|
|
151
145
|
*/
|
|
152
146
|
if (resolvePath === parentDirectory) {
|
|
153
|
-
throw colors_1.red(`Could not find package.json file in: "${cwd}"\n` +
|
|
147
|
+
throw (0, colors_1.red)(`Could not find package.json file in: "${cwd}"\n` +
|
|
154
148
|
`It is recommended to run the agent in an NPM project.\n` +
|
|
155
149
|
`You can create one by running "npm init -y" in the project folder.`);
|
|
156
150
|
}
|
|
@@ -165,13 +159,13 @@ exports.findPkgJsonByTraversing = findPkgJsonByTraversing;
|
|
|
165
159
|
* https://github.com/lukeed/totalist/blob/44379974e535afe9c38e8d643dd64c59101a14b9/src/async.js#L8
|
|
166
160
|
*/
|
|
167
161
|
async function totalist(dir, callback, pre = '') {
|
|
168
|
-
dir = path_1.resolve('.', dir);
|
|
169
|
-
await
|
|
162
|
+
dir = (0, path_1.resolve)('.', dir);
|
|
163
|
+
await readdirAsync(dir).then(arr => {
|
|
170
164
|
return Promise.all(arr.map(str => {
|
|
171
|
-
const abs = path_1.join(dir, str);
|
|
172
|
-
return
|
|
173
|
-
? totalist(abs, callback, path_1.join(pre, str))
|
|
174
|
-
: callback(path_1.join(pre, str), abs));
|
|
165
|
+
const abs = (0, path_1.join)(dir, str);
|
|
166
|
+
return lstatAsync(abs).then(stats => stats.isDirectory()
|
|
167
|
+
? totalist(abs, callback, (0, path_1.join)(pre, str))
|
|
168
|
+
: callback((0, path_1.join)(pre, str), abs));
|
|
175
169
|
}));
|
|
176
170
|
});
|
|
177
171
|
}
|
|
@@ -239,4 +233,64 @@ function formatError(error) {
|
|
|
239
233
|
};
|
|
240
234
|
}
|
|
241
235
|
exports.formatError = formatError;
|
|
236
|
+
const cwd = process.cwd();
|
|
237
|
+
/**
|
|
238
|
+
* Synthetics cache path that is based on the process id to make sure
|
|
239
|
+
* each process does not modify the caching layer used by other process
|
|
240
|
+
* once we move to executing journeys in parallel
|
|
241
|
+
*/
|
|
242
|
+
exports.CACHE_PATH = (0, path_1.join)(cwd, '.synthetics', process.pid.toString());
|
|
243
|
+
function getDurationInUs(duration) {
|
|
244
|
+
return Math.trunc(duration * 1e6);
|
|
245
|
+
}
|
|
246
|
+
exports.getDurationInUs = getDurationInUs;
|
|
247
|
+
function megabitsToBytes(megabytes) {
|
|
248
|
+
return (megabytes * 1024 * 1024) / 8;
|
|
249
|
+
}
|
|
250
|
+
exports.megabitsToBytes = megabitsToBytes;
|
|
251
|
+
function bytesToMegabits(bytes) {
|
|
252
|
+
return (bytes / 1024 / 1024) * 8;
|
|
253
|
+
}
|
|
254
|
+
exports.bytesToMegabits = bytesToMegabits;
|
|
255
|
+
exports.DEFAULT_NETWORK_CONDITIONS = {
|
|
256
|
+
downloadThroughput: megabitsToBytes(5),
|
|
257
|
+
uploadThroughput: megabitsToBytes(3),
|
|
258
|
+
latency: 20,
|
|
259
|
+
offline: false,
|
|
260
|
+
};
|
|
261
|
+
// Tranforms CDP dev tools format back to cli args format
|
|
262
|
+
function formatNetworkConditionsArgs(networkConditions) {
|
|
263
|
+
const d = bytesToMegabits(networkConditions.downloadThroughput);
|
|
264
|
+
const u = bytesToMegabits(networkConditions.uploadThroughput);
|
|
265
|
+
const l = networkConditions.latency;
|
|
266
|
+
return `${d}d/${u}u/${l}l`;
|
|
267
|
+
}
|
|
268
|
+
exports.formatNetworkConditionsArgs = formatNetworkConditionsArgs;
|
|
269
|
+
exports.DEFAULT_NETWORK_CONDITIONS_ARG = formatNetworkConditionsArgs(exports.DEFAULT_NETWORK_CONDITIONS);
|
|
270
|
+
function parseNetworkConditions(args) {
|
|
271
|
+
const uploadToken = 'u';
|
|
272
|
+
const downloadToken = 'd';
|
|
273
|
+
const latencyToken = 'l';
|
|
274
|
+
const networkConditions = {
|
|
275
|
+
...exports.DEFAULT_NETWORK_CONDITIONS,
|
|
276
|
+
};
|
|
277
|
+
const conditions = args.split('/');
|
|
278
|
+
conditions.forEach(condition => {
|
|
279
|
+
const value = condition.slice(0, condition.length - 1);
|
|
280
|
+
const token = condition.slice(-1);
|
|
281
|
+
switch (token) {
|
|
282
|
+
case uploadToken:
|
|
283
|
+
networkConditions.uploadThroughput = megabitsToBytes(Number(value));
|
|
284
|
+
break;
|
|
285
|
+
case downloadToken:
|
|
286
|
+
networkConditions.downloadThroughput = megabitsToBytes(Number(value));
|
|
287
|
+
break;
|
|
288
|
+
case latencyToken:
|
|
289
|
+
networkConditions.latency = Number(value);
|
|
290
|
+
break;
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
return networkConditions;
|
|
294
|
+
}
|
|
295
|
+
exports.parseNetworkConditions = parseNetworkConditions;
|
|
242
296
|
//# sourceMappingURL=helpers.js.map
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
|