pagespeed-quest 0.6.0 → 0.6.2
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/build/adhoc.js +2 -2
- package/build/index.d.ts +1 -0
- package/build/index.js +2 -1
- package/build/lighthouse-digest.d.ts +12 -0
- package/build/lighthouse-digest.js +69 -0
- package/build/lighthouse.d.ts +2 -1
- package/build/lighthouse.js +16 -1
- package/package.json +3 -1
package/build/adhoc.js
CHANGED
|
@@ -27,5 +27,5 @@ export async function playback() {
|
|
|
27
27
|
await execLighthouse({ url: proxy.entryUrl, proxyPort: proxy.port, headless: false, timeout: 60000 }, dependency);
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
recording().then(playback);
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRob2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWRob2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFBO0FBRTdCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRW5ELE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUE7QUFFbkMsTUFBTSxDQUFDLEtBQUssVUFBVSxTQUFTO0lBQzdCLE1BQU0sU0FBUyxHQUFHLCtCQUErQixDQUFBO0lBQ2pELGlEQUFpRDtJQUVqRCxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDN0MsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUN4RSxNQUFNLGtCQUFrQixDQUN0QjtRQUNFLG1CQUFtQjtLQUNwQixFQUNELFVBQVUsRUFDVixLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDZCxLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQTtRQUMxQixNQUFNLGNBQWMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDOUcsQ0FBQyxDQUNGLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxRQUFRO0lBQzVCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDeEUsTUFBTSxpQkFBaUIsQ0FDckI7UUFDRSxtQkFBbUI7S0FDcEIsRUFDRCxVQUFVLEVBQ1YsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1FBQy9ELE1BQU0sY0FBYyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDbkgsQ0FBQyxDQUNGLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBIn0=
|
package/build/index.d.ts
CHANGED
package/build/index.js
CHANGED
|
@@ -7,5 +7,6 @@ export * from './playback.js';
|
|
|
7
7
|
export * from './recording.js';
|
|
8
8
|
export * from './types.js';
|
|
9
9
|
export * from './lighthouse.js';
|
|
10
|
+
export * from './lighthouse-digest.js';
|
|
10
11
|
export * from './loadshow.js';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGVBQWUsQ0FBQTtBQUM3QixjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxlQUFlLENBQUE7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxlQUFlLENBQUEifQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DependencyInterface } from './types.js';
|
|
2
|
+
export interface CaptureLighthouseDigestInput {
|
|
3
|
+
htmlPath: string;
|
|
4
|
+
outputPath: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Captures a digest screenshot of the Lighthouse report.
|
|
8
|
+
* This function captures two specific sections:
|
|
9
|
+
* 1. The final screenshot header (lh-category-header__finalscreenshot)
|
|
10
|
+
* 2. The metrics audit group (lh-audit-group--metrics)
|
|
11
|
+
*/
|
|
12
|
+
export declare function captureLighthouseDigest(opts: CaptureLighthouseDigestInput, dependency: Pick<DependencyInterface, 'logger' | 'mkdirp'>): Promise<void>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import Path from 'path';
|
|
2
|
+
import puppeteer from 'puppeteer';
|
|
3
|
+
/**
|
|
4
|
+
* Captures a digest screenshot of the Lighthouse report.
|
|
5
|
+
* This function captures two specific sections:
|
|
6
|
+
* 1. The final screenshot header (lh-category-header__finalscreenshot)
|
|
7
|
+
* 2. The metrics audit group (lh-audit-group--metrics)
|
|
8
|
+
*/
|
|
9
|
+
export async function captureLighthouseDigest(opts, dependency) {
|
|
10
|
+
const browser = await puppeteer.launch({
|
|
11
|
+
headless: true,
|
|
12
|
+
args: ['--no-sandbox', '--disable-setuid-sandbox'],
|
|
13
|
+
});
|
|
14
|
+
try {
|
|
15
|
+
const page = await browser.newPage();
|
|
16
|
+
// Load the HTML file
|
|
17
|
+
const fileUrl = `file://${Path.resolve(opts.htmlPath)}`;
|
|
18
|
+
await page.goto(fileUrl, { waitUntil: 'networkidle0' });
|
|
19
|
+
// Check if the required elements exist
|
|
20
|
+
const elementsExist = await page.evaluate(() => {
|
|
21
|
+
const finalScreenshot = document.querySelector('.lh-category-header__finalscreenshot');
|
|
22
|
+
const metrics = document.querySelector('.lh-audit-group--metrics');
|
|
23
|
+
return finalScreenshot !== null && metrics !== null;
|
|
24
|
+
});
|
|
25
|
+
if (!elementsExist) {
|
|
26
|
+
throw new Error('Required elements not found in the Lighthouse report');
|
|
27
|
+
}
|
|
28
|
+
// Get the bounding boxes of both elements
|
|
29
|
+
const finalScreenshotElement = await page.$('.lh-category-header__finalscreenshot');
|
|
30
|
+
const metricsElement = await page.$('.lh-audit-group--metrics');
|
|
31
|
+
if (!finalScreenshotElement || !metricsElement) {
|
|
32
|
+
throw new Error('Required elements not found in the Lighthouse report');
|
|
33
|
+
}
|
|
34
|
+
const finalScreenshotBox = await finalScreenshotElement.boundingBox();
|
|
35
|
+
const metricsBox = await metricsElement.boundingBox();
|
|
36
|
+
if (!finalScreenshotBox || !metricsBox) {
|
|
37
|
+
throw new Error('Could not get bounding box of required elements');
|
|
38
|
+
}
|
|
39
|
+
// Calculate the bounding box that encompasses both elements
|
|
40
|
+
const minX = Math.min(finalScreenshotBox.x, metricsBox.x);
|
|
41
|
+
const minY = Math.min(finalScreenshotBox.y, metricsBox.y);
|
|
42
|
+
const maxX = Math.max(finalScreenshotBox.x + finalScreenshotBox.width, metricsBox.x + metricsBox.width);
|
|
43
|
+
const maxY = Math.max(finalScreenshotBox.y + finalScreenshotBox.height, metricsBox.y + metricsBox.height);
|
|
44
|
+
const boundingBox = {
|
|
45
|
+
x: minX,
|
|
46
|
+
y: minY,
|
|
47
|
+
width: maxX - minX,
|
|
48
|
+
height: maxY - minY,
|
|
49
|
+
};
|
|
50
|
+
// Ensure output directory exists
|
|
51
|
+
const outputDir = Path.dirname(opts.outputPath);
|
|
52
|
+
await dependency.mkdirp(outputDir);
|
|
53
|
+
// Capture the screenshot
|
|
54
|
+
await page.screenshot({
|
|
55
|
+
path: opts.outputPath,
|
|
56
|
+
clip: {
|
|
57
|
+
x: boundingBox.x,
|
|
58
|
+
y: boundingBox.y,
|
|
59
|
+
width: boundingBox.width,
|
|
60
|
+
height: boundingBox.height,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
dependency.logger?.info(`Lighthouse digest screenshot saved to ${opts.outputPath}`);
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
await browser.close();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRob3VzZS1kaWdlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbGlnaHRob3VzZS1kaWdlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRXZCLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQTtBQVNqQzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLElBQWtDLEVBQ2xDLFVBQTBEO0lBRTFELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUNyQyxRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxDQUFDLGNBQWMsRUFBRSwwQkFBMEIsQ0FBQztLQUNuRCxDQUFDLENBQUE7SUFFRixJQUFJO1FBQ0YsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFcEMscUJBQXFCO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQTtRQUN2RCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUE7UUFFdkQsdUNBQXVDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDN0MsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFBO1lBQ3RGLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtZQUNsRSxPQUFPLGVBQWUsS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQTtRQUNyRCxDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsTUFBTSxJ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
|
package/build/lighthouse.d.ts
CHANGED
|
@@ -7,5 +7,6 @@ export interface ExecLighthouseInput {
|
|
|
7
7
|
artifactsDir?: string;
|
|
8
8
|
headless: boolean;
|
|
9
9
|
timeout: number;
|
|
10
|
+
captureScoreAndMetrics?: boolean;
|
|
10
11
|
}
|
|
11
|
-
export declare function execLighthouse(opts: ExecLighthouseInput, dependency: Pick<DependencyInterface, 'mkdirp' | 'executeLighthouse'>): Promise<void>;
|
|
12
|
+
export declare function execLighthouse(opts: ExecLighthouseInput, dependency: Pick<DependencyInterface, 'mkdirp' | 'executeLighthouse' | 'logger'>): Promise<void>;
|
package/build/lighthouse.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Path from 'path';
|
|
2
|
+
import { captureLighthouseDigest } from './lighthouse-digest.js';
|
|
2
3
|
export async function execLighthouse(opts, dependency) {
|
|
3
4
|
const artifactsDir = opts.artifactsDir || './artifacts';
|
|
4
5
|
await dependency.mkdirp(artifactsDir);
|
|
@@ -28,5 +29,19 @@ export async function execLighthouse(opts, dependency) {
|
|
|
28
29
|
if (opts.view)
|
|
29
30
|
args.push('--view');
|
|
30
31
|
await dependency.executeLighthouse(args);
|
|
32
|
+
// Capture score and metrics screenshot if requested
|
|
33
|
+
if (opts.captureScoreAndMetrics !== false) {
|
|
34
|
+
const htmlPath = `${outputPath}.report.html`;
|
|
35
|
+
const digestPath = Path.join(artifactsDir, 'lighthouse.digest.png');
|
|
36
|
+
try {
|
|
37
|
+
await captureLighthouseDigest({
|
|
38
|
+
htmlPath,
|
|
39
|
+
outputPath: digestPath,
|
|
40
|
+
}, dependency);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
dependency.logger?.warn(`Failed to capture Lighthouse score and metrics: ${error}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
31
46
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRob3VzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9saWdodGhvdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUV2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQWNoRSxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FDbEMsSUFBeUIsRUFDekIsVUFBZ0Y7SUFFaEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUE7SUFDdkQsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRXJDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFBO0lBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFBO0lBQ3hELE1BQU0sSUFBSSxHQUFhO1FBQ3JCLElBQUksQ0FBQyxHQUFHO1FBQ1IsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixpQkFBaUIsVUFBVSxFQUFFO1FBQzdCLCtCQUErQjtRQUMvQixpQkFBaUIsVUFBVSxFQUFFO1FBQzdCLDRDQUE0QztRQUM1Qyw0QkFBNEIsVUFBVSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7UUFDeEUsNkRBQTZEO1FBQzdELHNCQUFzQjtRQUN0QiwrQkFBK0I7UUFDL0IsdUNBQXVDO1FBQ3ZDLHFDQUFxQztRQUNyQyxzQ0FBc0M7S0FDdkMsQ0FBQTtJQUVELElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBRWhELE1BQU0sV0FBVyxHQUFhLENBQUMsNkJBQTZCLEVBQUUsbUNBQW1DLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ2xILElBQUksSUFBSSxDQUFDLFFBQVE7UUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRXRELElBQUksSUFBSSxDQUFDLElBQUk7UUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRWxDLE1BQU0sVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFBO0lBRXhDLG9EQUFvRDtJQUNwRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsS0FBSyxLQUFLLEVBQUU7UUFDekMsTUFBTSxRQUFRLEdBQUcsR0FBRyxVQUFVLGNBQWMsQ0FBQTtRQUM1QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSx1QkFBdUIsQ0FBQyxDQUFBO1FBRW5FLElBQUk7WUFDRixNQUFNLHVCQUF1QixDQUMzQjtnQkFDRSxRQUFRO2dCQUNSLFVBQVUsRUFBRSxVQUFVO2FBQ3ZCLEVBQ0QsVUFBVSxDQUNYLENBQUE7U0FDRjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsbURBQW1ELEtBQUssRUFBRSxDQUFDLENBQUE7U0FDcEY7S0FDRjtBQUNILENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pagespeed-quest",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A framework for efficient web front-end speed improvement",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -58,10 +58,12 @@
|
|
|
58
58
|
"jschardet": "^3.0.0",
|
|
59
59
|
"lighthouse": "^12.2.1",
|
|
60
60
|
"loadshow": "1.2.0",
|
|
61
|
+
"node-html-to-image": "^5.0.0",
|
|
61
62
|
"node-watch": "^0.7.4",
|
|
62
63
|
"pino": "^9.4.0",
|
|
63
64
|
"pino-pretty": "^11.2.2",
|
|
64
65
|
"prettier": "^2.1.1",
|
|
66
|
+
"puppeteer": "^24.31.0",
|
|
65
67
|
"rust-http-playback-proxy": "0.4.2",
|
|
66
68
|
"tmp-promise": "^3.0.3"
|
|
67
69
|
},
|