mirror of
https://github.com/nginx/documentation.git
synced 2025-07-25 16:01:24 +00:00
53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
const puppeteer = require('puppeteer');
|
|
const fs = require('fs');
|
|
|
|
const PORT = 8041;
|
|
const PR_NUMBER = process.env.GITHUB_PR_NUMBER;
|
|
const environments = [
|
|
{
|
|
title: "pr",
|
|
url: `https://frontdoor-test-docs.nginx.com/previews/docs/${PR_NUMBER}/`
|
|
},
|
|
{
|
|
title: "main",
|
|
url: "https://docs.nginx.com/"
|
|
}];
|
|
const OUTPUT_DIR = './lighthouse-reports';
|
|
|
|
const signIntoFrontDoor = async (browser, env) => {
|
|
const page = await browser.newPage();
|
|
await page.authenticate({
|
|
username: process.env.FRONT_DOOR_USERNAME,
|
|
password: process.env.FRONT_DOOR_PASSWORD
|
|
});
|
|
|
|
await page.goto(env['url']);
|
|
await page.waitForSelector('.navbar');
|
|
console.log("Logged in...");
|
|
await page.close();
|
|
}
|
|
|
|
const runLighthouse = async (env) => {
|
|
const OUTPUT_FILE= `${env['title']}-report.json`;
|
|
|
|
const lighthouse = (await import('lighthouse')).default;
|
|
console.log(`Running Lighthouse for ${env['title']}...`)
|
|
const result = await lighthouse(env['url'], { port: PORT });
|
|
fs.writeFileSync(`${OUTPUT_DIR}/${OUTPUT_FILE}`, result.report);
|
|
}
|
|
|
|
(async () => {
|
|
const browser = await puppeteer.launch({ args: [`--remote-debugging-port=${PORT}`], headless: true });
|
|
if (!fs.existsSync(OUTPUT_DIR)){
|
|
fs.mkdirSync(OUTPUT_DIR);
|
|
}
|
|
|
|
for(const env of environments){
|
|
if(env['title'] == 'pr') {
|
|
await signIntoFrontDoor(browser, env);
|
|
}
|
|
await runLighthouse(env);
|
|
}
|
|
|
|
await browser.close();
|
|
})(); |