mirror of https://github.com/kevquirk/512kb.club
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
const puppeteer = require('puppeteer'); |
|
const os = require("os"); |
|
const { readFileSync } = require('fs'); |
|
const { parse } = require('path'); |
|
const { report, exit } = require('process'); |
|
|
|
const arg = process.argv.slice(2); |
|
const url = arg[0]; |
|
|
|
|
|
(async () => { |
|
const browser = await puppeteer.launch({ |
|
args: ['--no-sandbox', '--disable-setuid-sandbox'] |
|
}); |
|
const page = await browser.newPage(); |
|
await page.tracing.start({ path: os.tmpdir() + "/profile.json" }) |
|
await page.goto(url); |
|
await page.tracing.stop() |
|
await browser.close(); |
|
|
|
|
|
let traceReportJSON = readFileSync(page.tracing._path); |
|
let report = JSON.parse(traceReportJSON); |
|
// jq '[.traceEvents[] | select(.name == "ResourceReceivedData") | .args.data.encodedDataLength | tonumber] | add' profile.json |
|
let uncompressedDataBytes = 0 |
|
for (var event of report.traceEvents) { |
|
if (event.name == "ResourceReceivedData") { |
|
uncompressedDataBytes += event.args.data.encodedDataLength; |
|
} |
|
} |
|
|
|
const result = { |
|
"url": url, |
|
"bytes": uncompressedDataBytes, |
|
"kilobytes": uncompressedDataBytes / 1024 |
|
}; |
|
|
|
console.info("----------------------------------------------------") |
|
console.info("URL: " + url) |
|
console.info("Size: " + result.kilobytes + " KB") |
|
console.info("----------------------------------------------------") |
|
|
|
if (result.kilobytes > 512) { |
|
console.error("Site size is greater than 512KB.") |
|
exit(1); |
|
} |
|
})();
|
|
|