ssrwire 0.3.0 → 0.4.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.
Files changed (46) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/CONTRIBUTING.md +2 -1
  3. package/PUBLISHING.md +15 -15
  4. package/README.md +109 -6
  5. package/dist/audit-report.d.ts +8 -0
  6. package/dist/audit-report.d.ts.map +1 -0
  7. package/dist/audit-report.js +243 -0
  8. package/dist/audit-report.js.map +1 -0
  9. package/dist/audit.d.ts.map +1 -1
  10. package/dist/audit.js +2 -0
  11. package/dist/audit.js.map +1 -1
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +74 -9
  14. package/dist/cli.js.map +1 -1
  15. package/dist/compare.d.ts +6 -0
  16. package/dist/compare.d.ts.map +1 -0
  17. package/dist/compare.js +720 -0
  18. package/dist/compare.js.map +1 -0
  19. package/dist/comparison-reporters.d.ts +9 -0
  20. package/dist/comparison-reporters.d.ts.map +1 -0
  21. package/dist/comparison-reporters.js +223 -0
  22. package/dist/comparison-reporters.js.map +1 -0
  23. package/dist/config.d.ts.map +1 -1
  24. package/dist/config.js +16 -1
  25. package/dist/config.js.map +1 -1
  26. package/dist/index.d.ts +4 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +3 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/redact.d.ts.map +1 -1
  31. package/dist/redact.js +1 -0
  32. package/dist/redact.js.map +1 -1
  33. package/dist/types.d.ts +83 -1
  34. package/dist/types.d.ts.map +1 -1
  35. package/examples/github-actions.yml +2 -2
  36. package/examples/ssrwire.config.yml +4 -2
  37. package/package.json +1 -1
  38. package/src/audit-report.ts +269 -0
  39. package/src/audit.ts +2 -0
  40. package/src/cli.ts +103 -11
  41. package/src/compare.ts +949 -0
  42. package/src/comparison-reporters.ts +276 -0
  43. package/src/config.ts +15 -1
  44. package/src/index.ts +27 -0
  45. package/src/redact.ts +1 -0
  46. package/src/types.ts +97 -1
