open-local-audit 0.5.0 → 0.7.0
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 +14 -0
- package/README.md +35 -5
- package/dist/audit.d.ts +1 -1
- package/dist/audit.js +31 -9
- package/dist/audit.js.map +1 -1
- package/dist/batch.d.ts +10 -2
- package/dist/batch.js +60 -13
- package/dist/batch.js.map +1 -1
- package/dist/cli.js +25 -3
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/profiles.d.ts +3 -0
- package/dist/profiles.js +45 -0
- package/dist/profiles.js.map +1 -0
- package/dist/render.d.ts +3 -0
- package/dist/render.js +21 -1
- package/dist/render.js.map +1 -1
- package/dist/reporters.js +34 -2
- package/dist/reporters.js.map +1 -1
- package/dist/schema.d.ts +10 -0
- package/dist/schema.js +4 -0
- package/dist/schema.js.map +1 -1
- package/dist/types.d.ts +14 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,20 @@ All notable changes to Open Local Audit will be documented here.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## v0.7.0 - 2026-05-11
|
|
8
|
+
|
|
9
|
+
- Added industry profiles with `--profile generic|dental|beauty|restaurant|contractor`.
|
|
10
|
+
- Added optional `profile` CSV input column for batch audits.
|
|
11
|
+
- Added profile metadata to JSON, Markdown, HTML, and batch index outputs.
|
|
12
|
+
- Added `--export-csv` for batch prospect exports with score, top finding, report path, and error columns.
|
|
13
|
+
|
|
14
|
+
## v0.6.0 - 2026-05-10
|
|
15
|
+
|
|
16
|
+
- Added `--screenshot` for rendered homepage screenshot capture.
|
|
17
|
+
- Added visual evidence metadata to JSON reports.
|
|
18
|
+
- Added Visual Evidence sections to Markdown and HTML reports.
|
|
19
|
+
- Added batch screenshot artifact paths for per-site report folders.
|
|
20
|
+
|
|
7
21
|
## v0.5.0 - 2026-05-09
|
|
8
22
|
|
|
9
23
|
- Added opt-in Playwright-rendered audits with `--render`.
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Open Local Audit is an open-source website and local presence auditor for small
|
|
|
4
4
|
|
|
5
5
|
## Current stage
|
|
6
6
|
|
|
7
|
-
Published CLI. The project can run a single URL audit, an opt-in Playwright-rendered audit, a plain-text batch URL list, or a CSV batch file, optionally check same-origin links, and produce JSON, Markdown, HTML, or all report formats. Batch runs write per-site reports plus a filterable top-level batch index
|
|
7
|
+
Published CLI. The project can run a single URL audit, an opt-in Playwright-rendered audit with screenshot evidence, a plain-text batch URL list, or a profile-aware CSV batch file, optionally check same-origin links, and produce JSON, Markdown, HTML, or all report formats. Batch runs write per-site reports plus a filterable top-level batch index and optional prospect CSV export for triage.
|
|
8
8
|
|
|
9
9
|
## Business purpose
|
|
10
10
|
|
|
@@ -72,12 +72,24 @@ Run the published package:
|
|
|
72
72
|
npx open-local-audit https://example.com --format markdown
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
+
Run with an industry profile:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
open-local-audit https://example.com --profile dental --format markdown
|
|
79
|
+
```
|
|
80
|
+
|
|
75
81
|
Render the page before auditing when static HTML is not enough:
|
|
76
82
|
|
|
77
83
|
```bash
|
|
78
84
|
open-local-audit https://example.com --render --format markdown
|
|
79
85
|
```
|
|
80
86
|
|
|
87
|
+
Capture a rendered homepage screenshot and add it as visual evidence:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
open-local-audit https://example.com --screenshot --format all --out-dir reports
|
|
91
|
+
```
|
|
92
|
+
|
|
81
93
|
`--render` loads Playwright from the current project. Install it alongside the CLI when needed:
|
|
82
94
|
|
|
83
95
|
```bash
|
|
@@ -108,20 +120,32 @@ Run a labeled CSV batch audit:
|
|
|
108
120
|
open-local-audit --input sites.csv --format all --out-dir reports
|
|
109
121
|
```
|
|
110
122
|
|
|
123
|
+
Run a profile-aware batch audit and write a prospect CSV export:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
open-local-audit --input sites.csv --profile dental --export-csv prospects.csv --format all --out-dir reports
|
|
127
|
+
```
|
|
128
|
+
|
|
111
129
|
Run a focused batch triage index:
|
|
112
130
|
|
|
113
131
|
```bash
|
|
114
132
|
open-local-audit --input sites.csv --format all --out-dir reports --segment dental --sort score-asc --top 25
|
|
115
133
|
```
|
|
116
134
|
|
|
117
|
-
|
|
135
|
+
Capture screenshots during batch audits:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
open-local-audit --input sites.csv --screenshot --format all --out-dir reports
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Batch triage supports `--segment <segment>`, `--min-score <score>`, `--top <count>`, and `--sort score-asc|severity-desc`. Batch runs can also write `--export-csv <path>` for prospect triage.
|
|
118
142
|
|
|
119
143
|
Supported CSV columns:
|
|
120
144
|
|
|
121
145
|
```csv
|
|
122
|
-
url,label,segment
|
|
123
|
-
example.com,Example Clinic,dental
|
|
124
|
-
https://example.org/path,Example Salon,beauty
|
|
146
|
+
url,label,segment,profile
|
|
147
|
+
example.com,Example Clinic,dental,dental
|
|
148
|
+
https://example.org/path,Example Salon,beauty,beauty
|
|
125
149
|
```
|
|
126
150
|
|
|
127
151
|
Check same-origin links and fail CI when high-severity issues are found:
|
|
@@ -142,7 +166,10 @@ The first implementation milestone is a CLI that accepts one URL and outputs:
|
|
|
142
166
|
- CSV batch input with optional labels and segments.
|
|
143
167
|
- Aggregate batch index reports for prospect triage.
|
|
144
168
|
- Batch index filtering, sorting, and top-N triage controls.
|
|
169
|
+
- Industry profiles for generic, dental, beauty, restaurant, and contractor audits.
|
|
170
|
+
- Prospect CSV export with profile, score, top finding, report path, and error columns.
|
|
145
171
|
- Optional rendered DOM audits with `--render`.
|
|
172
|
+
- Optional rendered screenshot evidence with `--screenshot`.
|
|
146
173
|
- Score summary.
|
|
147
174
|
- Evidence table.
|
|
148
175
|
- Optional same-origin link checks.
|
|
@@ -163,8 +190,11 @@ Example report artifacts are available under [`examples/reports`](./examples/rep
|
|
|
163
190
|
## Known limits
|
|
164
191
|
|
|
165
192
|
- `--render` requires Playwright in the calling project and a working browser runtime.
|
|
193
|
+
- `--screenshot` uses the rendered audit path, requires `--out-dir`, and also requires Playwright.
|
|
166
194
|
- Batch triage options apply to the aggregate batch index, not individual per-site report contents.
|
|
195
|
+
- `--export-csv` is only supported for batch audits.
|
|
167
196
|
- Batch input requires `--out-dir` and cannot be combined with a positional URL.
|
|
197
|
+
- Industry profiles are deterministic severity and recommendation adjustments, not full vertical-specific rule packs.
|
|
168
198
|
- Rule checks are deterministic heuristics, so they can miss or over-flag site-specific markup.
|
|
169
199
|
|
|
170
200
|
## GitHub and npm release intent
|
package/dist/audit.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { AuditOptions, AuditReport, PageSnapshot } from "./types.js";
|
|
2
|
-
export declare function auditSnapshot(snapshot: PageSnapshot, scannedAt?: string): AuditReport;
|
|
2
|
+
export declare function auditSnapshot(snapshot: PageSnapshot, scannedAt?: string, options?: Pick<Partial<AuditOptions>, "profile">): AuditReport;
|
|
3
3
|
export declare function auditUrl(url: string, options?: Partial<AuditOptions>): Promise<AuditReport>;
|
package/dist/audit.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { applyProfileAdjustments } from "./profiles.js";
|
|
1
2
|
import { runRules } from "./rules.js";
|
|
2
3
|
import { load } from "cheerio";
|
|
3
4
|
import { renderPageSnapshot } from "./render.js";
|
|
@@ -6,7 +7,9 @@ const defaultOptions = {
|
|
|
6
7
|
maxRedirects: 5,
|
|
7
8
|
checkLinks: false,
|
|
8
9
|
maxPages: 10,
|
|
9
|
-
|
|
10
|
+
profile: "generic",
|
|
11
|
+
render: false,
|
|
12
|
+
screenshot: false
|
|
10
13
|
};
|
|
11
14
|
const categories = [
|
|
12
15
|
"technical-health",
|
|
@@ -139,14 +142,16 @@ function scoreCategories(reportFindings) {
|
|
|
139
142
|
];
|
|
140
143
|
}));
|
|
141
144
|
}
|
|
142
|
-
export function auditSnapshot(snapshot, scannedAt = new Date().toISOString()) {
|
|
143
|
-
const
|
|
145
|
+
export function auditSnapshot(snapshot, scannedAt = new Date().toISOString(), options = {}) {
|
|
146
|
+
const profile = options.profile ?? "generic";
|
|
147
|
+
const findings = applyProfileAdjustments(runRules(snapshot), profile);
|
|
144
148
|
const recommendations = findings.map((finding) => finding.recommendation);
|
|
145
|
-
|
|
149
|
+
const report = {
|
|
146
150
|
url: snapshot.url,
|
|
147
151
|
finalUrl: snapshot.finalUrl,
|
|
148
152
|
scannedAt,
|
|
149
153
|
statusCode: snapshot.statusCode,
|
|
154
|
+
profile,
|
|
150
155
|
summary: summarize(findings),
|
|
151
156
|
scores: scoreCategories(findings),
|
|
152
157
|
findings,
|
|
@@ -166,16 +171,31 @@ export function auditSnapshot(snapshot, scannedAt = new Date().toISOString()) {
|
|
|
166
171
|
}
|
|
167
172
|
]
|
|
168
173
|
};
|
|
174
|
+
if (snapshot.visualEvidence && snapshot.visualEvidence.length > 0) {
|
|
175
|
+
report.visualEvidence = snapshot.visualEvidence;
|
|
176
|
+
}
|
|
177
|
+
return report;
|
|
169
178
|
}
|
|
170
179
|
export async function auditUrl(url, options = {}) {
|
|
171
180
|
const effectiveOptions = {
|
|
172
181
|
...defaultOptions,
|
|
173
182
|
...options
|
|
174
183
|
};
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
184
|
+
const shouldRender = effectiveOptions.render || effectiveOptions.screenshot;
|
|
185
|
+
const snapshot = shouldRender && effectiveOptions.renderPage
|
|
186
|
+
? await effectiveOptions.renderPage(url, {
|
|
187
|
+
timeoutMs: effectiveOptions.timeoutMs,
|
|
188
|
+
screenshot: effectiveOptions.screenshot,
|
|
189
|
+
screenshotPath: effectiveOptions.screenshotPath,
|
|
190
|
+
screenshotReportPath: effectiveOptions.screenshotReportPath
|
|
191
|
+
})
|
|
192
|
+
: shouldRender
|
|
193
|
+
? await renderPageSnapshot(url, {
|
|
194
|
+
timeoutMs: effectiveOptions.timeoutMs,
|
|
195
|
+
screenshot: effectiveOptions.screenshot,
|
|
196
|
+
screenshotPath: effectiveOptions.screenshotPath,
|
|
197
|
+
screenshotReportPath: effectiveOptions.screenshotReportPath
|
|
198
|
+
})
|
|
179
199
|
: await fetchWithRedirects(url, effectiveOptions);
|
|
180
200
|
const origin = new URL(snapshot.finalUrl).origin;
|
|
181
201
|
snapshot.resources = {
|
|
@@ -185,6 +205,8 @@ export async function auditUrl(url, options = {}) {
|
|
|
185
205
|
if (effectiveOptions.checkLinks) {
|
|
186
206
|
snapshot.internalLinks = await Promise.all(collectInternalLinks(snapshot, effectiveOptions.maxPages).map((link) => fetchResource(link, effectiveOptions)));
|
|
187
207
|
}
|
|
188
|
-
return auditSnapshot(snapshot)
|
|
208
|
+
return auditSnapshot(snapshot, new Date().toISOString(), {
|
|
209
|
+
profile: effectiveOptions.profile
|
|
210
|
+
});
|
|
189
211
|
}
|
|
190
212
|
//# sourceMappingURL=audit.js.map
|
package/dist/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,cAAc,GAAiB;IACnC,SAAS,EAAE,KAAK;IAChB,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/batch.d.ts
CHANGED
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
import { type OutputFormat, type ReportOutput } from "./output.js";
|
|
2
|
-
import type { AuditReport } from "./types.js";
|
|
2
|
+
import type { AuditProfile, AuditReport } from "./types.js";
|
|
3
3
|
export interface BatchInputEntry {
|
|
4
4
|
url: string;
|
|
5
5
|
label?: string;
|
|
6
6
|
segment?: string;
|
|
7
|
+
profile?: AuditProfile;
|
|
7
8
|
}
|
|
8
9
|
export interface BatchReportOptions {
|
|
9
10
|
format: OutputFormat;
|
|
10
11
|
outDir: string;
|
|
11
12
|
pretty?: boolean;
|
|
12
|
-
audit?: (url: string) => Promise<AuditReport>;
|
|
13
|
+
audit?: (url: string, context: BatchAuditContext) => Promise<AuditReport>;
|
|
13
14
|
index?: BatchIndexOptions;
|
|
15
|
+
exportCsv?: string;
|
|
16
|
+
profile?: AuditProfile;
|
|
17
|
+
}
|
|
18
|
+
export interface BatchAuditContext {
|
|
19
|
+
slug: string;
|
|
20
|
+
outDir: string;
|
|
21
|
+
profile: AuditProfile;
|
|
14
22
|
}
|
|
15
23
|
export type BatchIndexSort = "score-asc" | "severity-desc";
|
|
16
24
|
export interface BatchIndexOptions {
|
package/dist/batch.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
-
import { basename, join } from "node:path";
|
|
2
|
+
import { basename, dirname, join } from "node:path";
|
|
3
3
|
import { auditUrl } from "./audit.js";
|
|
4
4
|
import { writeReportOutputs } from "./output.js";
|
|
5
|
-
import { inputUrlSchema } from "./schema.js";
|
|
5
|
+
import { auditProfileSchema, inputUrlSchema } from "./schema.js";
|
|
6
6
|
function parseCsvLine(line) {
|
|
7
7
|
const cells = [];
|
|
8
8
|
let current = "";
|
|
@@ -51,6 +51,7 @@ export async function readBatchInput(path) {
|
|
|
51
51
|
const urlIndex = headers.indexOf("url");
|
|
52
52
|
const labelIndex = headers.indexOf("label");
|
|
53
53
|
const segmentIndex = headers.indexOf("segment");
|
|
54
|
+
const profileIndex = headers.indexOf("profile");
|
|
54
55
|
if (urlIndex < 0) {
|
|
55
56
|
throw new Error("CSV batch input requires a url column");
|
|
56
57
|
}
|
|
@@ -65,6 +66,9 @@ export async function readBatchInput(path) {
|
|
|
65
66
|
if (segmentIndex >= 0 && cells[segmentIndex]) {
|
|
66
67
|
entry.segment = cells[segmentIndex];
|
|
67
68
|
}
|
|
69
|
+
if (profileIndex >= 0 && cells[profileIndex]) {
|
|
70
|
+
entry.profile = auditProfileSchema.parse(cells[profileIndex]);
|
|
71
|
+
}
|
|
68
72
|
return entry;
|
|
69
73
|
});
|
|
70
74
|
}
|
|
@@ -112,12 +116,14 @@ function worstSeverityRank(report) {
|
|
|
112
116
|
};
|
|
113
117
|
return Math.max(0, ...report.findings.map((finding) => ranks[finding.severity]));
|
|
114
118
|
}
|
|
115
|
-
function buildBatchIndexEntry(result) {
|
|
119
|
+
function buildBatchIndexEntry(result, profile) {
|
|
120
|
+
const resultProfile = result.profile ?? profile ?? "generic";
|
|
116
121
|
if (result.status === "failed") {
|
|
117
122
|
return {
|
|
118
123
|
url: result.url,
|
|
119
124
|
label: result.label,
|
|
120
125
|
segment: result.segment,
|
|
126
|
+
profile: resultProfile,
|
|
121
127
|
status: result.status,
|
|
122
128
|
slug: result.slug,
|
|
123
129
|
error: result.error
|
|
@@ -127,6 +133,7 @@ function buildBatchIndexEntry(result) {
|
|
|
127
133
|
url: result.url,
|
|
128
134
|
label: result.label,
|
|
129
135
|
segment: result.segment,
|
|
136
|
+
profile: result.report.profile ?? resultProfile,
|
|
130
137
|
status: result.status,
|
|
131
138
|
slug: result.slug,
|
|
132
139
|
score: totalScore(result.report),
|
|
@@ -166,8 +173,8 @@ function applyBatchIndexOptions(results, options = {}) {
|
|
|
166
173
|
const sorted = sortBatchIndexResults(filtered, options.sort);
|
|
167
174
|
return options.top === undefined ? sorted : sorted.slice(0, options.top);
|
|
168
175
|
}
|
|
169
|
-
function buildBatchIndex(results, options) {
|
|
170
|
-
const entries = applyBatchIndexOptions(results, options).map(buildBatchIndexEntry);
|
|
176
|
+
function buildBatchIndex(results, options, profile) {
|
|
177
|
+
const entries = applyBatchIndexOptions(results, options).map((result) => buildBatchIndexEntry(result, profile));
|
|
171
178
|
return {
|
|
172
179
|
summary: {
|
|
173
180
|
total: entries.length,
|
|
@@ -196,8 +203,8 @@ function renderBatchIndexMarkdown(index) {
|
|
|
196
203
|
`- Succeeded: ${index.summary.succeeded}`,
|
|
197
204
|
`- Failed: ${index.summary.failed}`,
|
|
198
205
|
"",
|
|
199
|
-
"| Status | Label | URL | Segment | Score | Top issue | Error |",
|
|
200
|
-
"| --- | --- | --- | --- | ---: | --- | --- |"
|
|
206
|
+
"| Status | Label | URL | Segment | Profile | Score | Top issue | Error |",
|
|
207
|
+
"| --- | --- | --- | --- | --- | ---: | --- | --- |"
|
|
201
208
|
];
|
|
202
209
|
for (const entry of index.entries) {
|
|
203
210
|
lines.push([
|
|
@@ -205,6 +212,7 @@ function renderBatchIndexMarkdown(index) {
|
|
|
205
212
|
entry.label ?? "",
|
|
206
213
|
entry.url,
|
|
207
214
|
entry.segment ?? "",
|
|
215
|
+
entry.profile ?? "",
|
|
208
216
|
entry.score?.toString() ?? "",
|
|
209
217
|
entry.topFinding ?? "",
|
|
210
218
|
entry.error ?? ""
|
|
@@ -219,7 +227,7 @@ function renderBatchIndexMarkdown(index) {
|
|
|
219
227
|
}
|
|
220
228
|
function renderBatchIndexHtml(index) {
|
|
221
229
|
const rows = index.entries
|
|
222
|
-
.map((entry) => `<tr><td>${entry.status}</td><td>${escapeHtml(entry.label ?? "")}</td><td>${escapeHtml(entry.url)}</td><td>${escapeHtml(entry.segment ?? "")}</td><td>${entry.score ?? ""}</td><td>${escapeHtml(entry.topFinding ?? "")}</td><td>${escapeHtml(entry.error ?? "")}</td></tr>`)
|
|
230
|
+
.map((entry) => `<tr><td>${entry.status}</td><td>${escapeHtml(entry.label ?? "")}</td><td>${escapeHtml(entry.url)}</td><td>${escapeHtml(entry.segment ?? "")}</td><td>${escapeHtml(entry.profile ?? "")}</td><td>${entry.score ?? ""}</td><td>${escapeHtml(entry.topFinding ?? "")}</td><td>${escapeHtml(entry.error ?? "")}</td></tr>`)
|
|
223
231
|
.join("\n");
|
|
224
232
|
return `<!doctype html>
|
|
225
233
|
<html lang="en">
|
|
@@ -238,7 +246,7 @@ function renderBatchIndexHtml(index) {
|
|
|
238
246
|
<h1>Open Local Audit Batch Index</h1>
|
|
239
247
|
<p>Total: ${index.summary.total}<br>Succeeded: ${index.summary.succeeded}<br>Failed: ${index.summary.failed}</p>
|
|
240
248
|
<table>
|
|
241
|
-
<thead><tr><th>Status</th><th>Label</th><th>URL</th><th>Segment</th><th>Score</th><th>Top issue</th><th>Error</th></tr></thead>
|
|
249
|
+
<thead><tr><th>Status</th><th>Label</th><th>URL</th><th>Segment</th><th>Profile</th><th>Score</th><th>Top issue</th><th>Error</th></tr></thead>
|
|
242
250
|
<tbody>
|
|
243
251
|
${rows}
|
|
244
252
|
</tbody>
|
|
@@ -249,7 +257,7 @@ ${rows}
|
|
|
249
257
|
}
|
|
250
258
|
async function writeBatchIndex(results, options) {
|
|
251
259
|
await mkdir(options.outDir, { recursive: true });
|
|
252
|
-
const index = buildBatchIndex(results, options.index);
|
|
260
|
+
const index = buildBatchIndex(results, options.index, options.profile);
|
|
253
261
|
const writers = {
|
|
254
262
|
json: () => JSON.stringify(index, null, options.pretty ? 2 : 0) + "\n",
|
|
255
263
|
markdown: () => renderBatchIndexMarkdown(index),
|
|
@@ -264,22 +272,56 @@ async function writeBatchIndex(results, options) {
|
|
|
264
272
|
await writeFile(join(options.outDir, fileNames[format]), writers[format](), "utf8");
|
|
265
273
|
}
|
|
266
274
|
}
|
|
275
|
+
function escapeCsvCell(value) {
|
|
276
|
+
if (!/[",\r\n]/.test(value)) {
|
|
277
|
+
return value;
|
|
278
|
+
}
|
|
279
|
+
return `"${value.replace(/"/g, '""')}"`;
|
|
280
|
+
}
|
|
281
|
+
function renderProspectCsv(results) {
|
|
282
|
+
const header = ["url", "label", "segment", "profile", "status", "score", "topFinding", "report paths", "error"];
|
|
283
|
+
const rows = results.map((result) => {
|
|
284
|
+
const reports = result.status === "success" ? outputReports(result.slug, result.outputs) : {};
|
|
285
|
+
const reportPaths = Object.values(reports).join("; ");
|
|
286
|
+
const values = [
|
|
287
|
+
result.url,
|
|
288
|
+
result.label ?? "",
|
|
289
|
+
result.segment ?? "",
|
|
290
|
+
result.status === "success" ? (result.report.profile ?? result.profile ?? "generic") : (result.profile ?? ""),
|
|
291
|
+
result.status,
|
|
292
|
+
result.status === "success" ? totalScore(result.report).toString() : "",
|
|
293
|
+
result.status === "success" ? (result.report.findings[0]?.title ?? "") : "",
|
|
294
|
+
reportPaths,
|
|
295
|
+
result.status === "failed" ? result.error : ""
|
|
296
|
+
];
|
|
297
|
+
return values.map(escapeCsvCell).join(",");
|
|
298
|
+
});
|
|
299
|
+
return `${[header.join(","), ...rows].join("\n")}\n`;
|
|
300
|
+
}
|
|
267
301
|
export async function runBatchReports(urls, options) {
|
|
268
302
|
const usedSlugs = new Map();
|
|
269
|
-
const audit = options.audit ?? ((url) => auditUrl(url, {}));
|
|
303
|
+
const audit = options.audit ?? ((url, context) => auditUrl(url, { profile: context.profile }));
|
|
270
304
|
const results = [];
|
|
271
305
|
for (const rawEntry of urls) {
|
|
272
306
|
const entry = normalizeEntry(rawEntry);
|
|
273
307
|
const slug = uniqueSlug(safeReportSlug(entry.url), usedSlugs);
|
|
308
|
+
const siteOutDir = join(options.outDir, slug);
|
|
309
|
+
const profile = entry.profile ?? options.profile ?? "generic";
|
|
274
310
|
try {
|
|
275
|
-
const report = await audit(entry.url
|
|
311
|
+
const report = await audit(entry.url, {
|
|
312
|
+
slug,
|
|
313
|
+
outDir: siteOutDir,
|
|
314
|
+
profile
|
|
315
|
+
});
|
|
316
|
+
const reportProfile = report.profile ?? "generic";
|
|
276
317
|
const outputs = await writeReportOutputs(report, {
|
|
277
318
|
format: options.format,
|
|
278
|
-
outDir:
|
|
319
|
+
outDir: siteOutDir,
|
|
279
320
|
pretty: options.pretty
|
|
280
321
|
});
|
|
281
322
|
results.push({
|
|
282
323
|
...entry,
|
|
324
|
+
profile: reportProfile,
|
|
283
325
|
status: "success",
|
|
284
326
|
slug,
|
|
285
327
|
report,
|
|
@@ -289,6 +331,7 @@ export async function runBatchReports(urls, options) {
|
|
|
289
331
|
catch (error) {
|
|
290
332
|
results.push({
|
|
291
333
|
...entry,
|
|
334
|
+
profile,
|
|
292
335
|
status: "failed",
|
|
293
336
|
slug,
|
|
294
337
|
error: error instanceof Error ? error.message : "Unknown error",
|
|
@@ -297,6 +340,10 @@ export async function runBatchReports(urls, options) {
|
|
|
297
340
|
}
|
|
298
341
|
}
|
|
299
342
|
await writeBatchIndex(results, options);
|
|
343
|
+
if (options.exportCsv) {
|
|
344
|
+
await mkdir(dirname(options.exportCsv), { recursive: true });
|
|
345
|
+
await writeFile(options.exportCsv, renderProspectCsv(results), "utf8");
|
|
346
|
+
}
|
|
300
347
|
return results;
|
|
301
348
|
}
|
|
302
349
|
//# sourceMappingURL=batch.js.map
|
package/dist/batch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../src/batch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../src/batch.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from "commander";
|
|
3
|
+
import { join } from "node:path";
|
|
3
4
|
import { auditUrl } from "./audit.js";
|
|
4
5
|
import { readBatchInput, runBatchReports } from "./batch.js";
|
|
5
6
|
import { shouldFailOnThreshold } from "./exit-policy.js";
|
|
@@ -19,11 +20,14 @@ program
|
|
|
19
20
|
.option("--min-score <score>", "include only successful batch index entries at or above a score")
|
|
20
21
|
.option("--top <count>", "limit the batch index to the top N entries after filtering and sorting")
|
|
21
22
|
.option("--sort <sort>", "batch index sort: score-asc or severity-desc")
|
|
23
|
+
.option("--profile <profile>", "industry profile: generic, dental, beauty, restaurant, or contractor", "generic")
|
|
24
|
+
.option("--export-csv <path>", "write a batch prospect CSV export")
|
|
22
25
|
.option("--timeout <ms>", "request timeout in milliseconds", "10000")
|
|
23
26
|
.option("--max-redirects <count>", "maximum redirects to follow", "5")
|
|
24
27
|
.option("--check-links", "check same-origin links found on the audited page", false)
|
|
25
28
|
.option("--max-pages <count>", "maximum same-origin links to check", "10")
|
|
26
29
|
.option("--render", "use Playwright-rendered HTML instead of the static response", false)
|
|
30
|
+
.option("--screenshot", "capture a rendered homepage screenshot into the report output directory", false)
|
|
27
31
|
.option("--fail-on <severity>", "exit with code 1 when findings meet severity: none, high, medium, or low", "none")
|
|
28
32
|
.option("--pretty", "pretty-print JSON output", false)
|
|
29
33
|
.action(async (rawUrl, rawOptions) => {
|
|
@@ -34,7 +38,9 @@ program
|
|
|
34
38
|
maxRedirects: options.maxRedirects,
|
|
35
39
|
checkLinks: options.checkLinks,
|
|
36
40
|
maxPages: options.maxPages,
|
|
37
|
-
|
|
41
|
+
profile: options.profile,
|
|
42
|
+
render: options.render || options.screenshot,
|
|
43
|
+
screenshot: options.screenshot
|
|
38
44
|
};
|
|
39
45
|
if (options.input) {
|
|
40
46
|
if (rawUrl) {
|
|
@@ -48,13 +54,20 @@ program
|
|
|
48
54
|
format: options.format,
|
|
49
55
|
outDir: options.outDir,
|
|
50
56
|
pretty: options.pretty,
|
|
57
|
+
exportCsv: options.exportCsv,
|
|
58
|
+
profile: options.profile,
|
|
51
59
|
index: {
|
|
52
60
|
segment: options.segment,
|
|
53
61
|
minScore: options.minScore,
|
|
54
62
|
top: options.top,
|
|
55
63
|
sort: options.sort
|
|
56
64
|
},
|
|
57
|
-
audit: (url) => auditUrl(url,
|
|
65
|
+
audit: (url, context) => auditUrl(url, {
|
|
66
|
+
...auditOptions,
|
|
67
|
+
profile: context.profile,
|
|
68
|
+
screenshotPath: options.screenshot ? join(context.outDir, "artifacts", "homepage.png") : undefined,
|
|
69
|
+
screenshotReportPath: options.screenshot ? "artifacts/homepage.png" : undefined
|
|
70
|
+
})
|
|
58
71
|
});
|
|
59
72
|
process.stdout.write(`Audited ${results.length} URL${results.length === 1 ? "" : "s"}\n`);
|
|
60
73
|
const failed = results.some((result) => result.status === "success" && shouldFailOnThreshold(result.report, options.failOn));
|
|
@@ -67,9 +80,18 @@ program
|
|
|
67
80
|
if (!rawUrl) {
|
|
68
81
|
throw new Error("URL is required unless --input is used");
|
|
69
82
|
}
|
|
83
|
+
if (options.exportCsv) {
|
|
84
|
+
throw new Error("--export-csv is only supported when --input is used");
|
|
85
|
+
}
|
|
86
|
+
if (options.screenshot && !options.outDir) {
|
|
87
|
+
throw new Error("--out-dir is required when --screenshot is used");
|
|
88
|
+
}
|
|
89
|
+
const screenshotOutDir = options.screenshot ? options.outDir : undefined;
|
|
70
90
|
const url = inputUrlSchema.parse(rawUrl);
|
|
71
91
|
const report = await auditUrl(url, {
|
|
72
|
-
...auditOptions
|
|
92
|
+
...auditOptions,
|
|
93
|
+
screenshotPath: screenshotOutDir ? join(screenshotOutDir, "artifacts", "homepage.png") : undefined,
|
|
94
|
+
screenshotReportPath: screenshotOutDir ? "artifacts/homepage.png" : undefined
|
|
73
95
|
});
|
|
74
96
|
const outputs = await writeReportOutputs(report, {
|
|
75
97
|
format: options.format,
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,kBAAkB,CAAC;KACxB,WAAW,CAAC,+EAA+E,CAAC;KAC5F,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;KAC/C,MAAM,CAAC,gBAAgB,EAAE,6CAA6C,CAAC;KACvE,MAAM,CAAC,uBAAuB,EAAE,6CAA6C,EAAE,UAAU,CAAC;KAC1F,MAAM,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;KACtE,MAAM,CAAC,kBAAkB,EAAE,6CAA6C,CAAC;KACzE,MAAM,CAAC,qBAAqB,EAAE,qDAAqD,CAAC;KACpF,MAAM,CAAC,qBAAqB,EAAE,iEAAiE,CAAC;KAChG,MAAM,CAAC,eAAe,EAAE,wEAAwE,CAAC;KACjG,MAAM,CAAC,eAAe,EAAE,8CAA8C,CAAC;KACvE,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,EAAE,OAAO,CAAC;KACpE,MAAM,CAAC,yBAAyB,EAAE,6BAA6B,EAAE,GAAG,CAAC;KACrE,MAAM,CAAC,eAAe,EAAE,mDAAmD,EAAE,KAAK,CAAC;KACnF,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,EAAE,IAAI,CAAC;KACzE,MAAM,CAAC,UAAU,EAAE,6DAA6D,EAAE,KAAK,CAAC;KACxF,MAAM,CAAC,sBAAsB,EAAE,0EAA0E,EAAE,MAAM,CAAC;KAClH,MAAM,CAAC,UAAU,EAAE,0BAA0B,EAAE,KAAK,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,UAAmB,EAAE,EAAE;IAChE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG;YACnB,SAAS,EAAE,OAAO,CAAC,OAAO;YAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export { auditUrl, auditSnapshot } from "./audit.js";
|
|
2
2
|
export { readBatchInput, readInputUrls, runBatchReports, safeReportSlug } from "./batch.js";
|
|
3
3
|
export { shouldFailOnThreshold } from "./exit-policy.js";
|
|
4
|
+
export { auditProfiles } from "./profiles.js";
|
|
4
5
|
export { writeReportOutputs } from "./output.js";
|
|
5
6
|
export { renderHtmlReport, renderJsonReport, renderMarkdownReport } from "./reporters.js";
|
|
6
7
|
export { renderTerminalSummary } from "./summary.js";
|
|
7
|
-
export type {
|
|
8
|
+
export type { BatchAuditContext, BatchIndexOptions, BatchInputEntry, BatchReportOptions, BatchReportResult, FailedBatchReportResult, SuccessfulBatchReportResult } from "./batch.js";
|
|
9
|
+
export type { AuditOptions, AuditProfile, AuditReport, AuditSummary, Evidence, Finding, FindingCategory, PageSnapshot, Score, Severity } from "./types.js";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { auditUrl, auditSnapshot } from "./audit.js";
|
|
2
2
|
export { readBatchInput, readInputUrls, runBatchReports, safeReportSlug } from "./batch.js";
|
|
3
3
|
export { shouldFailOnThreshold } from "./exit-policy.js";
|
|
4
|
+
export { auditProfiles } from "./profiles.js";
|
|
4
5
|
export { writeReportOutputs } from "./output.js";
|
|
5
6
|
export { renderHtmlReport, renderJsonReport, renderMarkdownReport } from "./reporters.js";
|
|
6
7
|
export { renderTerminalSummary } from "./summary.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/profiles.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const auditProfiles = ["generic", "dental", "beauty", "restaurant", "contractor"];
|
|
2
|
+
const profileOverrides = {
|
|
3
|
+
dental: {
|
|
4
|
+
"review-cue-present": {
|
|
5
|
+
severity: "medium",
|
|
6
|
+
recommendation: "Add visible patient reviews, ratings, or testimonials to strengthen dental trust signals."
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
beauty: {
|
|
10
|
+
"image-alt-coverage": {
|
|
11
|
+
severity: "medium",
|
|
12
|
+
recommendation: "Add descriptive alt text to service and portfolio images so beauty work is easier to understand."
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
restaurant: {
|
|
16
|
+
"opening-hours-present": {
|
|
17
|
+
severity: "medium",
|
|
18
|
+
recommendation: "Show current opening hours, reservation availability, and holiday hours for diners."
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
contractor: {
|
|
22
|
+
"service-detail-depth": {
|
|
23
|
+
severity: "high",
|
|
24
|
+
recommendation: "List concrete services, project types, and service-area coverage so contractor leads can qualify quickly."
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
export function applyProfileAdjustments(findings, profile) {
|
|
29
|
+
if (profile === "generic") {
|
|
30
|
+
return findings;
|
|
31
|
+
}
|
|
32
|
+
const overrides = profileOverrides[profile];
|
|
33
|
+
return findings.map((finding) => {
|
|
34
|
+
const override = overrides[finding.id];
|
|
35
|
+
if (!override) {
|
|
36
|
+
return finding;
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
...finding,
|
|
40
|
+
severity: override.severity ?? finding.severity,
|
|
41
|
+
recommendation: override.recommendation ?? finding.recommendation
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AAOzG,MAAM,gBAAgB,GAA8E;IAClG,MAAM,EAAE;QACN,oBAAoB,EAAE;YACpB,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,2FAA2F;SAC5G;KACF;IACD,MAAM,EAAE;QACN,oBAAoB,EAAE;YACpB,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,kGAAkG;SACnH;KACF;IACD,UAAU,EAAE;QACV,uBAAuB,EAAE;YACvB,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,qFAAqF;SACtG;KACF;IACD,UAAU,EAAE;QACV,sBAAsB,EAAE;YACtB,QAAQ,EAAE,MAAM;YAChB,cAAc,EAAE,2GAA2G;SAC5H;KACF;CACF,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,QAAmB,EAAE,OAAqB;IAChF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO;YACL,GAAG,OAAO;YACV,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;YAC/C,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc;SAClE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/render.d.ts
CHANGED
package/dist/render.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { mkdir } from "node:fs/promises";
|
|
1
2
|
import { createRequire } from "node:module";
|
|
3
|
+
import { dirname } from "node:path";
|
|
2
4
|
import { join } from "node:path";
|
|
3
5
|
function loadPlaywright() {
|
|
4
6
|
const requireFromProject = createRequire(join(process.cwd(), "package.json"));
|
|
@@ -24,12 +26,30 @@ export async function renderPageSnapshot(url, options) {
|
|
|
24
26
|
timeout: options.timeoutMs,
|
|
25
27
|
waitUntil: "networkidle"
|
|
26
28
|
});
|
|
29
|
+
const visualEvidence = [];
|
|
30
|
+
if (options.screenshot) {
|
|
31
|
+
if (!options.screenshotPath) {
|
|
32
|
+
throw new Error("screenshotPath is required when screenshot capture is enabled");
|
|
33
|
+
}
|
|
34
|
+
await mkdir(dirname(options.screenshotPath), { recursive: true });
|
|
35
|
+
await page.screenshot({
|
|
36
|
+
path: options.screenshotPath,
|
|
37
|
+
fullPage: true
|
|
38
|
+
});
|
|
39
|
+
const reportPath = options.screenshotReportPath ?? options.screenshotPath;
|
|
40
|
+
visualEvidence.push({
|
|
41
|
+
label: "Homepage screenshot",
|
|
42
|
+
path: reportPath,
|
|
43
|
+
screenshotPath: reportPath
|
|
44
|
+
});
|
|
45
|
+
}
|
|
27
46
|
return {
|
|
28
47
|
url,
|
|
29
48
|
finalUrl: page.url(),
|
|
30
49
|
statusCode: response?.status() ?? 0,
|
|
31
50
|
headers: response?.headers() ?? {},
|
|
32
|
-
html: await page.content()
|
|
51
|
+
html: await page.content(),
|
|
52
|
+
visualEvidence: visualEvidence.length > 0 ? visualEvidence : undefined
|
|
33
53
|
};
|
|
34
54
|
}
|
|
35
55
|
finally {
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAoBjC,SAAS,cAAc;IACrB,MAAM,kBAAkB,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,YAAY,CAAmB,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,OAAO,kBAAkB,CAAC,YAAY,CAAmB,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,OAKC;IAED,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAErE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACpC,OAAO,EAAE,OAAO,CAAC,SAAS;YAC1B,SAAS,EAAE,aAAa;SACzB,CAAC,CAAC;QACH,MAAM,cAAc,GAAmC,EAAE,CAAC;QAE1D,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACnF,CAAC;YAED,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,UAAU,CAAC;gBACpB,IAAI,EAAE,OAAO,CAAC,cAAc;gBAC5B,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC;YAC1E,cAAc,CAAC,IAAI,CAAC;gBAClB,KAAK,EAAE,qBAAqB;gBAC5B,IAAI,EAAE,UAAU;gBAChB,cAAc,EAAE,UAAU;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,GAAG;YACH,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;YACpB,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;YACnC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;YAClC,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;YAC1B,cAAc,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;SACvE,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
|
package/dist/reporters.js
CHANGED
|
@@ -18,6 +18,35 @@ function severityRank(finding) {
|
|
|
18
18
|
};
|
|
19
19
|
return ranks[finding.severity];
|
|
20
20
|
}
|
|
21
|
+
function renderMarkdownVisualEvidence(report) {
|
|
22
|
+
if (!report.visualEvidence || report.visualEvidence.length === 0) {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
return [
|
|
26
|
+
"## Visual Evidence",
|
|
27
|
+
"",
|
|
28
|
+
"| Label | Path |",
|
|
29
|
+
"| --- | --- |",
|
|
30
|
+
...report.visualEvidence.map((item) => `| ${escapeCell(item.label)} | ${escapeCell(item.path)} |`),
|
|
31
|
+
""
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
function renderHtmlVisualEvidence(report) {
|
|
35
|
+
if (!report.visualEvidence || report.visualEvidence.length === 0) {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
const rows = report.visualEvidence
|
|
39
|
+
.map((item) => `<tr><td>${escapeHtml(item.label)}</td><td><a href="${escapeHtml(item.path)}">${escapeHtml(item.path)}</a></td></tr>`)
|
|
40
|
+
.join("\n");
|
|
41
|
+
return ` <h2>Visual Evidence</h2>
|
|
42
|
+
<table>
|
|
43
|
+
<thead><tr><th>Label</th><th>Path</th></tr></thead>
|
|
44
|
+
<tbody>
|
|
45
|
+
${rows}
|
|
46
|
+
</tbody>
|
|
47
|
+
</table>
|
|
48
|
+
`;
|
|
49
|
+
}
|
|
21
50
|
export function renderJsonReport(report, pretty = true) {
|
|
22
51
|
return `${JSON.stringify(report, null, pretty ? 2 : 0)}\n`;
|
|
23
52
|
}
|
|
@@ -30,6 +59,7 @@ export function renderMarkdownReport(report) {
|
|
|
30
59
|
`- Final URL: ${report.finalUrl}`,
|
|
31
60
|
`- Scanned at: ${report.scannedAt}`,
|
|
32
61
|
`- Status code: ${report.statusCode}`,
|
|
62
|
+
`- Profile: ${report.profile ?? "generic"}`,
|
|
33
63
|
"",
|
|
34
64
|
"## Score Summary",
|
|
35
65
|
"",
|
|
@@ -40,6 +70,7 @@ export function renderMarkdownReport(report) {
|
|
|
40
70
|
"## Findings",
|
|
41
71
|
""
|
|
42
72
|
];
|
|
73
|
+
lines.splice(lines.indexOf("## Findings"), 0, ...renderMarkdownVisualEvidence(report));
|
|
43
74
|
if (findings.length === 0) {
|
|
44
75
|
lines.push("No findings were detected by the current rule set.", "");
|
|
45
76
|
}
|
|
@@ -79,6 +110,7 @@ export function renderHtmlReport(report) {
|
|
|
79
110
|
const recommendations = report.recommendations.length > 0
|
|
80
111
|
? report.recommendations.map((recommendation) => `<li>${escapeHtml(recommendation)}</li>`).join("\n")
|
|
81
112
|
: "<li>Keep monitoring the page as content and templates change.</li>";
|
|
113
|
+
const visualEvidence = renderHtmlVisualEvidence(report);
|
|
82
114
|
return `<!doctype html>
|
|
83
115
|
<html lang="en">
|
|
84
116
|
<head>
|
|
@@ -95,7 +127,7 @@ export function renderHtmlReport(report) {
|
|
|
95
127
|
</head>
|
|
96
128
|
<body>
|
|
97
129
|
<h1>Open Local Audit Report</h1>
|
|
98
|
-
<p class="meta">URL: ${escapeHtml(report.url)}<br>Final URL: ${escapeHtml(report.finalUrl)}<br>Scanned at: ${escapeHtml(report.scannedAt)}<br>Status code: ${report.statusCode}</p>
|
|
130
|
+
<p class="meta">URL: ${escapeHtml(report.url)}<br>Final URL: ${escapeHtml(report.finalUrl)}<br>Scanned at: ${escapeHtml(report.scannedAt)}<br>Status code: ${report.statusCode}<br>Profile: ${escapeHtml(report.profile ?? "generic")}</p>
|
|
99
131
|
<h2>Score Summary</h2>
|
|
100
132
|
<table>
|
|
101
133
|
<thead><tr><th>Category</th><th>Score</th></tr></thead>
|
|
@@ -103,7 +135,7 @@ export function renderHtmlReport(report) {
|
|
|
103
135
|
${scoreRows}
|
|
104
136
|
</tbody>
|
|
105
137
|
</table>
|
|
106
|
-
<h2>Findings</h2>
|
|
138
|
+
${visualEvidence} <h2>Findings</h2>
|
|
107
139
|
<table>
|
|
108
140
|
<thead><tr><th>Severity</th><th>Finding</th><th>Evidence</th><th>Recommendation</th></tr></thead>
|
|
109
141
|
<tbody>
|
package/dist/reporters.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporters.js","sourceRoot":"","sources":["../src/reporters.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"reporters.js","sourceRoot":"","sources":["../src/reporters.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export declare const inputUrlSchema: z.ZodEffects<z.ZodPipeline<z.ZodEffects<z.Z
|
|
|
3
3
|
export declare const outputFormatSchema: z.ZodEnum<["json", "markdown", "html", "all"]>;
|
|
4
4
|
export declare const failOnSchema: z.ZodEnum<["none", "high", "medium", "low"]>;
|
|
5
5
|
export declare const batchIndexSortSchema: z.ZodEnum<["score-asc", "severity-desc"]>;
|
|
6
|
+
export declare const auditProfileSchema: z.ZodEnum<["generic", "dental", "beauty", "restaurant", "contractor"]>;
|
|
6
7
|
export declare const cliOptionsSchema: z.ZodObject<{
|
|
7
8
|
format: z.ZodDefault<z.ZodEnum<["json", "markdown", "html", "all"]>>;
|
|
8
9
|
out: z.ZodOptional<z.ZodString>;
|
|
@@ -12,17 +13,22 @@ export declare const cliOptionsSchema: z.ZodObject<{
|
|
|
12
13
|
minScore: z.ZodOptional<z.ZodNumber>;
|
|
13
14
|
top: z.ZodOptional<z.ZodNumber>;
|
|
14
15
|
sort: z.ZodOptional<z.ZodEnum<["score-asc", "severity-desc"]>>;
|
|
16
|
+
profile: z.ZodDefault<z.ZodEnum<["generic", "dental", "beauty", "restaurant", "contractor"]>>;
|
|
17
|
+
exportCsv: z.ZodOptional<z.ZodString>;
|
|
15
18
|
timeout: z.ZodDefault<z.ZodNumber>;
|
|
16
19
|
maxRedirects: z.ZodDefault<z.ZodNumber>;
|
|
17
20
|
checkLinks: z.ZodDefault<z.ZodBoolean>;
|
|
18
21
|
maxPages: z.ZodDefault<z.ZodNumber>;
|
|
19
22
|
render: z.ZodDefault<z.ZodBoolean>;
|
|
23
|
+
screenshot: z.ZodDefault<z.ZodBoolean>;
|
|
20
24
|
failOn: z.ZodDefault<z.ZodEnum<["none", "high", "medium", "low"]>>;
|
|
21
25
|
pretty: z.ZodDefault<z.ZodBoolean>;
|
|
22
26
|
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
screenshot: boolean;
|
|
23
28
|
maxRedirects: number;
|
|
24
29
|
checkLinks: boolean;
|
|
25
30
|
maxPages: number;
|
|
31
|
+
profile: "generic" | "dental" | "beauty" | "restaurant" | "contractor";
|
|
26
32
|
render: boolean;
|
|
27
33
|
format: "html" | "json" | "markdown" | "all";
|
|
28
34
|
timeout: number;
|
|
@@ -35,10 +41,13 @@ export declare const cliOptionsSchema: z.ZodObject<{
|
|
|
35
41
|
segment?: string | undefined;
|
|
36
42
|
minScore?: number | undefined;
|
|
37
43
|
top?: number | undefined;
|
|
44
|
+
exportCsv?: string | undefined;
|
|
38
45
|
}, {
|
|
46
|
+
screenshot?: boolean | undefined;
|
|
39
47
|
maxRedirects?: number | undefined;
|
|
40
48
|
checkLinks?: boolean | undefined;
|
|
41
49
|
maxPages?: number | undefined;
|
|
50
|
+
profile?: "generic" | "dental" | "beauty" | "restaurant" | "contractor" | undefined;
|
|
42
51
|
render?: boolean | undefined;
|
|
43
52
|
sort?: "score-asc" | "severity-desc" | undefined;
|
|
44
53
|
format?: "html" | "json" | "markdown" | "all" | undefined;
|
|
@@ -48,6 +57,7 @@ export declare const cliOptionsSchema: z.ZodObject<{
|
|
|
48
57
|
segment?: string | undefined;
|
|
49
58
|
minScore?: number | undefined;
|
|
50
59
|
top?: number | undefined;
|
|
60
|
+
exportCsv?: string | undefined;
|
|
51
61
|
timeout?: number | undefined;
|
|
52
62
|
failOn?: "high" | "medium" | "low" | "none" | undefined;
|
|
53
63
|
pretty?: boolean | undefined;
|
package/dist/schema.js
CHANGED
|
@@ -16,6 +16,7 @@ export const inputUrlSchema = z
|
|
|
16
16
|
export const outputFormatSchema = z.enum(["json", "markdown", "html", "all"]);
|
|
17
17
|
export const failOnSchema = z.enum(["none", "high", "medium", "low"]);
|
|
18
18
|
export const batchIndexSortSchema = z.enum(["score-asc", "severity-desc"]);
|
|
19
|
+
export const auditProfileSchema = z.enum(["generic", "dental", "beauty", "restaurant", "contractor"]);
|
|
19
20
|
export const cliOptionsSchema = z.object({
|
|
20
21
|
format: outputFormatSchema.default("markdown"),
|
|
21
22
|
out: z.string().optional(),
|
|
@@ -25,11 +26,14 @@ export const cliOptionsSchema = z.object({
|
|
|
25
26
|
minScore: z.coerce.number().min(0).max(100).optional(),
|
|
26
27
|
top: z.coerce.number().int().positive().optional(),
|
|
27
28
|
sort: batchIndexSortSchema.optional(),
|
|
29
|
+
profile: auditProfileSchema.default("generic"),
|
|
30
|
+
exportCsv: z.string().optional(),
|
|
28
31
|
timeout: z.coerce.number().int().positive().max(60000).default(10000),
|
|
29
32
|
maxRedirects: z.coerce.number().int().min(0).max(10).default(5),
|
|
30
33
|
checkLinks: z.boolean().default(false),
|
|
31
34
|
maxPages: z.coerce.number().int().positive().max(100).default(10),
|
|
32
35
|
render: z.boolean().default(false),
|
|
36
|
+
screenshot: z.boolean().default(false),
|
|
33
37
|
failOn: failOnSchema.default("none"),
|
|
34
38
|
pretty: z.boolean().default(false)
|
|
35
39
|
});
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,EAAE;KACR,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC;KACzB,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;IACnB,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,WAAW,KAAK,EAAE,CAAC;AAC5B,CAAC,CAAC;KACD,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;KAC7D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAC9C,OAAO,EAAE,wCAAwC;CAClD,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type Severity = "high" | "medium" | "low" | "info";
|
|
2
|
+
export type AuditProfile = "generic" | "dental" | "beauty" | "restaurant" | "contractor";
|
|
2
3
|
export type FindingCategory = "technical-health" | "search-basics" | "mobile-usability" | "trust-contact";
|
|
3
4
|
export interface Evidence {
|
|
4
5
|
label: string;
|
|
@@ -30,11 +31,13 @@ export interface AuditReport {
|
|
|
30
31
|
finalUrl: string;
|
|
31
32
|
scannedAt: string;
|
|
32
33
|
statusCode: number;
|
|
34
|
+
profile?: AuditProfile;
|
|
33
35
|
summary: AuditSummary;
|
|
34
36
|
scores: Record<FindingCategory, Score>;
|
|
35
37
|
findings: Finding[];
|
|
36
38
|
recommendations: string[];
|
|
37
39
|
evidence: Evidence[];
|
|
40
|
+
visualEvidence?: VisualEvidence[];
|
|
38
41
|
}
|
|
39
42
|
export interface PageSnapshot {
|
|
40
43
|
url: string;
|
|
@@ -47,17 +50,27 @@ export interface PageSnapshot {
|
|
|
47
50
|
sitemapXml?: PageResource;
|
|
48
51
|
};
|
|
49
52
|
internalLinks?: PageResource[];
|
|
53
|
+
visualEvidence?: VisualEvidence[];
|
|
50
54
|
}
|
|
51
55
|
export interface AuditOptions {
|
|
52
56
|
timeoutMs: number;
|
|
53
57
|
maxRedirects: number;
|
|
54
58
|
checkLinks: boolean;
|
|
55
59
|
maxPages: number;
|
|
60
|
+
profile?: AuditProfile;
|
|
56
61
|
render: boolean;
|
|
57
|
-
|
|
62
|
+
screenshot: boolean;
|
|
63
|
+
screenshotPath?: string;
|
|
64
|
+
screenshotReportPath?: string;
|
|
65
|
+
renderPage?: (url: string, options: Pick<AuditOptions, "timeoutMs" | "screenshot" | "screenshotPath" | "screenshotReportPath">) => Promise<PageSnapshot>;
|
|
58
66
|
}
|
|
59
67
|
export interface PageResource {
|
|
60
68
|
url: string;
|
|
61
69
|
finalUrl: string;
|
|
62
70
|
statusCode: number;
|
|
63
71
|
}
|
|
72
|
+
export interface VisualEvidence {
|
|
73
|
+
label: string;
|
|
74
|
+
path: string;
|
|
75
|
+
screenshotPath?: string;
|
|
76
|
+
}
|