diff --git a/lib/index.js b/lib/index.js index 1663ae0..b5c3bf3 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,5 +1,9 @@ import { SitespeedioPlugin } from '@sitespeed.io/plugin'; import { HarAnalyzer } from './harAnalyzer.js'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import fs from 'node:fs'; +const fsp = fs.promises; // https://www.sitespeed.io/documentation/sitespeed.io/plugins/#create-your-own-plugin // node bin\sitespeed.js -b edge -n 1 --plugins.add analysisstorer --plugins.add ../../../plugin-javascript/lib/index.js --browsertime.chrome.includeResponseBodies all https://webperf.se @@ -11,9 +15,16 @@ export default class JavascriptPlugin extends SitespeedioPlugin { super({ name: pluginname, options, context, queue }); } - open(context, options) { + async open(context, options) { this.make = context.messageMaker(pluginname).make; this.harAnalyzer = new HarAnalyzer(); + const libFolder = fileURLToPath(new URL('..', import.meta.url)); + this.pluginFolder = path.resolve(libFolder); + + this.pug = await fsp.readFile( + path.resolve(this.pluginFolder, 'pug', 'index.pug'), + 'utf8' + ); } async processMessage(message, queue) { @@ -21,7 +32,24 @@ export default class JavascriptPlugin extends SitespeedioPlugin { switch (message.type) { case 'sitespeedio.setup': { // Let other plugins know that the pagenotfound plugin is alive - super.sendMessage('browsertime.setup'); + // queue.postMessage(this.make(pluginname + '.setup')); + // Add the HTML pugs + queue.postMessage( + this.make('html.pug', { + id: pluginname, + name: 'Javascript', + pug: this.pug, + type: 'pageSummary' + }) + ); + queue.postMessage( + this.make('html.pug', { + id: pluginname, + name: 'Javascript', + pug: this.pug, + type: 'run' + }) + ); break; } case 'browsertime.har': { diff --git a/pug/index.pug b/pug/index.pug new file mode 100644 index 0000000..6149ade --- /dev/null +++ b/pug/index.pug @@ -0,0 +1,31 @@ + +- let pluginData = pageInfo.data['webperf-plugin-javascript'].run ? pageInfo.data['webperf-plugin-javascript'].run : pageInfo.data['webperf-plugin-javascript'].pageSummary + +h1 Issues +if pluginData.knowledgeData && pluginData.knowledgeData.issues && pluginData.knowledgeData.issues.length > 0 + table + thead + tr + th URL + th Rule + th Category + th Severity + th Text + th Line + th Column + tbody + each issue in pluginData.knowledgeData.issues + tr + td= issue.url + td= issue.rule + td= issue.category + td= issue.severity + td= issue.text + td= issue.line + td= issue.column +else + p No issues found. + +h2 Debug: Plugin Data +pre + code= JSON.stringify(pluginData, null, 3)