package/dist/cli.js CHANGED
@@ -1,13 +1,17 @@
1
- import { access, mkdir, writeFile } from "node:fs/promises";
2
- import { dirname, resolve } from "node:path";
1
+ import { access, mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { basename, dirname, resolve } from "node:path";
3
3
  import { Command, CommanderError, InvalidArgumentError } from "commander";
4
4
  import { runAudit } from "./audit.js";
5
+ import { AuditReportError, parseAuditReportText } from "./audit-report.js";
6
+ import { compareAudits } from "./compare.js";
7
+ import { renderComparisonReport } from "./comparison-reporters.js";
5
8
  import { ConfigError, loadConfig } from "./config.js";
6
9
  import { renderReport } from "./reporters.js";
7
10
  import { VERSION } from "./version.js";
8
11
  const CONFIG_TEMPLATE = `# SSRWire configuration
9
12
  targets:
10
- - url: https://example.com/
13
+ - id: home
14
+ url: https://example.com/
11
15
  expectedStatus: 200
12
16
  require:
13
17
  title: true
@@ -55,6 +59,23 @@ function parseFailOn(value) {
55
59
  }
56
60
  throw new InvalidArgumentError("Expected error, warning, or never.");
57
61
  }
62
+ function parseComparisonFormat(value) {
63
+ if (value === "terminal" || value === "json" || value === "html")
64
+ return value;
65
+ throw new InvalidArgumentError("Expected terminal, json, or html.");
66
+ }
67
+ function parseComparisonFailOn(value) {
68
+ if (value === "regression" || value === "never")
69
+ return value;
70
+ throw new InvalidArgumentError("Expected regression or never.");
71
+ }
72
+ function parseNonNegativeNumber(value) {
73
+ const parsed = Number(value);
74
+ if (!Number.isFinite(parsed) || parsed < 0) {
75
+ throw new InvalidArgumentError("Expected a finite non-negative number.");
76
+ }
77
+ return parsed;
78
+ }
58
79
  function addCheckOptions(command) {
59
80
  return command
60
81
  .option("-c, --config <path>", "configuration file")
@@ -92,6 +113,16 @@ async function writeReport(path, report) {
92
113
  await mkdir(dirname(absolute), { recursive: true });
93
114
  await writeFile(absolute, report, "utf8");
94
115
  }
116
+ async function readAuditFile(path, label) {
117
+ let text;
118
+ try {
119
+ text = await readFile(resolve(path), "utf8");
120
+ }
121
+ catch {
122
+ throw new AuditReportError(`Could not read ${label} audit report: ${path}`);
123
+ }
124
+ return parseAuditReportText(text, `${label} audit report`);
125
+ }
95
126
  async function check(urls, options) {
96
127
  const config = await loadConfig({
97
128
  ...(options.config ? { configPath: options.config } : {}),
@@ -118,6 +149,31 @@ async function check(urls, options) {
118
149
  }
119
150
  process.exitCode = reportExitCode(audit.summary, options.failOn);
120
151
  }
152
+ async function compareReports(baselinePath, candidatePath, options) {
153
+ const [baseline, candidate] = await Promise.all([
154
+ readAuditFile(baselinePath, "baseline"),
155
+ readAuditFile(candidatePath, "candidate"),
156
+ ]);
157
+ const comparison = compareAudits(baseline, candidate, {
158
+ baselineLabel: basename(baselinePath),
159
+ candidateLabel: basename(candidatePath),
160
+ timingRegressionMs: options.timingRegressionMs,
161
+ timingRegressionPercent: options.timingRegressionPercent,
162
+ });
163
+ const color = options.color &&
164
+ !options.output &&
165
+ Boolean(process.stdout.isTTY) &&
166
+ !Reflect.has(process.env, "NO_COLOR");
167
+ const report = renderComparisonReport(comparison, options.format, { color });
168
+ if (options.output) {
169
+ await writeReport(options.output, report);
170
+ process.stderr.write(`SSRWire wrote ${options.format} comparison to ${options.output}\n`);
171
+ }
172
+ else {
173
+ process.stdout.write(report);
174
+ }
175
+ process.exitCode = options.failOn === "regression" && comparison.summary.regressions > 0 ? 1 : 0;
176
+ }
121
177
  async function initialize(path, force) {
122
178
  const absolute = resolve(path);
123
179
  if (!force) {
@@ -143,17 +199,26 @@ export async function main(argv = process.argv) {
143
199
  .version(VERSION)
144
200
  .exitOverride()
145
201
  .showHelpAfterError();
146
- addCheckOptions(program)
147
- .argument("[urls...]", "HTTP or HTTPS URLs to inspect")
148
- .action(async (urls, _options, command) => {
149
- await check(urls, optionsFrom(command));
150
- });
151
202
  addCheckOptions(program
152
- .command("check")
203
+ .command("check", { isDefault: true })
153
204
  .description("inspect one or more SSR responses")
154
205
  .argument("[urls...]", "HTTP or HTTPS URLs to inspect")).action(async (urls, _options, command) => {
155
206
  await check(urls, optionsFrom(command));
156
207
  });
208
+ program
209
+ .command("compare")
210
+ .description("compare two SSRWire JSON audit reports")
211
+ .argument("<baseline>", "baseline JSON audit report")
212
+ .argument("<candidate>", "candidate JSON audit report")
213
+ .option("-f, --format <format>", "terminal, json, or html", parseComparisonFormat, "terminal")
214
+ .option("-o, --output <path>", "write the comparison to a file")
215
+ .option("--fail-on <level>", "regression or never", parseComparisonFailOn, "regression")
216
+ .option("--timing-regression-ms <ms>", "minimum absolute median slowdown", parseNonNegativeNumber, 250)
217
+ .option("--timing-regression-percent <percent>", "minimum relative median slowdown", parseNonNegativeNumber, 25)
218
+ .option("--no-color", "disable terminal colors")
219
+ .action(async (baselinePath, candidatePath, options) => {
220
+ await compareReports(baselinePath, candidatePath, options);
221
+ });
157
222
  program
158
223
  .command("init")
159
224
  .description("create a documented starter configuration")
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AuditComparison, AuditResult, CompareAuditOptions } from "./types.js";
2
+ export declare class ComparisonError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ export declare function compareAudits(baseline: AuditResult, candidate: AuditResult, options?: CompareAuditOptions): AuditComparison;
6
+ //# sourceMappingURL=compare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../src/compare.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EAEX,mBAAmB,EAcpB,MAAM,YAAY,CAAC;AAsEpB,qBAAa,eAAgB,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAInC;AAwtBD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,mBAAwB,GAChC,eAAe,CAkHjB"}